2 Postup při programování, úvod do programovacího jazyka Java



Podobné dokumenty
Předměty. Algoritmizace a programování Seminář z programování. Verze pro akademický rok 2012/2013. Verze pro akademický rok 2012/2013

11. Přehled prog. jazyků

8 Třídy, objekty, metody, předávání argumentů metod

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

10 Balíčky, grafické znázornění tříd, základy zapozdření

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

6 Příkazy řízení toku

Úvod. Únor Fakulta informačních technologií VUT. Radek Kočí Seminář Java Úvod 1/ 23

3. Základy programovacího jazyka Java

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Úvod Seznámení s předmětem Co je.net Vlastnosti.NET Konec. Programování v C# Úvodní slovo 1 / 25

IB111 Programování a algoritmizace. Programovací jazyky

Výukový materiál zpracován v rámci projektu EU peníze školám

Vlastnosti algoritmu. elementárnost. determinovanost. rezultativnost. konečnost. hromadnost. efektivnost

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

Vývojové nástroje jazyka Java

Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám.

Matematika v programovacích

5 Přehled operátorů, příkazy, přetypování

Algoritmy a algoritmizace

Java [džava] nebo [džáva] v americkém slangu "kafe" Sun Microsystems nyní Oracle

Algoritmizace. 1. Úvod. Algoritmus

11 Diagram tříd, asociace, dědičnost, abstraktní třídy

1 Strukturované programování

Algoritmizace. Obrázek 1: Přeložení programu překladačem

Úvod. Programovací paradigmata

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

První kroky s METEL IEC IDE

Program a životní cyklus programu

VIRTUALIZACE POČÍTAČE HISTORIE A VÝVOJ

1. Programování proti rozhraní

Aplikace je program určený pro uživatele. Aplikaci je možné rozdělit na části:

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

TÉMATICKÝ OKRUH Softwarové inženýrství

Vzdělávací oblast: Informatika a informační a komunikační technologie Vzdělávací obor: Programování. Předmět: Programování

Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace

IB111 Úvod do programování skrze Python Přednáška 13

ŠVP Gymnázium Ostrava-Zábřeh Úvod do programování

Semestrální práce KIV/PC

Algoritmizace- úvod. Ing. Tomáš Otáhal

Programování v C++ Úplnej úvod. Peta (maj@arcig.cz, SPR AG )

Vyřešené teoretické otázky do OOP ( )

Úvod. Leden Fakulta informačních technologií VUT. Radek Kočí Seminář Java Úvod 1/ 22

4a. Makra Visual Basic pro Microsoft Excel Cyklické odkazy a iterace Makra funkce a metody

Úvod do programování v jazyce Java

ALGORITMIZACE A PROGRAMOVÁNÍ

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina

Vlákno (anglicky: thread) v informatice označuje vlákno výpočtu neboli samostatný výpočetní tok, tedy posloupnost po sobě jdoucích operací.

Algoritmizace. Cíle předmětu

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Obsah. Zpracoval:

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

Algoritmizace řazení Bubble Sort

Hodnoticí standard. Programátor (kód: M) Odborná způsobilost. Platnost standardu. Skupina oborů: Informatické obory (kód: 18)

1 Základních pojmy z oblasti programování, vyšší programovací jazyky, programovací paradigmata

Seznámení s prostředím dot.net Framework

ČÁST 1. Základy 32bitového programování ve Windows

Úvod do programování

3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda

Vzdělávací oblast: Informatika a informační a komunikační technologie Vzdělávací obor: Programování Předmět: Programování

Název předmětu: Školní rok: Forma studia: Studijní obory: Ročník: Semestr: Typ předmětu: Rozsah a zakončení předmětu:

1 Uživatelská dokumentace

MATLABLINK - VZDÁLENÉ OVLÁDÁNÍ A MONITOROVÁNÍ TECHNOLOGICKÝCH PROCESŮ

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/

Překladač a jeho struktura

ANOTACE vytvořených/inovovaných materiálů

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Lekce 01 Úvod do algoritmizace

Maturitní témata. IKT, školní rok 2017/18. 1 Struktura osobního počítače. 2 Operační systém. 3 Uživatelský software.

Ročníkový projekt. Jaroslav Žáček

2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena.

