Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

Podobné dokumenty
Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

Algoritmizace I. Ak. rok 2015/2016 vbp 1. ze 132

Vlastnosti algoritmu. elementárnost. determinovanost. rezultativnost. konečnost. hromadnost. efektivnost

Název předmětu: Školní rok: Forma studia: Studijní obory: Ročník: Semestr: Typ předmětu: Rozsah a zakončení předmětu:

Základy algoritmizace

VISUAL BASIC. Přehled témat

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem.

Úvod do programování - Java. Cvičení č.4

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Algoritmus. Cílem kapitoly je seznámit žáky se základy algoritmu, s jeho tvorbou a způsoby zápisu.

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Lekce 01 Úvod do algoritmizace

Algoritmizace prostorových úloh

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Maturitní otázky z předmětu PROGRAMOVÁNÍ

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5

3 Co je algoritmus? Trocha historie Definice algoritmu Vlastnosti algoritmu... 3

Algoritmizace. Obrázek 1: Přeložení programu překladačem

Algoritmizace prostorových úloh

ALGORITMIZACE A PROGRAMOVÁNÍ

Algoritmizace prostorových úloh

Program a životní cyklus programu

Martin Hejtmánek hejtmmar

Výukový materiál zpracován v rámci projektu EU peníze školám

Základy algoritmizace. Miroslav Virius

Vývojové diagramy 1/7

ŠVP Gymnázium Ostrava-Zábřeh Úvod do programování

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Algoritmizace. 1. Úvod. Algoritmus

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

Algoritmizace prostorových úloh

Datové typy a struktury

Programovací jazyk Pascal

Základní datové struktury

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

6 Příkazy řízení toku

Předměty. Algoritmizace a programování Seminář z programování. Verze pro akademický rok 2012/2013. Verze pro akademický rok 2012/2013

Programování v C++ 1, 1. cvičení

Algoritmizace a programování

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Hotelová škola, Obchodní akademie a Střední průmyslová škola Teplice, Benešovo náměstí 1, p.o. III/2 - Inovace a zkvalitnění výuky prostřednictvím ICT

Struktura programu v době běhu

Profilová část maturitní zkoušky 2013/2014

Základy algoritmizace a programování

Základní způsoby: -Statické (přidělění paměti v čase překladu) -Dynamické (přiděleno v run time) v zásobníku na haldě

Programování v C++, 2. cvičení

Programování II. Návrh programu I 2018/19

Algoritmizace prostorových úloh

Základní způsoby: -Statické (přidělění paměti v čase překladu) -Dynamické (přiděleno v run time) v zásobníku na haldě

Profilová část maturitní zkoušky 2017/2018

1 Strukturované programování

Reprezentace dat v informačních systémech. Jaroslav Šmarda

Pojem algoritmus. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje

Lekce 04 Řídící struktury

Základy algoritmizace, návrh algoritmu

TÉMATICKÝ OKRUH Teorie zpracování dat, Databázové a informační systémy a Teorie informačních systémů

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ , 5.1 a 5.2 8/14

PODPROGRAMY PROCEDURY A FUNKCE

Lineární algebra. Soustavy lineárních rovnic

Algoritmy a algoritmizace

ALGORITMIZACE Příklady ze života, větvení, cykly

Algoritmizace. Cíle předmětu

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Maturitní témata Školní rok: 2015/2016

Rekurzivní algoritmy

2. lekce Algoritmus, cyklus Miroslav Jílek

Mgr. Ladislav Zemánek Maturitní okruhy Matematika Obor reálných čísel

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

PROGRAMOVÁNÍ V JAZYCE C V PŘÍKLADECH 11 Dynamické datové struktury 11.1 Spojové struktury Příklad PROG_

type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik;

Algoritmizace, základy programování, VY_32_INOVACE_PRG_ALGO_01

Princip funkce počítače

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Programování v C++ 2, 4. cvičení

Operátory pro maticové operace (operace s celými maticemi) * násobení maticové Pro čísla platí: 2*2

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

NPRG030 Programování I, 2015/16 1 / :25:32

Ukazka knihy z internetoveho knihkupectvi

Stromy, haldy, prioritní fronty

Sdílení dat mezi podprogramy

ANOTACE vytvořených/inovovaných materiálů

Vícerozměrná pole. Úvod do programování 2 Tomáš Kühr

Tematická oblast: Programování 2 (VY_32_INOVACE_08_2_PR) Anotace: Využití ve výuce: Použité zdroje:

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů

Programování v C++ 3, 3. cvičení

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Binární soubory (datové, typované)

Zpráva o průběhu přijímacího řízení na vysokých školách dle Vyhlášky MŠMT č. 343/2002 a její změně 276/2004 Sb.

