Programování 4. hodina RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015.

Slides:



Advertisements
Podobné prezentace
Téma: Využití Accessu pro tvorbu evidence našeho podnikání Vypracovala: Jana Wasserbauerová.
Advertisements

ZŠ Brno, Řehořova 3 S počítačem snadno a rychle Informatika 7. ročník III
Mgr. Renáta Davidová.  Hrací plocha je rozdělena do 2 sloupců, které představují různé kategorie otázek.  Každé otázce ve sloupci je přiřazeno bodové.
Jméno autora Ing. Ladislav Novák Datum vytvoření prosinec2012 Ročník 6. Vzdělávací oblast obor tematický okruh Informační a komunikační technologie Informatika.
Tercie Rovnice Rovnice – lineární rovnice postup na konkrétním příkladu.
Univerzita třetího věku kurz Znalci Databáze 2.
Kalendář Mgr. Lenka Stará. AutorMgr. Lenka Stará Vytvořeno dne Odpilotováno dne Ve třídě1.C Vzdělávací oblastČlověk a jeho svět Vzdělávací.
Úvod do programování 5. hodina RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015.
NÁZEV ŠKOLY: Masarykova základní škola a mateřská škola Melč, okres Opava, příspěvková organizace ČÍSLO PROJEKTU:CZ.1.07/1.4.00/ AUTOR:Mgr. Vladimír.
Tabulátory (20). Projekt: CZ.1.07/1.5.00/ OAJL - inovace výuky Příjemce: Obchodní akademie, odborná škola a praktická škola pro tělesně postižené,
Úvod do programování 9. hodina RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015.
ZAL – 5. cvičení Martin Tomášek Pole - opakování Základní datový typ. V poli držíme více elementů (jednoho typu) S elementy v poli můžeme manipulovat.
Elektronické učební materiály - II. stupeň Informatika 9 Autor: Bc. Pavel Šiktanc Export tabulky z MS Excel 2010 do jiných formátů Co se všechno naučíme???
Výpočetní technika VY_32_INOVACE_12_16_Excel. Excel Tabulkový procesor pro vytváření tabulek a grafů Pochází z kancelářského balíku Microsoft Office Nejčastěji.
Číslo projektu: CZ.1.07/1.4.00/ Název DUM: Skenování fotografie Číslo DUM: III/2/VT/2/3/57 Vzdělávací předmět: Pracovní výchova, Informatika Tematická.
Číslo projektuCZ.1.07/1.5.00/ Číslo materiáluVY_32_INOVACE_30-03 Název školy Střední průmyslová škola stavební, České Budějovice, Resslova 2 AutorRNDr.
HTML (I) (2). Projekt: CZ.1.07/1.5.00/ OAJL - inovace výuky Příjemce: Obchodní akademie, odborná škola a praktická škola pro tělesně postižené,
Výukový materiál zpracovaný v rámci projektu Číslo projektuCZ.1.07/1.4.00/ Šablona klíčové aktivityIII/2 SadaMatematika 6 NázevDesetinná čísla_8.
Microsoft Excel verze 2010 Mgr. Přemysl Kejzlar.
Počet čísel Počet hodnot
Počet čísel Počet hodnot
zpracovaný v rámci projektu
Batové dávky Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Vojtěch Mrózek. Dostupné z Metodického portálu ISSN: ,
Řešení nerovnic Lineární nerovnice
Lineární rovnice a nerovnice I.
Hledání nejvyšších a nejnižších hodnot
Lineární rovnice a nerovnice III.
Číslo projektu CZ.1.07/1.4.00/ Název sady materiálů
Excel – tabulkový procesor
Digitální učební materiál zpracovaný v rámci projektu
ZAL – 9. cvičení 2016.
ADT zásobník - příklad Prakticky aplikovatelný příklad využití ADT zásobník je vyhodnocování aritmetických výrazů v Postfixové notaci: Pro zápis aritmetických.
Inf Tabulkový procesor - formátování
Algoritmizace a programování
Název: Práce s tabulátory Autor: Hokr Jan
pedagogických pracovníků.
zpracovaný v rámci projektu
Poměr v základním tvaru.
Název školy: ZŠ Štětí, Ostrovní 300 Autor: Sandra Tichá
Makro v Excelu.
Gymnasium Jižní Město Praha
ZAL – 8. cvičení 2016.
Kvadratické nerovnice
Číslo projektu CZ.1.07/1.4.00/ Název sady materiálů
Dělení mnohočlenů jednočlenem
Řešení nerovnic Lineární nerovnice
NÁZEV: VY_32_INOVACE_03_09_M8_Hanak TÉMA: Lineární rovnice
NÁZEV ŠKOLY: Základní škola Josefa Bublíka, Bánov
NÁZEV ŠKOLY: Základní škola Josefa Bublíka, Bánov
NÁZEV ŠKOLY: Základní škola Josefa Bublíka, Bánov
NÁZEV ŠKOLY: Základní škola Josefa Bublíka, Bánov
Číslo projektu CZ.1.07/1.5.00/ Název projektu Pro žáky naší školy více – Na míru píšeme učebnice VY_32_INOVACE_VJ29 Excel – funkce Počet období.
Číslo projektu CZ.1.07/1.5.00/ Název projektu Pro žáky naší školy více – Na míru píšeme učebnice VY_32_INOVACE_VJ26 Excel – funkce Současná hodnota.
Výukový materiál zpracovaný v rámci projektu
Číslo projektu CZ.1.07/1.5.00/ Název projektu Pro žáky naší školy více – Na míru píšeme učebnice VY_32_INOVACE_VJ21 Excel - čas Předmět  Výpočetní.
Jiří Vyskočil, Marko Genyg-Berezovskyj 2010
NÁZEV ŠKOLY: Základní škola Josefa Bublíka, Bánov
VY_32_INOVACE_VJ36.
Fronta (1) Dynamická datová struktura typu FIFO (First In First Out)
Poměr v základním tvaru.
MATEMATIKA – ARITMETIKA 6
Průvodní list Šablona: III/2 Inovace a zkvalitnění výuky prostřednictvím ICT   Vzdělávací materiál: Prezentace – zápis pro žáky Určen pro: 2. ročník oboru.
Matematika + opakování a upevňování učiva
Provozováno Výzkumným ústavem pedagogickým v Praze.
Obchodní akademie, Střední odborná škola a Jazyková škola s právem státní jazykové zkoušky, Hradec Králové Autor: Mgr. Lenka Marková Název materiálu:
Název školy: Základní škola a mateřská škola Dolní Bojanovice, okres Hodonín příspěvková organizace Číslo projektu: CZ.1.07/1.4.00/ Označení materiálu:
Informatika – Základní operace s buňkami
Algoritmizace a datové struktury (14ASD)
Algoritmizace a datové struktury (14ASD)
ZVUKY A TÓNY.
Transkript prezentace:

Programování 4. hodina RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015

Jan LánskýProgramování 4. hodina2 Umíme z minulé hodiny Stromy Reprezentace Binární vyhledávací stromy Create Find, Insert, Delete Vypis (inorder, preorder, postorder) Vyvážené stromy (stručně) Dokonale vyvážený binární vyhledávací strom AVL strom

Jan LánskýProgramování 4. hodina3 Cíle hodiny Využití stromů při řešení praktických příkladů Načtení stromu z textového zápisů vztahů mezi daty Binární vyhledávací strom jako slovník Průchod obecným stromem do hloubky s využitím zásobníku Průchod obecným stromem do šířky s využitím fronty Vyhodnocení aritmetického výrazu

Jan LánskýProgramování 4. hodina4 Rodokmen z textové podoby do podoby stromu Textový soubor – každý řádek reprezentuje otce a jeho potomky Otec: potomek, …, potomek Označení osob musí být unikátní (v praxi jméno, příjmení, datum a místo narození) Chceme převést do podoby obecného stromu Txt soubor: pozor na umístění a počty mezer. Naše řešení je požaduje přesně. Pokud bude vstup vytvářet člověk, udělá chyby. Praktický příklad

Jan LánskýProgramování 4. hodina5 Rodokmen Jan PetrPavelPepa LukasJirkaOndra AdamAlesFilipMirek

Jan LánskýProgramování 4. hodina6 Myšlenka algoritmu Obecný strom, jehož kořen je otec z prvního řádku Projdeme soubor po řádcích. Rozpoznáme jméno otce a jeho synů Pokud se otec nevyskytuje ve stromu, chyba, končíme. V obecném stromu k otci přidáme jeho syny Pokud jména nejsou unikátní (chyba), přidáváme všechny syny prvnímu nalezenému jmenovci

Jan LánskýProgramování 4. hodina7 Pomocný binární vyhledávací strom slovník V obecném stromu musíme projít všechny prvky, abychom nalezli hledaný uzel. Zrychlení: použijeme slovník (binární vyhledávací strom), který bude překládat jména osob na uzly obecného stromu Místo hledání v obecném stromu (lineární čas) budeme hledat v binárním vyhledávacím stromu (logaritmický čas) Stojí nás to dvojnásobek paměti

Jan LánskýProgramování 4. hodina8 Datové struktury Obecný strom: Jméno uzlu a pole synů Binární vyhledávací strom: Klíč: jméno uzlu Hodnota: uzel obecného stromu Levý: levý syn Pravý: pravý syn Místo celých čísel pracujeme s řetězci. Změní se těla funkcí Insert a Find

Jan LánskýProgramování 4. hodina9 Vytvoření uzlu Binární vyhledávací strom: Známe z minulé hodiny Obecný strom: Vytvoříme pole pro dva syny Počet synů je nula.