Základy programování (C#) Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1134_Základy programování (C#) _PWP

Architektura rodiny operačních systémů Windows NT Mgr. Josef Horálek

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

1 Návod na instalaci prostředí LeJOS-NXJ a přehrání firmwaru NXT kostky

3 Vývojová prostředí, základní prvky jazyka Java, konvence jazyka Java

Real Time programování v LabView. Ing. Martin Bušek, Ph.D.

Studijní zdroje. Studijní zdroje. Studijní zdroje. Podmínky ukončení předmětu. Vlastnosti a použití jazyka Java. Semestrální projekt

Algoritmizace a programování

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání

PROGRAMOVÁNÍ V JAZYCE C V PŘÍKLADECH 11 Dynamické datové struktury 11.1 Spojové struktury Příklad PROG_

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Programování 1 - Java

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY

Při studiu tohoto bloku se předpokládá, že student je zvládá základy programování v jazyce Java s využitím vývojového prostředí NetBeans.

PROGRAMOVÁNÍ PRO MS WINDOWS 2

Obsah. Kapitola 1 Hardware, procesory a vlákna Prohlídka útrob počítače...20 Motivace pro vícejádrové procesory...21

Vzdálená správa v cloudu až pro 250 počítačů

1 Úvod 1.1 Vlastnosti programového vybavení (SW)

Řízení reálných projektů, agilní metodiky

Programovací jazyky Přehled a vývoj

Identifikátor materiálu: ICT-4-01

Java/QE Akademie - Osnova

Transkript:

2 Postup při programování, úvod do programovacího jazyka Java Studijní cíl V tomto bloku bude věnována pozornost správnému postupu při programování, budou detailně vysvětleny jednotlivé etapy programování a podíváme se také na základy vyššího programovacího jazyka Java. Doba nutná k nastudování 2 2,5 hodiny 2.1 Postup při programování Při programování, stejně jako při jakékoliv jiné odborné činnosti, je vhodné dodržovat standardizované postupy. Stejně jako např. při stavbě domu, kdy je nejprve vypracován návrh, potom projekt a teprve potom následuje samotný proces jeho výstavby, tak i v oblasti vývoje počítačových programů existuje několik metodik, kterými je vhodné se řídit. Vysvětlování jakékoliv komplexní metodiky vývoje softwaru (např. Unified Process nebo Agile Unified Process - agilní metodiky vývoje software) by bylo nad rámec tohoto výukového materiálu (s touto problematikou se seznámíte v jiných specializovaných předmětech během dalšího studia), proto si uvedeme pouze stručně jeden z možných postupů při programování a zaměříme se na podrobný popis každé etapy. Dále uvedený postup při programování je opravdu nutné brát pouze jako jeden z možných, který ale budeme uplatňovat v tomto kurzu základů programování. V jiných kurzech programování nebo v navazujících předmětech se můžete a nejspíše se i setkáte s jiným postupem při programování, který může mít oproti zde uvedenému postupu celou řadu výhod (např. programování řízené testy). Tento kurz je určen začátečníkům v oblasti programování, proto je zde představen asi nejjednodušší koncept přístupu k programování. Nyní již tedy k základním osmi etapám, na které budeme rozkládat zadání úloh, které budeme mít za cíl vyřešit. Nejdříve si jednotlivé etapy představíme v obecné rovině a v průběhu dalšího výkladu se dostaneme také k příkladům. 1. Formulace úlohy prvním krokem při řešení jakékoliv úlohy je formulace úlohy. Pokud přijde nějaký zákazník s tím, že by si chtěl nechat naprogramovat nějaký konkrétní produkt, tak je nejprve nutné daný produkt formulovat pro pochopení toho, co máme programovat a proč. Součástí této etapy jsou následující úkoly: a. Stanovují se cíle řešení jaké funkce má daný program obsahovat jedná se opravdu o základní úkol, aby nedošlo k tomu, KST/IZAPR - Základy programování blok 2, strana 1 (9) Michael Bažant

že výsledný program bude dělat něco jiného, než co požaduje zákazník. b. Požadavky na přesnost definujeme, jaké má uvažovat program vstupy, s jakou přesností má docházet ke zpracování dat, jaké má program poskytovat výstupy apod. c. Podklady pro řešení zjištění, zda máme pro řešení úlohy vůbec dostupné všechny potřebné podklady, zda vůbec máme s dostupnými podklady možnost danou úlohu řešit. 2. Analýza úlohy v této etapě se vytváří první představy o řešení. V rámci této etapy je nutné si odpovědět na následující otázky: a. Je úloha řešitelná? V dnešní době výkonných počítačů by se mohlo zdát, že jsou všechny úlohy řešitelné, ale z hlediska definovaných požadavků zákazníkem tomu tak být nemusí. Pokud by zákazník chtěl například realizovat nějaké složité výpočty v reálném čase, tak se může stát, že tento požadavek nebude možné splnit (spousta problémů není v reálném čase řešitelná). b. Jsou výchozí informace postačující? Po vytvoření představy o řešení dané úlohy je nutné zvážit, zda jsou dostupné informace o úloze postačující. 3. Návrh řešení tato etapa již obsahuje konkrétní návrh toho, jak daný problém řešit s tím, že je výhodné nejprve jeden větší problém rozložit na více problémů menších a teprve poté volit metody řešení menších problémů. V tomto kroku se ale stále jedná o návrh, nikoliv samotné řešení, které bude následovat. a. Rozklad na podproblémy (třídy, metody, procedury, funkce apod.) b. Návrh metod řešení (např. třídění quicksort, bubblesort apod.) 4. Sestavení algoritmu řešení když máme z předchozí etapy jasno v tom, jaký způsob řešení zvolíme, tak v této etapě daný způsob řešení zapíšeme. Samozřejmě není nutné (a obvykle to ani není vhodné) ihned psát samotný zdrojový kód programu. Je možné využít celou řadu jiných technik, které jsou k dispozici a které již znáte z předchozího studia (např. vývojové diagramy). a. Návrh vhodných datových struktur b. Zápis algoritmu c. Vývojový diagram d. Programovací jazyk v kombinaci s přirozeným jazykem (pseudojazyk) KST/IZAPR - Základy programování blok 2, strana 2 (9) Michael Bažant

5. Kódování programu zápis zdrojového kódu v programovacím jazyku. Pokud máme sestaveny algoritmy řešení programu, tak již nic nebrání zapsání zdrojového kódu ve vybraném programovacím jazyku 6. Odladění v této etapě je nutné podrobit námi zapsaný program zkoušení (verifikaci) zda pro dané vstupy poskytuje správné výstupy, přičemž můžeme využít několik možných přístupů: a. Zkoušení programu, případně testování se základy testování se seznámíte v následujícím předmětu Objektově orientované programování. V tomto kurzu budeme používat zkoušení programu. b. Porovnání výsledků c. Ověření správnosti programu 7. Optimalizace nastává v momentě, kdy program poskytuje správné výsledky a v této etapě nemá cenu optimalizovat na úrovni počtu cyklů v daném algoritmu nebo počtu proměnných apod. Tyto základní optimalizace zvládne rozumný překladač sám, spíše jde o záležitosti týkající se volby datových typů a datových struktur, které mohou vést k významným zrychlením běhu programu, zrychlení výpočtů, snížení paměťové náročnosti apod. Nutno podotknout, že zkušenější programátoři již tyto optimalizace zvažují a zapracovávají v bodě 3 návrh řešení. Závěrem k této problematice je nutné poukázat na to, že je výhodné ve všech etapách (i v etapách 1 4) programování zvažovat testovací data tzn. mít přehled o tom, jak se daný návrh projeví na těchto testovacích datech. V další části tohoto kurzu bude naše pozornost zaměřena zejména na etapy 5 a 6 uvedeného postupu, neboť předchozí kroky jste již poměrně podrobně prošli v předchozím kurzu základů algoritmizace. Tam, kde bychom se věnovali úlohám složitějšího charakteru (než jaké byly řešeny v kurzu základy algoritmizace), budou diskutovány i etapy předchozí 1-4. 2.2 Úvod do programovacího jazyka Java Po úvodních obecnějších informacích, které jsou ale nezbytné pro základní orientaci v oblasti programování, se může naše pozornost zaměřit na vyšší programovací jazyk Java. V tomto úvodu si uvedeme základní informace o tomto jazyku a v dalších blocích budeme rozvíjet znalosti tohoto jazyka o další konstrukce. 2.2.1 Proč jazyk Java? Při návrhu jazyka Java byl důraz kladen na odstranění složitostí, které obsahují jiné vyšší programovací jazyky, a proto se jazyk Java stal velmi populárním při výuce základů programování. Kromě této příjemné vlastnosti má ale celou řadu dalších příznivých vlastností jako jsou: KST/IZAPR - Základy programování blok 2, strana 3 (9) Michael Bažant

Univerzálnost je možné psát programy pro serverové aplikace, desktopové aplikace, aplikace pro přenosná zařízení (mobilní telefony, PDA), webové aplikace, aplety. Nejedná se o zkratku, ale slovo. Proto píšeme Java, nikoliv JAVA. Java Virtual Machine (JVM) programy nejsou kompilovány přímo do strojového kódu ale do bytecode (mezikódu), který je spouštěn na virtuálním stroji jazyka Java. Díky použití této technologie je možné využívat příjemné vlastnosti jako je Garbage Collection (automatické rušení objektů v paměti pokud na ně není k dispozici reference) a také některé vlastnosti z bezpečnosti. K detailům těchto vlastností se dostaneme v dalším výkladu. 2.2.2 Stručná historie jazyka Java Projekt na vývoj dnešního jazyka Java založil James Gosling v roce 1991. Původní název projektu Oak (dub) podle stromu před kanceláří, tento název byl již používán jiným programovacím jazykem. Z toho důvodu byl vybrán název Java z několika náhodných slov. V roce 1995 byl uveden jazyk Java ve verzi 1.0 s tím, že heslo při uvedení znělo Napiš jednou, spusť kdekoliv. Poté následovaly další verze jazyka: JDK 1.02 1995 JDK 1.1 1996 JDK 1.2 1998 JDK 1.3 2000 JDK 1.4 2002 JDK 1.5 (Java 5) 2004 JDK 1.6 (Java 6) 2006 JDK 1.7 (Java 7) 2011 2.2.3 Vlastnosti jazyka Java Jazyk Java, stejně jako i jiné vyšší programovací jazyky, disponuje celou řadou vlastností. Z důvodu obsažnosti tématu se omezíme pouze na stručný výklad základních vlastností jazyka, zájemce o bližší informace může nahlédnout např. do zdroje [1]. Mimo jiné je jazyk Java: Objektově orientovaný jazyk Java je již od začátku vyvíjen jako objektově orientovaný jazyk (komunikace mezi objekty viz Obrázek 1). Nikoliv tedy jako jiné jazyky, ke kterým byla objektově orientovaná funk- KST/IZAPR - Základy programování blok 2, strana 4 (9) Michael Bažant

cionalita doplňována až v průběhu vývoje. Jazyk Java je objektově orientovaný až na 8 primitivních datových typů. Obrázek 1: Princip objektově orientovaného programování Distribuovaný - jazyk Java je navržen pro podporu aplikací v síti - podporuje různé úrovně síťového spojení, práce se vzdálenými soubory, umožňuje vytvářet distribuované klientské aplikace a servery. Jazyk je navržen tak, aby bylo možné distribuované výpočty realizovat snadno. Přístup k síťovým prostředkům je v zásadě stejný jako k lokálním souborům. Snadný - syntaxe jazyka je navržena na základě C++, přičemž cílem bylo jazyk významně zjednodušit oproti C++ a dosáhnout více funkčnosti než je v jazyce C++ a méně negativních aspektů pro začátečníky. Např. odpadá práce s ukazateli, používají se reference (odkazy na objekty v paměti), je k dispozici automatická správa paměti, dochází k automatické uvolňování paměti během života programu, datový typ boolean nabývá jen hodnot true nebo false Vícevláknový - nativně je možné využívat vícevláknový přístup (multithread) při psaní aplikací. Bezpečný - do jazyka je implementováno několik bezpečnostních mechanismů, kterých bylo dosaženo implementací Java Runtime Environment (JRE), které: o o o spouští zkompilovaný kód vykonává načítání tříd (class loader) oddělení jmen tříd lokálního systému souborů od importovaných ze sítě, určování oblastí pamětí spouštěného programu až po nahrání všech tříd do paměti atd. Vykonává verifikaci kódu (bytecode verifier) a finální spouštění testování a kontrola fragmentů kódu na ilegální kód (mohl by porušit přístupová práva) KST/IZAPR - Základy programování blok 2, strana 5 (9) Michael Bažant

Nezávislý na platformě není nutné kompilovat zdrojový kód pro konkrétní platformu jako v případě jiných jazyků - viz Obrázek 2 jako příklad pro jazyk C. Obrázek 2: Kompilace a spuštění programu napsaného v jazyce C na různých platformách Způsob kompilace a spuštění programu napsaného v jazyce Java viz Obrázek 3. U tohoto obrázku je nutné vysvětlení některých pojmů, jako např. bytecode, což je speciální strojový jazyk, které umí interpretovat Java Virtual Machine. Programy v jazyce Java jsou tedy spouštěny nebo chcete-li interpretovány programem, jehož název zní Java Virtual Machine. Program napsaný v jazyce Java tedy není spouštěn přímo na operačním systému, ale je spouštěn prostřednictvím Java Virtual Machine. To má tu výhodu, že jakýkoliv systém, na kterém je nainstalovaný Java Virtual Machine může spouštět programy napsané v jazyce Java nezávisle na tom, na kterém systému byly programy vyvíjeny. Bytecode je tedy speciální strojový jazyk, který je interpretován pomocí Java Virtual Machine, je nezávislý na hardware a každý počítač s Java interpretem může spustit zkompilovaný program napsaný v jazyce Java. Java Virtual Machine (JVM) je virtuální stroj, který poskytuje specifikace hardwaru, pro který se kompilují všechny programy v jazyce Java. JVM je odhadem nainstalován na více než 4 500 000 000 stanic po celém světě (údaj k roku 2009). KST/IZAPR - Základy programování blok 2, strana 6 (9) Michael Bažant

Obrázek 3: Kompilace a spuštění programu napsaného v jazyce Java na různých platformách Pro vývoj aplikací v jazyce Java je nutné mít k dispozici JDK (Java Development Kit), který obsahuje: JRE Java runtime environment (java) Java Virtual Machine závislý na platformě, obsahuje Java knihovny (class libraries) závislé na platformě Java compiler (javac) Java API (Application Programming Interface) dokumentace (Java- Doc) Doplňkové utility (pro vytváření souborů JAR, ladění programů atd.) - např. JConsole ve složce bin (sledování paměti a vláken) Příklady programů 2.2.4 Výhody a nevýhody jazyka Java Jazyk Java má, stejně jako i jiné jazyky, celou řadu výhod a také celou řadu nevýhod. Mezi hlavní výhody patří vlastnosti uvedené v předchozí kapitole. Mezi nevýhody můžeme zařadit následující vlastnosti: paměťové nároky, vyžaduje interpret, kombinuje primitivní datové typy a objekty, programy napsané v jazyce Java mohou být při běhu pomalejší než v jiných jazycích. KST/IZAPR - Základy programování blok 2, strana 7 (9) Michael Bažant

2.2.5 Jazyk Java kompilace a spuštění programu Kompilaci zdrojového kódu zapsaného v jazyce Java provádíme pomocí Java kompilátoru (Java compiler), který je součástí nástrojů obsažených v JDK. Java compiler provádí kompilaci zdrojového kódu na bytecode. Pro spuštění dále používaných příkazů je nutné mít nainstalované JDK a případně mít také v operačním systému nastavenou cestu k těmto příkazům. Příkaz pro kompilaci je následující: javac [nastaveni] [soubory se zdroj. kodem] Příklad: javac HelloWorld.java Výsledkem kompilace je bytecode uložený v souboru se stejným názvem (ve stejné složce) Příklad: HelloWorld.class Pomocí různých parametrů je možné měnit nastavení kompilace, následující nastavení -d provede uložení výsledného souboru do složky classes. Příklad nastavení: javac d classes HelloWorld.java Pro spuštění programu napsaného v jazyce Java používáme příkaz java [- nastaveni] class [argumenty] Příklad: java HelloWorld Postup při kompilaci a spuštění programu z příkazové řádky je uveden na obrázku (viz Obrázek 1). Obrázek 4: Postup při kompilaci a spuštění programu v příkazovém řádku Závěrem této kapitoly bych upozornil na rozdíl při zadávání souborů jako parametrů při kompilaci a spouštění, který je zřejmý z přechozích příkladů. Při kompilaci zadáváme celá název soubor i s příponou názvu souboru.java, při spuštění bez přípony názvu souboru.class. KST/IZAPR - Základy programování blok 2, strana 8 (9) Michael Bažant

Otázky na procvičení 1. Jaké základní kroky si představíte pod pojmem programování? 2. Co může představovat optimalizace programu? 3. Které činnosti se vykonávají během návrhu řešení programu? 4. Co rozumíme pod zkratkou JVM? 5. Co rozumíme pod zkratkou JRE? Odkazy a další studijní prameny 1. Java Tutorial - http://docs.oracle.com/javase/tutorial/ KST/IZAPR - Základy programování blok 2, strana 9 (9) Michael Bažant