Programování - úvod A0B36PRI - PROGRAMOVÁNÍ 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 Sem přidat nějaké úvodní představení A0B36PRI ÚVOD 01
Hodnocení a zkouška Minimální počet bodů pro zápočet je 40 bodů Zdroje bodů max. bodů min. bodů 4 domácí úlohy 30 20 semestrální práce 25 15 test na cvičeních 5 zkouškový test 10 ústní zkouška -10b Body ze cvičení, maximálně 70. 60 a více bodů → možnost A, B, C podle prémiového testu Klasifikace na základě bodového hodnocení) klasifikace počet bodů číselně slovně A 90 - 100 1 výborně B 80 - 89 1,5 velmi dobře C 70 - 79 2 dobře D 60 – 69 2,5 uspokojivě E 50 - 59 3 dostatečně F < 50 4 nedostatečně 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í Soubory II Ú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; } A0B36PR1 - ÚVOD 01
Procedurální přístup v Javě statické metody main{ metoda; … } Class{..} metoda{ xxxxx; } metoda{ xxxxx; } metoda{ xxxxx; } metoda{ xxxxx; } 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; } Typicky.java 18
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 Zdrojový kód v jazyku C Program pro GNU Linux OS GNU Linux Překlad v GNU Linuxu Překlad v Solarisu OS Solaris Program pro Solaris A0B36PR1 - ÚVOD 01
Interpretační metoda - jazyk Java Zdrojový kód v jazyku Java soubor .java JRE OS MS Windows Překlad (javac) JRE OS GNU Linux Bytecode soubor .class JRE 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 Překlad Interpretace Aplikační prostředí – knihovny Disk interpret prostředí Zdrojový kód, .java API Kompilátor Interpret JVM Byte code, .class Počítač – HW, výpočet Software Hardware hardwarová vrstva Disk Pozn: zjednodušeno A0B36PR1 - 02 27
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 A0B36PR1 - 02 28 28
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 interpretaci vnitřní formy provede program java (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 k dispozici 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í NetBeans 7., 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 i mimo počítačové učebny školy A0B36PR1 - 02 30 30
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í funkce main (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"); } Jméno třídy Začátek 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 | y x nebo y [x] žádný nebo jeden výskyt x A0B36PR1 - ÚVOD 01 PRO ZÁJEMCE
Vlastní studium ? A0B36PR1 - ÚVOD 01 35
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.
Programování - úvod Konec A0B36PRI - PROGRAMOVÁNÍ Jazyk JAVA České vysoké učení technické Fakulta elektrotechnická
Vlastní studium ? A0B36PR1 - ÚVOD 01