Jan LánskýProgramování 4. hodina10 Přidání syna do obecného stromu Projdeme pole synů a hledáme prvek s hodnotou null. Pokud ho nalezneme, změníme ho na přidávaného syna a hodnotu null posuneme na další prvek Bylo-li pole synů plné, zvětšíme ho na dvojnásobek. Do nového pole okopírujeme původní hodnoty, přidáme nový prvek, nastavíme zarážku null. Dynamické pole

Jan LánskýProgramování 4. hodina11 Oddělovač synů Otec končí před dvojtečkou Pozor na mezery Otec není ve slovníku. Buďto je to kořen, nebo chyba Pole řetězců se jmény synů Přidáme syna do slovníku Přidáme syna do obecného stromu

Jan LánskýProgramování 4. hodina12 Průchod stromem Průchod do hloubky (DFS) - Backtracking Rekurze Zásobník – prvky zásobníku jsou uzly stromu Průchod do šířky (BFS) - Vlna Fronta – Prvky fronty jsou uzly stromu Přidáme datovou položku uzlu, zda byl navštíven nebo ne. Můžeme přidat i položku pro hloubku uzlu ve stromě. S uzly můžeme provést během průchodu požadovanou operaci (např. výpis hodnoty) AJ: Do hloubky: Deep first search (DFS) Do šířky: Breadth first search (BFS)

Jan LánskýProgramování 4. hodina13 Průchod stromem do hloubky Preorder První je vypsán otec, pak synové Viz výstup nalevo od textu Inorder U binárních stromů: Pořadí výpisu je levý syn, otec, pravý syn. Postorder Nejprve jsou vypsání synové pak otec

Jan LánskýProgramování 4. hodina14 Obecný strom – nové položky Přidáme poznámku, zda jsme uzel už navštívili, nutné pro nerekurzivní průchody. Uzel je nenavštíveny při svém vzniku Hloubka uzlu = vzdálenost od kořene v počtu uzlů Uzel je kořen. Operace insert, delete nebudou měnit hloubku, zjistíme ji až při průchodu stromem

Jan LánskýProgramování 4. hodina15 Pomocné funkce pro výpis Vypíše za každou úroveň hloubky hvězdičku a pak vypíše název uzlu. Vrátí dalšího nenavštíveného syna uzlu nebo null.

Jan LánskýProgramování 4. hodina16 Průchod do hloubky: rekurze Minulou hodinu jsme použili na Binární vyhledávaci strom – funkce Vypis Start rekurze Další nenavštívený syn uzlu Vypíšeme uzel a jeho hloubku Nastavíme mu hloubku uzlu a spostíme na něm rekurzi Rekurzivní DFS stromem může projít syny v obyčejném cyklu, ale udělali jsme obecněji. Preorder

Jan LánskýProgramování 4. hodina17 Průchod do hloubky: zásobník Praktická ukázka bude na tabuli Musí to být zásobník uzlů stromů Kořen stromu na zásobník Dokud není zásobník prázdný Vyzvedneme vrchol zásobníku, Pokud nebyl navštíven, tak ho vypíšeme (a označíme navštívení). Otce bez synů dále nezpracováváme. Preorder Má-li uzel nenavštíveného syna, nastavíme synovi hloubku a otce i syna dáme na zásobník

Jan LánskýProgramování 4. hodina18 Průchod stromem do šířky Uzly jsou vypisovány dle vzdálenosti od kořene Nejprve je vypsán kořen Poté synové kořene Poté vnuci kořene, … Použití datové struktury Fronta Nevýhoda: z výpisu (nalevo) nepoznáme, kdo je čí otec

Jan LánskýProgramování 4. hodina19 Průchod do šířky: fronta Praktická ukázka bude na tabuli Syny musíme označit za navštívené už při vložení do fronty, technické řešení kvůli funkci NextSon Velmi podobné jako při použití zásobníku, pouze synové se přidávají do fronty najednou v cyklu

Jan LánskýProgramování 4. hodina20 Vyhodnocení aritmetického výrazu Problém: lidé používají infixový zápis, který se musí pro optimální počítačové zpracování převést na prefixní zápis Infixní * ( ) – 4 Prefixní: * Při uložení výrazu do stromu ho vyhodnotíme průchodem stromem do hloubky Uzly operace, listy čísla. Literatura Kučera: slajdy 93 – 99 Topfer: strany Prefixní zápis nepotřebuje závorky Praktická ukázka bude na tabuli

Jan LánskýProgramování 4. hodina21 Zpětná vazba Objevili jste ve slajdech chyby? Včetně pravopisných Nechápete nějaký slajd? Je příliš obtížný, nesrozumitelný? Máte nějaký nápad na vylepšení? Anonymní formulář Odeslání za pár vteřin