M2160 – Úvod do programování II

Slides:



Advertisements
Podobné prezentace
Lineární klasifikátor
Advertisements

ALGO – Algoritmizace 1. cvičení
Alg51 Rozklad problému na podproblémy Postupný návrh programu rozkladem problému na podproblémy –zadaný problém rozložíme na podproblémy –pro řešení podproblémů.
PB069 – Vývoj desktopových aplikací v C#/.NET
Programování v C++ Cvičení.
Výpočetní technika Akademický rok 2011/2012 Letní semestr Novák Petr
Algoritmizace a programování
Seminář – Základy programování
Vyučovací hodina 1 vyučovací hodina: Opakování z minulé hodiny 5 min Nová látka 20 min Procvičení nové látky 15 min Shrnutí 5 min 2 vyučovací hodiny: Opakování.
Školení správců II. Petr Pinkas RNDr. Vít Ochozka.
Informatika I 2. přednáška
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
+ZPE Ing.Jan MAYER (Základy programování pro elektrotechniku)
Algoritmy vyhledávání a řazení
Ukázka odstranění rekurze Přemysl Tišer
Počítače a programování 1
Informatika I 7. přednáška RNDr. Jiří Dvořák, CSc.
Informatika I 8. přednáška RNDr. Jiří Dvořák, CSc.
(snímek 5): Ujasněte si pojmy, které nejsou přesně definovány.
Databázové systémy I Cvičení č. 8 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
S O F T W A R E Šablona 32 VY_32_INOVACE_6_5_Operační systémy.
OSNOVA: a)Funkce – úvod b) Hlavičky funkcí c) Rekurze funkcí d)Knihovny funkcí e)Příklady Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače.
Databázové modelování
doc. RNDr. Zdeněk Botek, CSc.
Rozklad problému na podproblémy, rekurze
Vzdálené počítačové sítě a programování v prostředí Windows Okruhy ke zkoušce z předmětu: Ing. Zdeněk Votruba LVALVA.
doc. RNDr. Zdeněk Botek, CSc.
Grafický zápis algoritmů (vývojové diagramy) Lineární rovnice Zobrazení 10 sudých čísel – CYKLUS Suma 10 čísel JK, 2015.
Počítače a programování 1 7.přednáška. Základy Pole ve třídách a metodách Pole Arrays.
JUI přednáška Vstup a výstup, cykly RNDr. Jiří Dvořák, CSc.
doc. RNDr. Zdeněk Botek, CSc.
doc. RNDr. Zdeněk Botek, CSc.
Výuka databází v tabulkovém procesoru Martin Kubát.
Pokročilé architektury počítačů (PAP_16.ppt) Karel Vlček, katedra Informatiky, FEI VŠB Technická Univerzita Ostrava.
České vysoké učení technické Fakulta elektrotechnická Datové typy, výrazy vstup, výstup Jazyk JAVA A0B36PRI - PROGRAMOVÁN Í v1.02.
Vícerozměrná pole (1) Jazyk C povoluje, aby pole mělo více rozměrů (dimenzí) než jeden Z vícerozměrných polí bývá nejčastěji použí-váno pole dvourozměrné.
Univerzita třetího věku kurz Znalci Databáze 1.
Jak učit tvorbu textových dokumentů
Informatika (1) Počítač - základní pojmy HW a SW4 OS MS-DOS, Windows 95, 982 Org. souborů na disku, operační paměť2 Aplikace Malování, Word8 Základy programování.
Úvod do studia Základní informace o předmětu Robert Zbíral Maxim Tomoszek.
Tento projekt je financován z Operačního programu Vzdělávání pro konkurenceschopnost prostřednictvím Evropského sociálního fondu a státního rozpočtu ČR.
Předmět Marketing BP522 Kontaktní údaje: Ing. Šárka Dvořáková, Ph.D. Středa.
Úvod do programování 10. hodina RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015.
KURZ ALGORITMIZACE A PROGRAMOVÁNÍ V JAZYCE C Lekce č. 4: Programovací jazyk C Bc. Radek Libovický.
PROGRAMOVÁNÍ 3ITA,3ITB Jaroslav Burdys Hlavní zdroj:
VY_32_INOVACE_PR2_14. Cyklus umožňuje opakování určité posloupnosti příkazů bez nutnosti psát je stále znovu. Používáme tři základní druhy cyklů: cyklus.
M2160 – Úvod do programování II RNDr. Jaroslav PELIKÁN, Ph.D. katedra počítačových systémů a komunikací Fakulta informatiky Masarykovy univerzity Botanická.
Číslo projektuCZ.1.07/1.5.00/ Kódování materiáluvy_32_INOVACE_inf3_prg10 Označení materiáluprg10_vyvoj_diagram.pptx Název školyGymnázium Kladno.
KURZ ALGORITMIZACE A PROGRAMOVÁNÍ V JAZYCE C Lekce č. 2: Základní pojmy Bc. Radek Libovický.
DidactIG 2016STRANA 1 Možné přístupy k výuce dětských programovacích jazyků Jindra Drábková Katedra aplikované matematiky FP TUL.
Počítače a programování 2
Vypracoval / Roman Málek
PB069 – Vývoj desktopových aplikací v C#/.NET
M1160 – Úvod do programování I
Algoritmizace – základní pojmy
Vícerozměrná pole (1) Jazyk C povoluje, aby pole mělo více rozměrů (dimenzí) než jeden Z vícerozměrných polí bývá nejčastěji použí-váno pole dvourozměrné.
Základní pojmy v automatizační technice
Vlastnosti souborů Jaroslava Černá.
Doc. Ing. Petr Suchánek, Ph.D.
Rekurze.
Programování v jazyce C++
Příkazy cyklu (1) Umožňují vícekrát (nebo ani jednou) pro-vést určitý příkaz Jazyk C rozlišuje příkaz cyklu: s podmínkou na začátku: obecný tvar: while.
Oblast platnosti identifikátoru (1)
Cisco Networking Academy
Podprogramy.
IB999 Vstupní test z programování
Cyklus for (1) Obecný tvar: for (výraz1; výraz2; výraz3) příkaz
UA104 – Didaktika informatiky I
Algoritmizace a datové struktury (14ASD)
Algoritmizace a datové struktury (14ASD)
Transkript prezentace:

