380 likes | 584 Views
A0B36PRI - PROGRAMOVÁN Í. Programování - úvod Jazyk JAVA. České vysoké učení technické Fakulta elektrotechnická. v1.02. Vítejte , představme se … . Jste STUDENTI ČVUT FEL! Jste členy akademické obce! Děkan, senát, vědecká rada Zaměstnanci (tituly …), doktorandi Katedry. P řednáší
E N D
A0B36PRI - PROGRAMOVÁNÍ Programování - úvod Jazyk JAVA České vysoké učení technické Fakulta elektrotechnická v1.02
Vítejte, představme se … • Jste STUDENTI ČVUT FEL! • Jste členy akademické obce! • Děkan, senát, vědecká rada • Zaměstnanci (tituly …), doktorandi • Katedry Přednáší Ing. Jiří Zdeněk, CSc. Doc. Ing. Ivan Jelínek, CSc. Studenti 1. ročníku programu KME a EEM Cvičící:…. A0B36PRI ÚVOD 01
Kdo je kdo v Programování I • Vy – studenti • Různé zkušenosti s různými programovacími jazyky • Přednášející: • Ing. Jiří Zdeněk, CSc., • Doc.Ing. Jelínek Ivan CSc. • Nejdůležitější učitelé: cvičící!! • Ing. R. Havlíček, PhD., ved. Cvičení • Ing. M. Chomát, CSc. • Ing. S. Flígl, PhD. • Ing. I. Beshajová-Pelikánová • Ing. J. Kučerák • Ing. K. Dušek • Ing. M. Mudroch • Ing. M. Filipský 4. Garant: Doc.Ing. Jelínek Ivan CSc. Proč asi ?? A0B36PRI ÚVOD 01
Cíl předmětu • Cíl předmětu: Cílem předmětu je naučit studenty sestavovat základní programy v jazyku Java. • Jádrem jsou datové typy, výrazy, funkce, pole, základní programovací techniky v jazyce Java • Součástí výkladu jsou základy algoritmizace,netriviálních datových struktur a úvod do objektového přístupu • V závěru je seznámení s principy jazyka C. • Poznámkt: • Znalosti studentů z oblasti programování na začátku předmětu jsou nevyrovnané - nudící se vs. nestíhající studenti • Výsledky předmětu, statistika!!!!!!!!!! • Organizace předmětu: • Přednášky (účast nepovinná, ale velmi (!) doporučená) • Cvičení: …. • Samostatná práce: studium, domácí úkoly, semestrální práce A0B36PRI ÚVOD 01
Hodnocení a zkouška Minimální počet bodů pro zápočet je 40 bodů Body ze cvičení, maximálně 70. 60 a více bodů → možnost A, B, C podle prémiového testu Možnost nechat si zapsat známku nebo jít k ústní zkoušce – odečte se 10 bodů Zakončení předmětu: zápočet, zkouška (na základě bodového hodnocení) A0B36PRI ÚVOD 01
Témata přednášek • Algoritmy, programy, programovací jazyky, jazyk Java • Řízení běhu programu - řídicí struktury • Proměnné, operátory, výrazy, representace čísel v počítači • Funkce a procedury, role proměnných • Předávání parametrů, soubory I (jednoduché typy) • Rozklad problému na podproblémy – procedurální programování, rekurze • Strukturované datové typy – pole, referenční proměnná • Vícerozměrná pole, string, pole jako parametr • Algoritmy vyhledávání a řazení, složitost algoritmů I • Složitost algoritmů II • Principy objektově orientovaného programování • SouboryII • Úvod do jazyka C • Rezerva A0B36PRI ÚVOD 01
Témata cvičení • Seznámení s počítačovou učebnou a službami fakultní počítačové sítě • Seznámení s vývojovým prostředím (IDE) NetBeans, první program v Javě • Proměnné, operátory, výrazy, přiřazení, vstup a výstup • Větvení, podmíněný příkaz, programový přepínač (switch) • Cykly • Procedury a funkce I+ zadání semestrální práce • Procedury a funkce II, předávání parametrů funkcím, rozklad problému na podproblémy, procedurální programování • Strukturované datové typy I – pole, string • Strukturované datové typy II – vícerozměrná pole, matice pole jako parametr • Algoritmy řazení a třídění I • Algoritmy řazení a třídění II • OOP • Obhajoba semestrální práce, test, zápočet • Rezerva A0B36PRI ÚVOD 01
Struktura cvičení Systém dvoutýdenních bloků: 1. týden bloku • diskuse nad domácí úlohou z minulého bloku, vyvolávání, hodnocení, oznámení bodů • zadání domácího úkolu nad tématem 1a a 2a, krátký výklad obou témat • procvičování obou témat na vzorových příkladech 2. týden bloku • konzultace nad domácí úlohou z 1. týdne bloku • konzultace nad oběma tématy z minulého bloku, případně vysvětlující příklady A0B36PRI ÚVOD 01
Zdroje informací a nástroje pro studium • Vývojové prostředky: IDE – NetBeans • http://www.netbeans.org • Stáhnout zdarma a nainstalovat, viz cvičení • Podklady k přednáškám a cvičením: • Presentace předmětu A0B36PRI „Programování“ • https://edux.feld.cvut.cz/courses/A0B36PRI/ • Doporučená literatura Pro programovací jazyk JAVA • Herout, P.: Učebnice jazyka Java, Kopp, Č.Budějovice, 2010. ISBN: 978-80-7232-398-2 Pro programovací jazyk „C“ • Herout, P.: Učebnice jazyka C. III. vyd. Kopp, Č.Budějovice, 1998. ISBN: 80-85824-21-9 A0B36PRI ÚVOD 01
Další literatura (výběr) Pro programovací jazyk JAVA • Zakhour, S: Java 6, výukový kurz, CPress, Brno, 2007, ISBN 978-80-251-1575-6 • Virius, M.: JAVA pro zelenáče. Neocortex, Praha, 2001. ISBN: 80-902230-9-5 • Keogh, J.: JAVA bez předchozích znalostí. Computer Press, Brno, 2005. ISBN: 80-251-0839-2 • Herout, P.: JAVA - grafické uživatelské prostředí a čeština, Kopp, Č.Budějovice, 2001. ISBN: 80-7232-150-1 • Eckel, B.: Myslíme v jazyku Java – knihovna programátora, Grada, Praha 2000. ISBN: 80-247-9010-6 • Eckel, B.: Myslíme v jazyku Java – knihovna zkušeného programátora, Grada, Praha 2000. ISBN: 80-247-0027-1 Pro programovací jazyk „C“ • Kernighan, B.W.-Ritchie, D.M.: Programovací jazyk C. Computer Press, Brno, 2006. ISBN: 80-251-0897-X • Herout, P.: Učebnice jazyka C – 2 díl, Kopp, Č.Budějovice, 2002. ISBN: 80-85828-50-2 A0B36PRI ÚVOD 01
Právě začínáme!! A0B36PRI ÚVOD 01
Šest zákonů programování • V každém programu je alespoň jedna chyba • Každý program lze zkrátit alespoň o jeden řádek • Nejjednodušší chyby se nejhůře hledají • Každou opravou se do programu zanese nová chyba • Když už se zdá, že program je v pořádku, určitě jste něco přehlédli • Programátor dělá to co umí, počítač si dělá, co chce A0B36PRI ÚVOD 01
Proces programování A0B36PRI „PROGRAMOVÁNÍ“ 02
Programy a programovací jazyky • Program je předpis (zápis algoritmu) pro provedení určitých akcí počítačem zapsaný v programovacím jazyku • Programovací jazyky • strojově orientované • strojový jazyk = jazyk fyzického procesoru • asembler (jazyk symbolických adres) • vyšší jazyky • imperativní (příkazové, procedurální) • neimperativní (např. funkcionální) • Hlavní rysy imperativních jazyků (např. C, C++, Java, Pascal, Basic, ...) • zpracovávané údaje mají formu datových objektů různých typů, které jsou v programu reprezentovány pomocí proměnných resp. konstant • program obsahuje deklarace a příkazy • deklarace definují význam jmen (identifikátorů) • příkazy předepisují akce s datovými objekty nebo způsob řízení výpočtu A0B36PR1 - ÚVOD 01
Základní přístupy k programování • Strojový, naivní přístup • Strojový kód, asembler, skripty,C • Procedurální přístup • C, Java, … • Objektový přístup • Java, C++, C#,… A0B36PR1 - ÚVOD 01
Naivní přístup v Javě Class{..} main{ xxxxx; xxxxx; } A0B36PR1 - ÚVOD 01
Procedurální přístup v Javě main{ metoda; metoda; … } Class{..} metoda{ xxxxx; xxxxx; } metoda{ xxxxx; xxxxx; } metoda{ xxxxx; xxxxx; } metoda{ xxxxx; xxxxx; } statické metody A0B36PR1 - ÚVOD 01
JAVA – procedurální přístup public class Dekrementace { }// doc public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n; System.out.println("Zadej počet "); n = sc.nextInt(); while (n > 0) { System.out.println("Vypis " + n); n = zmensi(n); } } static int zmensi(int n) { n=n-1; return n; }
Objektový přístup v Javě instanční metody A0B36PR1 - ÚVOD 01
JAVA – objektový přístup public class CitacTest{ public static void main(String[] args) { Citac citac = new Citac(0); Menu menu = new Menu(); do { citac.zobraz("Hodnota = "+citac.hodnota()); switch (menu.vyber()) { case 1: citac.zvetsit(); break; case 2: citac.zmensit(); break; case 3: citac.nastavit(); break; } } while (menu.volba()!=0); citac.exit("Konec"); } } class Citac{ } class Menu{ }
Implementace programovacích jazyků • Interpretační metoda: překlad interpretace Zjednoušeně! A0B36PR1 - ÚVOD 01
Implementace programovacích jazyků • Kompilační metoda: překlad Cílový kód spuštění Zjednoušeně! A0B36PR1 - ÚVOD 01
Kompilační metoda - jazyk C, C++ Program pro MS Windows OS MS Windows Překlad v MS Windows OS GNU Linux Zdrojový kód v jazyku C Program pro GNU Linux Překlad v GNU Linuxu Překlad v Solarisu OS Solaris Program pro Solaris A0B36PR1 - ÚVOD 01
JRE JRE JRE Interpretační metoda - jazyk Java Zdrojový kód v jazyku Java soubor .java OS MS Windows Překlad (javac) OS GNU Linux Bytecode soubor .class OS Solaris A0B36PR1 - ÚVOD 01
IDE – vývojový nástroj - NetBeans • Pro vývoj programů se používá vývojový nástroj nazývaný IDE (Integrated Development Environment) • IDE je v dnešní době k dispozici pro všechny běžné používané programovací jazyky, často od různých výrobců software • V předmětu A0B36PR1 + 2 budeme pro vývoj programů v Javě používat IDE NetBeans • IDE NetBeans je možné zdarma stáhnout na webu a nainstalovat na platformě Windows nebo Unix (viz http://www.netbeans.org) • NetBeans obsahují (nebo využívají) všechny nezbytné části pro vývoj programu v Javě (textový editor, kompilátor, ladící prostředky a další části) • S používáním NetBeans se seznámíte na cvičeních • Jiná prostředí • Eclipse - opensource - zdarma, fa IBM • IDEA - komerční (30tidenní zkušební verze zdarma) • JBuilder - základní verze zdarma pro nekomerční využití, fa Borland • JDeveloper - vývojové prostředí firmy Oracle, freeware • BlueJ – bylo volně šiřitelné multiplatformní vývojové prostředí A0B36PR1 - ÚVOD 01
NetBeans A0B36PR1 - ÚVOD 01
Java Platforma (JRE) = Java Core API + JVM Software Hardware Překlad Interpretace Disk Aplikační prostředí – knihovny interpret prostředí Zdrojový kód, .java Kompilátor Interpret API JVM Byte code, .class Počítač – HW, výpočet hardwarová vrstva Disk Pozn: zjednodušeno 27 A0B36PR1 - 02
Vývoj programů v Javě JRE - běhové prostředí, JRE = JVM +API pro běh programů JVM – Java Virtual Machine – virtuální stroj API – Application Programming Interface - knihovny JDK - Software Development Kit pro Javu sada základních nástrojů pro vývoj programů v Javě JRE, překladač javac, debugger, javadoc, nástroje pro vytváření jar archivů, mnohé další ke stažení na http://java.sun.com 28 A0B36PR1 - 02
Jazyk JAVA - interpretace • Jazyk Java je implementován interpretačním způsobem • program je tvořen jedním nebo několika zdrojovými soubory s příponou .java: Program.java • zdrojové soubory se přeloží překladačem(*)javac do vnitřní formy (byte code, bajt-kód) s příponou .class: Program.java > javac > Program.class • interpretacivnitřní formy provede programjava (JVM – Java Virtual Machine v balíčku JRE Java Runtime Environment) a provede výpočet: Program.class > java> „výpočet” Poznámky: (*)v terminologii firmy Sun to je kompilátor • program obvykle využívá řadu knihoven (Java Core API), které je třeba mít kdispozici jak při překladu, tak při interpretaci!!! A0B36PR1 - ÚVOD 01
Proč jazyk Java? jde o vyšší, obecně použitelný programovací jazyk s vysokým stupněm zabezpečení je objektově orientovaný, umožňuje však i klasické procedurální programování vytvořené programy jsou zcela portabilní (program vytvořený pod MS Windows bez problémů funguje pod Unixem a naopak) syntaxe výrazů a příkazů vychází z jazyka C; přechod z Javy na C nebo C++ je tedy jednodušší, než odjinud základní implementaci (JDK – Java Development Kit) firmy Sun lze pro prostředí Windows i Unix stáhnout ze stránek firmy Sun:http://java.sun.com My používáme vývojové prostředí NetBeans7., fy. http://www.netbeans.org/ V současnosti je aktuálni Netbeans 7.3.1 s Javou 7.0 u25 Studenti si tedy mohou snadno vývojový nástroj instalovat na svých domácích počítačích a mohou se učit programovat imimo počítačové učebny školy 30 A0B36PR1 - 02
JAVA – první program Příklad: program vypíše daný text na obrazovku: public class PrvniProgram { public static void main(String[] args) { System.out.println("Nazdar Svete"); } } Po překladu a spuštění se na obrazovku vypíše Nazdar Svete Nejjednodušší zdrojový program – je uložen v jediném souboru. Jméno souboru musí být shodné se jménem třídy (zde PrvniProgram) a přípona (rozšíření) jména souboru je povinná .java (náš program bude tedy uložen v souboru „PrvniProgram.java“) deklarace veřejné třídy (public class), hlavní funkcemain(veřejná statická metoda, public static method) Hlavička funkce funkce main (): klíčová slova public static void (void - procedura) (String[] args) specifikace vstupních parametrů Konvence: jména tříd se píší s prvním velkým písmenem A0B36PRI ÚVOD 01 31
JAVA – bloková struktura Program má blokový charakter (blok třídy, blok(y) metod(y)) Nejtriviálnější program je tvořen metodou main ve třídě (třída = program) public class PrvniProgram { public static void main(String[] args) { System.out.println("Nazdar Svete"); } } Začátek třídy Jméno třídy Jméno metody Začátek metody Hlavička metody Tělo metody Konec metody Konec třídy A0B36PRI ÚVOD 01 32
Vlastnosti programovacích jazyků • Syntaxe • souhrn pravidel udávajících přípustné tvary dílčích konstrukcí a celého programu • syntaktické diagramy • Sémantika • udává význam jednotlivých konstrukcí A0B36PR1 - ÚVOD 01
Rozšířená BNF • Rozšířená Backus-Naurova forma – EBNF • Příklad: identifikátor identifikátor = písmeno {písmeno | číslice} písmeno = 'A' | 'B' | 'C' | 'D' | ... | 'X' | 'Y' | 'Z' číslice = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '9' • Neterminály: identifikátor, písmeno, číslice • Terminály: ‘A’, ‘B’, ... • Význam metasymbolů: {x} žádný nebo několik výskytů x x| yx nebo y [x] žádný nebo jeden výskyt x A0B36PR1 - ÚVOD 01 PRO ZÁJEMCE
Vlastní studium ? 35 A0B36PR1 - ÚVOD 01
Kde lze studovat • Další informace k této přednášce hledejte např. v: Herout, P.: Učebnice jazyka Java, Kopp, Č.Budějovice, 2010, str.21-41.
A0B36PRI - PROGRAMOVÁNÍ Programování - úvod Jazyk JAVA Konec České vysoké učení technické Fakulta elektrotechnická
Vlastní studium ? A0B36PR1 - ÚVOD 01