Algoritmus Cílem kapitoly je seznámit žáky se základy algoritmu, s jeho tvorbou a způsoby zápisu. Klíčové pojmy: Algoritmus, vlastnosti algoritmu, vývojový diagram Algoritmus Algoritmus je postup, pomocí kterého můžeme vyřešit zadaný problem. Algoritmus je předpis kroků pro zadanou množinu problem, které vedou k řešení problem Schématický postup řešení problému Řešení pomocí konečného množství přesně definovaných kroků Pro řešení jednoho problem můžeme najít vice postupů, vždy však musí vést ke stejnému výsledku Příklad z života: o Recepty o Návody a postupy o Popis trasy na mapě Vstup: problém Činnost: algoritmizace Výstup: Algoritmus = jak to řešit Vlastnosti algoritmu: Hromadnost algoritmus slouží k řešení celé skupiny navzájem si podobných úloh. Úlohy jsou si podobné, ale liší se vstupními daty.
Konečnost pro každá přípustná data algoritmus po konečném počtu kroku skončí v name požadovaném čase. Tento počet kroků může být libovolně velký(podle složitosti úlohy), ale pro každý jednotlivý vstup msí být konečný. Částečná (parciální) správnost jestliže algoritmus skončí, pak výsledek je správný (tj. nestane se, že pro nějaká přípustná vstupní data algoritmus skončí se špatným výsledkem). Pro stejný vstup musí vždy vyjít stejný výsledek. Mechanické provádění algoritmus muže provádět každý bez hlubší znalosti řešené úlohy. Opakovatelný Jednoznačnost(determinovanost) algoritmus se skládá z jednoduchých kroků (příkazů), po splnění jednoho kroku musí být jednoznačně řečeno, jaký krok bude následovat Pokud neni splněna jakákoliv vlastnost, nejedná se o algoritmus. Vlastnosti dobrého algoritmu: Je jednoznačný (detministický) Konečný = k výsledku dospějeme v konečném case Obecný/hrnomadný = je použitelný pro libovolná přípustná data Opakovatelný = vede pro stejná data vždy ke stejnému výsledku Srozumitelný Přehledný Reprezentace a zápis algoritmu: Slovní popis popis v přirozeném jazyce nebo ve vyšších programovacích jazycích Vývojový diagram Strukturogramy Datově orientované diagramy Rozhodovací tabulky Matematický zápis Programovacím jazykem = jedinný způsob srozumitelný počítači o Program = algoritmus vyjádřený programovacím jazykem Interpret zápis algoritmu Kompilátor překlad jazyka tak, aby mu rozuměl počítač
Vývojový diagram: Znázorňuje průběh a stavbu programu Skládá se z jednotlivých grafických značek Každá značka má svůj význam Spojovací čáry pokud směřuje dolů, není nutné znázorňovat šipku
Jednotlivé části diagramu a jejich význam (výběr): Konec a začátek algoritmu Běžný příkaz Podmíněný výraz Cyklus s určeným počtem opakování Cyklus s podmínkou na konci Cyklus s podmínkou na začátku Spojovací čára
Struktury vývojových diagramů Sekvence Jedná se o příkazy jdoucí po sobě. Je to řada příkazů, které se postupně vykonají. Obr. 1: Sekvence Větvení Program se skládá z několika částí. Další krok závisí na podmínce, zda je splněna či ne. Větvení - úplná alternativa Podmínka nám větví program na dvě části. Jedna část programu se vykonává, pokud je podmínka splněna, a druhá, pokud podmínka není splněna. Program pak v určitém místě pokračuje stejně. + podmínka je splněna - podmínka neni splněna Obr. 2: Větvení - úplné Větvení - neúplná alternativa Podobné jako úplný, ovšem jedna větev je prázdná. Program nám jen některé části programu přeskočí. Obr. 3: Větvení - neúplné 11/9/2012 Algoritmus 5/9
Větvení - několikanásobná alternativa Podmínka je zde složitější, dělí nám program na více větví. Obr. 4: Větvení - několikanásovné Cykly se vstupní podmínkou Cyklus se provádí do doby, dokud není podmínka splněna. Pokud jsou podmínky již na začátku splněny, cyklus se neprovede ani jednou. Obr. 5: Cykly se vstupní podmínkou Cykly s výstupní podmínkou Podmínka je až ke konci programu. Obr. 6: Cyklus s výstupní podmínkou JIŘÍ CHYTIL, VÝVOJOVÉ DIAGRAMY 1. 6. DÍL,[ONLINE] 21.7. 2011 Z WEBU: http://programujte.com 11/9/2012 Algoritmus 6/9
PŘÍKLADY ALGORITMŮ ZATLUČENÍ HŘEBÍKU PROBLÉM: Máme zatlouct hřebík. Předpokládáme, že máme k dispozici hřebík, místo na zatlučení a kladivo. ALBORITMUS: Start Vezmeme kladivo a hřebík Přiložíme hřebík k desce Uhodíme kladivem na hlavičku hřebíku NE Je hřebík zatlučen? Konec ANO 11/9/2012 Algoritmus 7/9
ŽÁROVKA: PROBLÉM: Nesvítí žárovka. Jak budeme postupovat? Musíme si položit několik otázek: Opravdu nesvítí? Je připojene ke zdruji el. Energie? Neni polámaná? Předpokládáme, že vice problem nemůže nastat. 11/9/2012 Algoritmus 8/9
Vývojový diagram: Start Zapneme vypínač ANO Svítí žárovka? NE NE Je žárovka zapojena ke zdroji el.en.? Připoj žárovku ke zdorji el.en.. ANO Zkus vyměnit žárovku. NE Svítí žárovka? ANO Konec 11/9/2012 Algoritmus 9/9