MATURITNÍ TÉMATA Z MATEMATIKY

1 Základy algoritmizace a programování. 1.1 Algoritmus Možnosti zápisu algoritmů. Základy algoritmizace a programování

Lineární datové struktury

Základy algoritmizace a programování

Pointery II. Jan Hnilica Počítačové modelování 17

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

8 Třídy, objekty, metody, předávání argumentů metod

Prohledávání do šířky = algoritmus vlny

Transkript:

Algoritmizace a programování Ak. rok 2012/2013 vbp 1. ze 44

Vladimír Beneš Petrovický K101 katedra matematiky, statistiky a informačních technologií vedoucí katedry E-mail: vbenes@bivs.cz Telefon: 251 114 534, 731 425 276 Konzultační hodiny: středa 14:00 16:00 Ak. rok 2012/2013 vbp 2. ze 44

Hodinová dotace Prezenční studium 1 semestr 2/2 KZ 6 kreditů Kombinované studium 1 semestr 12/4 KZ 6 kreditů Ak. rok 2012/2013 vbp 3. ze 44

Požadavky ke klasifikovanému zápočtu Prezenční studium Kombinované studium Kompletní vypracování dané úlohy (přihlášení v ISu) Analýza úlohy Algoritmizace Odladěný zdrojový kód programu v jazyce C++ Ak. rok 2012/2013 vbp 4. ze 44

Studijní literatura Literatura základní HEROUT, Pavel. Učebnice jazyka C. České Budějovice : Kopp, 1997. ISBN 80-85828-21-9. BENEŠ, Vladimír. Algoritmizace a programování. Elektronická studijní opora. Praha : BIVŠ, 2011. PRATA, Stephen. Mistrovství v C++. Brno : Computer Press, 2004. ISBN 80-251-0098-7. Literatura doporučená KADLEC, Václav. Učíme se programovat v jazyce C. Praha : Computer Press, 2002. ISBN 80-7226-715-9. MILKOVÁ, E. a kol. Algoritmy, základní konstrukce v příkladech a jejich vizualizace. Hradec Králové : Gaudeamus, 2010. KNUTH, Donald, E. Umění programování.1. díl, Základní algoritmy. Brno : Computer Press, 2008,. ISBN 978-80-251-2025-5. Ak. rok 2012/2013 vbp 5. ze 44

Obsah Algoritmizace Algoritmus Zápis algoritmu Některé základní algoritmy Programování Historie jazyka C/C++ Syntaxe základních příkazů jazyka C++ Programovací prostředí Ladění úlohy Ak. rok 2012/2013 vbp 6. ze 44

I Algoritmizace Ak. rok 2012/2013 vbp 7. ze 44

ALGORITMIZACE Ak. rok 2012/2013 vbp 8. ze 44

Algoritmus Algoritmus je základní matematický pojem. Nelze jej tedy definovat. Musíme se tedy uchýlit pouze k opisu. V případě PROGRAMOVÁNÍ jde o transformaci množiny vstupních dat na množinu výstupních dat. Ak. rok 2012/2013 vbp 9. ze 44

Algoritmus Opisná DEFINICE Je to postup, jak řešit danou úlohu pomocí počítače. Sestává z posloupnosti jednoduchých předem stanovených kroků (ekementárních operací, instrukcí) a vede od vstupních měnitelných údajů až k žádaným výstupním údajům (výsledku). Ak. rok 2012/2013 vbp 10. ze 44

Vlastnosti algoritmu Je ELEMENTÁRNÍ Skládá se z konečného počtu jednoduchých (snadno realizovatelných) činností, které označujeme jako kroky. Ak. rok 2012/2013 vbp 11. ze 44

Vlastnosti algoritmu Je DETERMINOVANÝ Po každém kroku lze určit, zda popisovaný proces skončil. Pokud neskončil, pak musí být dáno, kterým krokem má pokračovat. Ak. rok 2012/2013 vbp 12. ze 44

Vlastnosti algoritmu Je KONEČNÝ Počet opakování jednotlivých kroků je vždy konečný. Algoritmus tedy musí skončit po konečném počtu kroků. Poznámka: příklad s instrukcí 1 GOTO 1 Ak. rok 2012/2013 vbp 13. ze 44

Vlastnosti algoritmu Je REZULTATIVNÍ Vede ke správnému výsledku. Ak. rok 2012/2013 vbp 14. ze 44

Vlastnosti algoritmu Je HROMADNÝ Algoritmus můžeme použít k řešení celé (velké) skupiny (třídy) podobných úloh. Poznámka: např. řešení kvadratické rovnice, soustavy lineárních algebraických rovnic Ak. rok 2012/2013 vbp 15. ze 44