M2160 – Úvod do programování II RNDr. Jaroslav PELIKÁN, Ph.D. katedra počítačových systémů a komunikací Fakulta informatiky Masarykovy univerzity Botanická 68a, 602 00 BRNO Kanc.: A209,  : +420 – 549 495 751 E-mail: pelikan@fi.muni.cz http://www.fi.muni.cz/usr/pelikan

Cíl předmětu Seznámit studenty s pokročilými technika-mi používanými při návrhu algoritmů a ná-sledné tvorbě programů Na konci tohoto kurzu student bude: znát možnosti využití rekurze umět pracovat s řetězci umět pracovat s daty uloženými v souborech ovládat práci s dynamickými datovými strukturami znát základní principy objektově orientovaného programování 21/11/2017

Organizace předmětu Předmět M2160 má hodinovou dotaci 2/2, tj. 2 hodiny přednáška a 2 hodiny cvičení Rozvrh hodin: 1 přednáška: středa 16:00 – 17:50 (C511) 1 cvičební skupina: středa 14:00 – 15:50 (A215) Předmět je ukončen kolokviem 21/11/2017

Požadavky ke kolokviu Zápočet: „úspěšné“ napsání průběžných písemek splnění všech domácích úkolů (v termínu) maximálně dvě neomluvené neúčasti na cvičení Zápočet musí být zapsán na ISu nejpozději 12 hodin před začátkem kolokvia Kolokvium probíhá ve dvou částech: vypracování programu (na počítači): 90 minut diskuse nad řešeným problémem + další otázky 21/11/2017

Osnova (1) Rekurze Řetězce Datový typ struktura Pojmenované datové typy Datový typ union Práce se soubory: textové soubory binární soubory Dynamické proměnné 21/11/2017

Osnova (2) Dynamické datové struktury: zásobník fronta binární vyhledávací strom Předávání parametrů z příkazové řádky OS Složitost algoritmů Úvod do objektově orientovaného programo-vání – jazyk C# Tvorba aplikací s grafickým uživatelským rozhraním (GUI) 21/11/2017

Literatura (1) Pelikán, Jaroslav: Prezentace k přednáškám z předmětu M2160 Úvod do programování II – http://www.fi.muni.cz/usr/pelikan Herout, Pavel: Učebnice jazyka C, KOPP, České Budějovice 1994 Kernighan, Brian W. – Ritchie, Dennis M.: Programovací jazyk C, Computer Press, Brno 2006 Harbison, Samuel P. – Steele, Guy L. Jr.: Referenční příručka jazyka C, SCIENCE 1996 21/11/2017

