====== Přednášky ====== **V akademickém roce 2016/2017 je předmět dobíhajících studijních programů rozvrhován s předmětem [[https://cw.fel.cvut.cz/wiki/courses/b0b36pjv/start|Programování v JAVA (PJV)]]]. Část věnována programovacímu jazyku C je pokryta v učebnici K.N. King: C Programming A Modern Approach, Second Edition. W. W. Norton & Company, Inc., 2008, případně též Pavel Herout, Učebnice Jazyka C - 1. díl, Kopp, 2016. Dále je možné navštěvovat přednášky předmětu [[https://cw.fel.cvut.cz/wiki/courses/b3b36prg/|Programování v C (PRG)]], na kterých je v prvních týdnech semestru rozvrhován [[ https://cw.fel.cvut.cz/wiki/courses/b3b36prg/lectures/|úvod do základních konstruktů jazyka]].** Podklady přednášek pro akademický rok 2015/2016. Podklady se skládají z promítaných slidů, které jsou také k dispozici ve zkrácených verzích šetřnějších k případnému tisku, bez přechodů mezi snímky a ve formátu čtyři snímky na stránku. **Poklady tvoří podpůrný materiál a jejich učelem není nahradit vlastní zápisky z přednášky, které slouží také jako prostředek osvojení si studované problematiky.** ===== 1. Objektově orientované programování a polymorfismus ===== Organizace předmětu; objektově orientované programování a polymorfismus v Javě; Příklad polymorfismu a návrhový vzor **Double Dispatch** * prezentace: {{courses:a0b36pr2:lectures:lecture01-slides.pdf|}} * zkrácená verze: {{courses:a0b36pr2:lectures:lecture01-handout.pdf|}} * zkrácená verze 2x2: {{courses:a0b36pr2:lectures:lecture01-handout-2x2.pdf|}} * zkrácená verze 3x3: {{courses:a0b36pr2:lectures:lecture01-handout-3x3.pdf|}} * přiložené demonstrační programy: {{courses:a0b36pr2:lectures:lecture01-demos.zip|}} --- //[[faiglj@fel.cvut.cz|Jan Faigl]] 2016/03/08 11:59// **Aktualizace**: neměnitelné objekty (48-50) a dynamická vazba při volání nadřazeného konstruktoru (60-61). ===== 2. Výjimky, výčtové typy a kolekce v Javě ===== Ošetření výjiměčných situací, kontrolované a nekontrolované výjimky, try-catch-finally, try-with-resources; výčtový typ; datové kolekce v Javě, Java Collection Framework (JFC), návrhový vzor Iterátor. * prezentace: {{courses:a0b36pr2:lectures:lecture02-slides.pdf|}} * zkrácená verze: {{courses:a0b36pr2:lectures:lecture02-handout.pdf|}} * zkrácená verze 2x2: {{courses:a0b36pr2:lectures:lecture02-handout-2x2.pdf|}} * zkrácená verze 3x3: {{courses:a0b36pr2:lectures:lecture02-handout-3x3.pdf|}} * přiložené demonstrační programy: {{courses:a0b36pr2:lectures:lecture02-demos.zip|}} --- //[[faiglj@fel.cvut.cz|Jan Faigl]] 2016/03/08 14:41// **Aktualizace**: Přesun generického typu na 3. přednášku. ===== 3. GUI v Javě ===== Grafické uživatelské rozhraní v Javě; AWT; Swing; Komponenty, kontejnery a správce rozvržení; kreslení grafických primitiv; dialogová okna; modální dialogy. * prezentace: {{courses:a0b36pr2:lectures:lecture03-slides.pdf|}} * zkrácená verze: {{courses:a0b36pr2:lectures:lecture03-handout.pdf|}} * zkrácená verze 2x2: {{courses:a0b36pr2:lectures:lecture03-handout-2x2.pdf|}} * zkrácená verze 3x3: {{courses:a0b36pr2:lectures:lecture03-handout-3x3.pdf|}} * přiložené demonstrační programy: {{courses:a0b36pr2:lectures:lecture03-demos.zip|}} Příklady GUI v Javě z předchozích běhů předmětu {{courses:a0b36pr2:lectures:pr2-03-gui.zip|}} (pro inspiraci, neaktualizováno, kódovací konvence dle tehdejších zvyklostí). --- //[[faiglj@fel.cvut.cz|Jan Faigl]] 2016/03/10 09:11// **Aktualizace**: Přesun generického typu ze 2. přednášky, opakování iterátoru. --- //[[faiglj@fel.cvut.cz|Jan Faigl]] 2016/04/01 10:39// **Aktualizace**: Upřesnění HTML rendering engine v Java FX . ===== 4. GUI v Javě a událostmi řízené programování ===== Grafické uživatelské rozhraní v Javě; Swing; návrhář GUI; Příklad aplikace, Model-View-Controller (MVC); Události a událostmi řízené programování (Event-Driven-Programming); vnitřní a vnitřní anonymní třídy. * prezentace: {{courses:a0b36pr2:lectures:lecture04-slides.pdf|}} * zkrácená verze: {{courses:a0b36pr2:lectures:lecture04-handout.pdf|}} * zkrácená verze 2x2: {{courses:a0b36pr2:lectures:lecture04-handout-2x2.pdf|}} * zkrácená verze 3x3: {{courses:a0b36pr2:lectures:lecture04-handout-3x3.pdf|}} * přiložené demonstrační programy: {{courses:a0b36pr2:lectures:lecture04-demos.zip|}} * --- //[[faiglj@fel.cvut.cz|Jan Faigl]] 2016/03/24 15:22// ===== 5. Vícevláknové aplikace ===== Paralení programování, procesy a role operačního systému; vlákna v operačním systému; problém souběhu, synchronizace vláken a monitor. Vlákna v Javě, vytvoření, synchronizace a komunikace mezi vlákny. Příklad vláken v GUI (Swing), návrhový vzor pozorovatel (observer) a SwingWorker. * prezentace: {{courses:a0b36pr2:lectures:lecture05-slides.pdf|}} * zkrácená verze: {{courses:a0b36pr2:lectures:lecture05-handout.pdf|}} * zkrácená verze 2x2: {{courses:a0b36pr2:lectures:lecture05-handout-2x2.pdf|}} * zkrácená verze 3x3: {{courses:a0b36pr2:lectures:lecture05-handout-3x3.pdf|}} * přiložené demonstrační programy: {{courses:a0b36pr2:lectures:lecture05-demos.zip|}} --- //[[faiglj@fel.cvut.cz|Jan Faigl]] 2016/03/22 17:56// ===== 6. Vícevláknové aplikace - příklady ===== Modely vícevláknových aplikací. Paralelní programování a ladění, problém uváznutí a problém souběhu. Příklad kreslení do plátna, síťové komunikace a aplikací klient/server. Přednášky je koncipována seminární formou s demonstrací příklad, konkrétní náplň tak bude přizpůsobena dle dotazů. * prezentace: {{courses:a0b36pr2:lectures:lecture06-slides.pdf|}} * zkrácená verze: {{courses:a0b36pr2:lectures:lecture06-handout.pdf|}} * zkrácená verze 2x2: {{courses:a0b36pr2:lectures:lecture06-handout-2x2.pdf|}} * zkrácená verze 3x3: {{courses:a0b36pr2:lectures:lecture06-handout-3x3.pdf|}} * přiložené demonstrační programy: {{courses:a0b36pr2:lectures:lecture06-demos.zip|}} Demonstrační programy budou zvěřejněny po přednášce na základě dotazů a interakce během přednášky. Informovativní pro zájemce -- Síťování a sokety v Javě * prezentace: {{courses:a0b36pr2:lectures:lecture06-net-slides.pdf|}} * zkrácená verze: {{courses:a0b36pr2:lectures:lecture06-net-handout.pdf|}} * zkrácená verze 2x2: {{courses:a0b36pr2:lectures:lecture06-net-handout-2x2.pdf|}} Informovativní pro zájemce -- Boss/Worker model v Klient/Server aplikaci * prezentace: {{courses:a0b36pr2:lectures:lecture06-tdijserv-slides.pdf|}} * zkrácená verze: {{courses:a0b36pr2:lectures:lecture06-tdijserv-handout.pdf|}} * zkrácená verze 2x2: {{courses:a0b36pr2:lectures:lecture06-tdijserv-handout-2x2.pdf|}} --- //[[faiglj@fel.cvut.cz|Jan Faigl]] 2016/03/30 18:20// ===== 7. Úvod do programovacího jazyka C ===== Jazyk C - překlad zdrojových kódů a linkování programu; příklad překladu programu a příklad programu s výstupem na standardní výstup. * prezentace: {{courses:a0b36pr2:lectures:lecture07-slides.pdf|}} * zkrácená verze: {{courses:a0b36pr2:lectures:lecture07-handout.pdf|}} * zkrácená verze 2x2: {{courses:a0b36pr2:lectures:lecture07-handout-2x2.pdf|}} * zkrácená verze 3x3: {{courses:a0b36pr2:lectures:lecture07-handout-3x3.pdf|}} * přiložené demonstrační programy: {{courses:a0b36pr2:lectures:lecture07-demos.zip|}} --- //[[faiglj@fel.cvut.cz|Jan Faigl]] 2016/04/06 08:23// ===== 8. Jazyk C - část I ===== Jazyk C - syntax, proměnné, základní typy a literály; výrazy a operátory; příkazy a řízení běhu programu; pole, ukazatele, funkce a předávání parametrů; ukazatele a pole. * prezentace: {{courses:a0b36pr2:lectures:lecture08-slides.pdf|}} * zkrácená verze: {{courses:a0b36pr2:lectures:lecture08-handout.pdf|}} * zkrácená verze 2x2: {{courses:a0b36pr2:lectures:lecture08-handout-2x2.pdf|}} * zkrácená verze 3x3: {{courses:a0b36pr2:lectures:lecture08-handout-3x3.pdf|}} * přiložené demonstrační programy: {{courses:a0b36pr2:lectures:lecture08-demos.zip|}} --- //[[faiglj@fel.cvut.cz|Jan Faigl]] // 2016/04/14 15:27 **Aktualizace**: binární zápis celočíselného literálu (21-22). ===== 9. Jazyk C - část II ===== Jazyk C - modifikátor const; ukazatel na konstantní proměnnou; konstantní ukazatel; ukazatel na funkci; definice typu typedef; struktury a uniony; dynamická alokace paměti; práce se soubory; funkce standardní knihovny C. * prezentace: {{courses:a0b36pr2:lectures:lecture09-slides.pdf|}} * zkrácená verze: {{courses:a0b36pr2:lectures:lecture09-handout.pdf|}} * zkrácená verze 2x2: {{courses:a0b36pr2:lectures:lecture09-handout-2x2.pdf|}} * zkrácená verze 3x3: {{courses:a0b36pr2:lectures:lecture09-handout-3x3.pdf|}} * přiložené demonstrační programy: {{courses:a0b36pr2:lectures:lecture09-demos.zip|}} --- //[[faiglj@fel.cvut.cz|Jan Faigl]] // 2016/04/20 18:32 ===== 10. Příklady v C ===== Přednáška je věnována praktickým ukázkám programování v C. Předpokládaný příklad v jazyce C: * prezentace: {{courses:a0b36pr2:lectures:lecture10-slides.pdf|}} * zkrácená verze: {{courses:a0b36pr2:lectures:lecture10-handout.pdf|}} * zkrácená verze 2x2: {{courses:a0b36pr2:lectures:lecture10-handout-2x2.pdf|}} * zkrácená verze 3x3: {{courses:a0b36pr2:lectures:lecture10-handout-3x3.pdf|}} * přiložené demonstrační programy: {{courses:a0b36pr2:lectures:lecture10-demos.zip|}} --- //[[faiglj@fel.cvut.cz|Jan Faigl]] // 2016/04/27 18:47 ===== 11. Verzovací systémy - Test ===== Na přednášce si projdeme zadání testů a očekávané odpovědi. Diskuse na testem, Dále se na přednášce seznámíme se základní filozofií verzovacích systému (centralizovaných a distribuovaných). Vykládaná látka je informativní. * prezentace: {{courses:a0b36pr2:lectures:lecture11-slides.pdf|}} * zkrácená verze: {{courses:a0b36pr2:lectures:lecture11-handout.pdf|}} * zkrácená verze 2x2: {{courses:a0b36pr2:lectures:lecture11-handout-2x2.pdf|}} * zkrácená verze 3x3: {{courses:a0b36pr2:lectures:lecture11-handout-3x3.pdf|}} --- //[[faiglj@fel.cvut.cz|Jan Faigl]] // 2016/05/04 18:21 ===== 12. Vyzvaná přednáška - Návrhové vzory v akci (Ing. Karel Čemus) ===== Učebnic návrhových vzorů je celá řada, avšak většina z nich se zaměřuje na teoretické vysvětlení konceptu, jeho demonstraci pomocí diagramu, případně AHA příkladu. Tato přednáška nemá za cíl důkladně vysvětlit konkrétní návrhové vzory, všechny jejich výhody a nevýhody, ani možné implementace. To si lze přečíst v knihách. Během přednášky společně navrhneme architekturu jednoduché aplikace Piškvorky, na které si demonstrujeme praktické využití návrhových vzorů. Ukážeme si, proč je dobré je ovládat a jak nám to může pomoci při řešení reálných problémů. Seznámíme se i s využitím několika často používaných vzorů a zjistíme, že většina běžných problémů má již kvalitní a ověřené řešení. ===== 13. Vyzvaná přednáška - Funkcionální prvky Java 8 ===== Lambda funkce, closures, defaultní metody, streamy, optional datatype. * prezentace: {{:courses:a0b36pr2:lectures:lecture13.pdf|}} * Zdrojové kódy ukázkových příkladů jsou ke stažení na gitlabu: [[https://gitlab.fel.cvut.cz/hrstkon1/A0B36PR2_104_109]] ===== 14. Zkouškový test ===== Přednáška bude věnován zkouškovému testu.