Poznámka 1. Pojem algoritmus se dá formalizovat např. pomocí matematické konstrukce označované jako Turingův stroj procesorová jednotka, tvořená konečným automatem, program ve tvaru pravidel přechodové funkce, pravostranně nekonečné páska pro zápis mezivýsledků. Churchova teze Ke každému algoritmu existuje ekvivalentní Thuringův stroj. Ak. rok 2012/2013 vbp 16. ze 44

Poznámka 2. Pojem algoritmus se dá formalizovat např. pomocí matematické konstrukce označované jako nebo pomocí teorie parciálně rekurzivních funkcí v teorii vyčíslitelnosti se takto označují funkce v jistém smyslu složitější než tzv. primitivně rekurzivní funkce Ak. rok 2012/2013 vbp 17. ze 44

Metoda SHORA DOLŮ a ZDOLA NAHORU 1. Daný problém musíme vyřešit. 2. Známe-li řešení, potřebujeme jej zapsat jako algoritmus 3. Postup řešení rozkládáme na jednodušší operace elementární kroky tj. metoda SHORA DOLŮ Poznámka: řešení kvadratické rovnice (analýza a řešení) Ak. rok 2012/2013 vbp 18. ze 44

Metoda SHORA DOLŮ a ZDOLA NAHORU Kromě metody SHORA DOLŮ se setkáváme i s metodou ZDOLA NAHORU: Postupně z elementárních kroků vytváříme prostředky, které umožní zvládnout daný problém Vytváříme nový procesor tím, že ho učíme nové operace Použijeme vyšší programovací jazyk (procedury, knihovna procedur nebo systém pro vytváření programů (CASE)) Ak. rok 2012/2013 vbp 19. ze 44

Základní složky (konstrukce) algoritmu Posloupnost (sekvence) tvořena jedním nebo několika kroky (provedou se právě jednou v daném pořadí) nemusí jít o kroky elementární dalším zjemňováním se mohou rozpadnout na součásti, které samy tvoří posloupnosti, cykly nebo podmínky Ak. rok 2012/2013 vbp 20. ze 44

Základní složky (konstrukce) algoritmu Cyklus (iterace) část algoritmu, která se opakuje dokud je splněna podmínka opakování cyklus se vždy skládá z podmínky opakování a z těla cyklu (tj. operací, které se opakují) vyhodnocení podmínky může být před provedením (v C while nebo for), resp. po skončení těla cyklu (v C do-while) nebo i uvnitř těla cyklu (podmíněný skok nebo kombinace podmínky a break) Ak. rok 2012/2013 vbp 21. ze 44

Základní složky (konstrukce) algoritmu Podmíněná operace (selekce) představuje vždy větvení algoritmu tvořena podmínkou a 1, 2 nebo více výběrovými složkami pokud je jedna ze složek vybrána, provede se jednou v C příkazy if a switch (v kombinaci s příkazem break) Ak. rok 2012/2013 vbp 22. ze 44

Základní složky (konstrukce) algoritmu Podprogram opakuje-li se určitá část algoritmu na několika místech (může používat různá data) na elementární kroky ji rozložíme pouze jednou (např. narazíme-li na ni poprvé) na ostatních místech se na ni odvoláme jako na dílčí algoritmus nebo podprogram (procedura, resp. funkce) Ak. rok 2012/2013 vbp 23. ze 44

Algoritmus a data struktura vstupních, výstupních, ale i vnitřních dat spoluurčuje strukturu programu posloupnosti datových položek různých druhů odpovídá posloupnost různých příkazů Poznámka: Přirozeným prostředkem pro zpracování rekurzivních datových struktur (stromy nebo seznamy) jsou obvykle rekurzivní algoritmy! Ak. rok 2012/2013 vbp 24. ze 44

Časová a paměťová náročnost algoritmů potřebné množství operační paměti doba pro provedení algoritmu rozsah vstupních údajů celkový počet elementárních operací (instrukcí) Poznámka: Ve skutečnosti zpravidla stačí orientovat se podle vybraných skupin instrukcí, které jsou časově nejnáročnější (if)! Ak. rok 2012/2013 vbp 25. ze 44

Popis algoritmů Jazyk pro popis programů Program Description Language (PDL) slovní popis algoritmu, dnes velmi častý lehce upravený programovací jazyk, např. Pascal (Pseudopascal) Poznámka: Tradičním jazykem pro popis algoritmů býval Algol 60. Slovní popis programu se může stát základem dobrého komentáře k výslednému programu. Ak. rok 2012/2013 vbp 26. ze 44