Literatura (2) Sharp, John: Microsoft Visual C# 2010, Com-puter Press 2010, ISBN: 978-80-251-3147-3 Petzold, Charles: Programování Microsoft Windows Forms v jazyce C#, Computer Press 2006, ISBN: 80-251-1058-3 Nathan, Adam – Lehenbauer, Daniel: Windows Presentation Foundation Unleashed, Sams Publishing 2007, ISBN: 0-672-32891-7 21/11/2017

Rekurze (1) Schopnost objektů definovat se pomocí sebe sama Jazyk C umožňuje definovat tzv. rekurzivní funkce Říkáme, že funkce je rekurzivní (je defino-vána rekurzivně), jestliže se použití její de-finice vyskytuje uvnitř definice samotné 21/11/2017

Rekurze (2) Základní typy rekurze: přímá: nepřímá: lineární: stromová: funkce volá sama sebe nepřímá: funkce volá jinou funkci, která potom volá opět funkci výchozí lineární: funkce se v jednom průchodu vyvolá jen jednou stromová: funkce se v jednom průchodu vyvolá vícekrát 21/11/2017

Rekurze (3) Výpočet faktoriálu čísla n: lze využít vztahu: 0! = 1 n! = n.(n–1).(n–2). ... .1 = n.(n – 1)! pro n > 0 jedná se o nepříliš vhodné použití rekurze zápis algoritmu pomocí rekurze nebude jedno-dušší než zápis bez ní výsledný program bude pomalejší (způsobeno režií při vyvolávání funkce) 21/11/2017

Rekurze (4) Výpočet NSD čísel m, n: NSD (m,0) = m NSD (m,n) = NSD (n, m mod n) pro n > 0 tento postup redukuje problém nalezení NSD (m, n) na problém nalezení NSD (n, m mod n), kde 0 Ł m mod n < n tento proces musí po konečném počtu kroků vést k NSD (a, b), kde b = 0 vykazuje stejný problém (je pomalejší) jako rekurzivní výpočet faktoriálu 21/11/2017

Rekurze (5) Při použití rekurze je nutné vždy dávat po-zor, aby počet rekurzivních vyvolání funkce (tzv. hloubka rekurze) nebyl příliš vysoký, nebo dokonce nekonečný Je tedy nutné, aby v definici rekurzivní fun-kce byla vždy správně uvedena tzv. ukončo-vací podmínka 21/11/2017

Rekurze (6) Fibonacciho posloupnost: fib1 = fib2 = 1 fibn+2 = fibn+1+ fibn pro n > 0 použití rekurze je naprosto nevhodné protože pro n >1 počet volání roste exponenciálně 21/11/2017

Rekurze (7) Pravidlo: Platí: je-li možné jednoduše použít iterace (zápisu pomocí cyklu), pak se rekurzi vyhneme rekurzi použijeme v případě, že daný problém je definován rekurzivně Platí: každý iterativní algoritmus lze napsat rekurziv-ně a naopak 21/11/2017

Rekurze (8) Problém Hanoiská věž: Odkud Kam Pom Tento problém lze vhodně řešit pomocí rekurze (stromové) 21/11/2017

Rekurze (9) Při použití nepřímé rekurze je nutné, aby jedna z funkcí byla volána dříve než je uvedena její definice V takovém případě musíme ještě dříve než použijme vyvolání dosud nedefinované funkce provést zápis jejího prototypu 21/11/2017

Rekurze (10) void funkceG(double a, int b); void funkceF(int x) { } void funkceG(double a, int b) funkceF(8); 21/11/2017

Hilbertovy křivky (1) Hi – Hilbertova křivka i-tého řádu H1 H2 H3 Hi – Hilbertova křivka i-tého řádu Hi+1 dostaneme kompozicí čtyř křivek Hi po-loviční velikosti, jejich pootočením a spoje-ním třemi úsečkami 21/11/2017

Hilbertovy křivky (2) Označme čtyři části křivky Hi (Hilbertovy křivky nižšího řádu Hi-1) symboly A, B, C, D a spojující přímky šipkou odpovídajícího směru Dostáváme rekurzivní schéma: A: D ¬ A ­ A ® B B: C Ż B ® B ­ A C: B ® C Ż C ¬ D D: A ­ D ¬ D Ż C 21/11/2017