Popis algoritmů Strukturogramy grafické znázornění algoritmu tvarově i barevně odlišné znázornění (sekvence, iterace, selekce) Poznámka: Základem obdélník; v záhlaví označení algoritmu nebo dílčí operace; uvnitř kroky, které algoritmus tvoří Ak. rok 2012/2013 vbp 27. ze 44

Popis algoritmů Vývojové diagramy klasický prostředek (ČSN 36 4030, ÚNM, Praha 1974) graficky náročné (úpravy hotových VD) Poznámka: Spíše než logickou strukturu programu zdůrazňují druh operací. Ak. rok 2012/2013 vbp 28. ze 44

Vývojové diagramy mezní značka (začátek, resp. konec algoritmu) sekvence předem definovaná činnost (podprogram) selekce (rozhodování) Ak. rok 2012/2013 vbp 29. ze 44

Vývojové diagramy iterace (začátek, resp. konec iteračního cyklu) vstup, resp. výstup dat spojka komentář (poznámka) Ak. rok 2012/2013 vbp 30. ze 44

Vývojové diagramy obrazce (značky) propojeny čarami (svisle, vodorovně) implicitní směr shora dolů, zprava doleva, jinak šipky Ak. rok 2012/2013 vbp 31. ze 44

PŘÍKLAD Výpočet kořenů (reálných i komplexních) kvadratické rovnice ax 2 + bx + c = 0, kde a 0 Vstupní data: a, b, c Výstupní data: x 1, x 2 Ak. rok 2012/2013 vbp 32. ze 44

PŘÍKLAD Analýza úlohy Zápis algoritmu (VD) Zdrojový kód v jazyce C++ Odladění programu (testování) Ak. rok 2012/2013 vbp 33. ze 44

Datové struktury (Konstanta) Proměnná pojmenované místo v paměti počítače vytvoření na základě deklarace identifikátor (symbolická adresa) typ (datový typ) Ak. rok 2012/2013 vbp 34. ze 44

Datové struktury Proměnná - druhy proměnných Globální proměnné vytvoří se při spuštění programu existuje po celou dobu běhu programu Ak. rok 2012/2013 vbp 35. ze 44

Datové struktury Proměnná - druhy proměnných Lokální proměnné deklarované v procedurách, resp. funkcích vznikají voláním podprogramu zanikají při ukončení podprogramu při rekurzivním volání se vytvoří zvláštní instance lokálních proměnných pro každou aktivaci Ak. rok 2012/2013 vbp 36. ze 44

Datové struktury Proměnná - druhy proměnných Dynamické proměnné vznikají a zanikají za běhu programu dle potřeby na základě příkazů prostor pro ně čerpá program z volné paměti existence dynamických proměnných není vázána na začátek, resp. konec žádného podprogramu Ak. rok 2012/2013 vbp 37. ze 44

Datové struktury Pole posloupnost proměnných stejného typu (homogenní skupina) v deklaraci pole určujeme identifikátor pole jako celku typ pole (jeho složek (prvků)) počet složek (prvků) pole jednotlivé prvky určujeme pomocí indexů Ak. rok 2012/2013 vbp 38. ze 44

Datové struktury Pole jednorozměrná pole (vektory) 1 index dvourozměrná pole (matice) 2 indexy třírozměrná pole (kubické matice) 3 indexy více indexů Ak. rok 2012/2013 vbp 39. ze 44

Datové struktury Záznam (struktura) nehomogenní skupina proměnných (složek) chápaných jako celek složky záznamu jsou v paměti uloženy za sebou (zpravidla v pořadí jako v deklaraci) práce se složkou záznamu pomocí kvalifikace, tj. jméno záznamu a jméno složky společně (jméno složky je relativní adresou vzhledem k počátku proměnné typu záznam) Ak. rok 2012/2013 vbp 40. ze 44

Datové struktury Objekt v definici objektového typu specifikujeme atributy (datové složky) a metody (funkční a procedurální složky) proměnná objektového typu je instance Ak. rok 2012/2013 vbp 41. ze 44

Datové struktury Seznam (list) datová struktura posloupnost složek složky uspořádány podle klíče (hodnota dat nebo hodnota funkce vypočítaná na základě těchto dat) složky nemusí ležet v paměti za sebou (ukazuje na ně ukazatel (pointer), resp. spojka (link)) seznam má hlavu (head) a ohon (tail) seznam je dynamická struktura může být jednosměrný, resp. obousměrný Ak. rok 2012/2013 vbp 42. ze 44

Datové struktury Strom B-strom (b-tree) Zásobník (stack) LIFO (Last In, First Out) Fronta Tabulka Graf Množina Ak. rok 2012/2013 vbp 43. ze 44

Děkuji za pozornost Ak. rok 2012/2013 vbp 44. ze 44