Vývojové diagramy a základy algoritmizace Vývojový diagram je grafické vyjádření požadovaného algoritmu (znázornění jednotlivých příkazů, ze kterých se algoritmus skládá). Pro vývojový diagram se používají stanovené značky, které nelze měnit. 4
Vývojový diagram nejdůležitější značky spojnice - orientované - neorientované
Nejdůležitější značky mezní značky Program END RETURN KONEC RETURN ZAČÁTEK
Nejdůležitější značky ruční zadání vstupních dat A R=
Nejdůležitější značky zpracování Výpočet Výpočet VÝPOČET C=A+B
Nejdůležitější značky Tisk výstup vstup spojka TISK Tisk ČTI: A, B 4 4
Nejdůležitější značky podmínka (rozhodování) A>20 NE ANO A>20
Nejdůležitější značky přepínání
Nejdůležitější značky cyklus
Nejdůležitější značky čtení z bloku dat podprogram čti: N, A1 Čti: N, A1 6200 6200
Začátek a konec algoritmu
Špatný algoritmus, protože byla porušena podmínka rezultativnosti - konečnosti - algoritmus musí proběhnout v konečném počtu kroků Písnička se bude zpívat pořád dokola a nikdy neskončí Došlo k zacyklení programu
Špatný algoritmus, protože byla porušena podmínka rezultativnosti - konečnosti - algoritmus musí proběhnout v konečném počtu kroků Co když hned ze začátku je I větší než 10? Došlo k zacyklení programu
Věcná správnost algoritmu
Špatný algoritmus, protože byla porušena podmínka věcné správnosti Algoritmus je funkční, ale dostaneme nesprávný výsledek
V programech nelze použít zlomkové čáry – používá se lomítko / Rovnici Musíme zapsat takto: X:=(A+B)/(C+D) V programech nelze použít √ (odmocninu) a . (násobení) Místo znaku √ používáme výraz SQRT a místo znaku . používáme znak * Místo znaku používáme výraz PI
Jednoznačnost algoritmu
Špatný algoritmus, protože byla porušena podmínka jednoznačnosti – (determinovanost - podmíněnost) - všechny operace i jejich návaznosti musí být jednoznačně určeny (definovány) a nic nesmí být náhodné
Špatný algoritmus, protože byla porušena podmínka jednoznačnosti – (determinovanost - podmíněnost) - všechny operace i jejich návaznosti musí být jednoznačně určeny (definovány) a nic nesmí být náhodné Co když ve jmenovateli bude 0? Musíme ošetřit hodnoty, které se blíží k nekonečnu Pokud je řešení v oboru reálných čísel, nesmí být výraz pod odmocninou záporný Jsou to nejzávažnější chyby v programech
Obecnost algoritmu 5
Špatný algoritmus, protože byla porušena podmínka obecnosti – (hromadnosti) - algoritmus musí řešit úlohu pro různé vstupní hodnoty
Opakovatelnost algoritmu
Špatný algoritmus, protože byla porušena podmínka opakovatelnosti - při stejných vstupních hodnotách musíme dostat vždy stejný výsledek Proměnná I je neznámá
Sekvence Sekvence je nejjednodušším typem algoritmu, který se skládá (kromě mezních značek) pouze ze sekvenčních bloků Během sekvence nesmí docházet k větvení algoritmu ani k návratu zpět
Příklad (A=5, B=10) – co se zobrazí na konci programu?
Příklad (1) Je dán obdélník o stranách A, B. Vytvořte algoritmus pro výpočet obvodu (O) a obsahu (S) tohoto obdélníka.
Příklad (2) Je dána kružnice o poloměru R. Vytvořte algoritmus pro výpočet obvodu (O) této kružnice a výpočet obsahu (S) kruhu, který leží uvnitř této kružnice.
Příklad (3) Je dán rovnostranný trojúhelník o stranách A. Vytvořte algoritmus pro výpočet obvodu (O) a obsahu (S) tohoto trojúhelníka. Malá nápověda
Příklad (4) Je dán pravoúhlý trojúhelník o stranách A, B, C. Vypočítejte stranu C podle Pythagorovi věty.
Větvení Nejčastějším důvodem větvení je ošetření nežádoucích důsledků. Musí být ošetřeny všechny možnosti, které mohou nastat. Dělení Výpočet výrazů s odmocninou Další funkce (goniometrické) 6
Situace se musí nejdříve vyhodnotit Teprve poté se provede činnost
Příklad (5) Vytvořte algoritmus pro výpočet výrazu tak, aby se výpočet alespoň jednou uskutečnil.
Příklad (6) Vytvořte algoritmus pro výpočet výrazu
Příklad (7) Vytvořte algoritmus pro výpočet výrazu
Větvení z důvodu žádoucích možností Výpočet absolutní hodnoty čísla A U tohoto příkladu nejde o ošetření nežádoucího jevu
Příklad (8) Vytvořte algoritmus pro zjištění zda zadané číslo je kladné, či záporné
Příklad (9) Vytvořte algoritmus pro porovnávání a řazení dvou čísel od největšího do nejmenšího
Příklad Vytvořte algoritmus pro nalezení největšího ze tří zadaných čísel
Příklad (10) Vytvořte algoritmus pro určení, zda tři čísla A, B, C mohou tvořit strany trojúhelníka 7
Příklad (11) Vytvořte algoritmus pro řešení lineární rovnice A*X + B =0 Proměnné A, B jsou načítány zvenčí X – hledaný kořen rovnice
Příklad (12) Vytvořte algoritmus pro zjištění zda daný žák prospěl s vyznamenáním, prospěl nebo neprospěl. Pro vstup použijte známky ze dvou předmětů. Diagram nakreslete ve wordu a uložte ho na flash disk. Ukládaný soubor pojmenujte svým příjmením.
Příklad (13) Vytvořte algoritmus pro vytvoření kalkulačky, která bude pracovat se dvěma čísly. Požadované matematické operace: Sčítání Odečítání Násobení Dělení
Příklad (14) Vytvořte algoritmus pro výpočet veličin rychlost, dráha a čas pohybu rovnoměrného přímočarého
Cykly Jsou jedním z nejsilnějších nástrojů algoritmů Podstatou je opakování určité části algoritmu Cyklus musí být konečný Cykly s pevným počtem opakování Cykly řízené podmínkou s podmínkou na začátku cyklu Cykly řízené podmínkou s podmínkou na konci cyklu 8
Nekonečný cyklus
Cyklus s pevným počtem opakování
Některá další značení cyklu
Správně zapsaný algoritmus pro tři opakování
Cyklus řízený podmínkou podmínka je na začátku
Cyklus řízený podmínkou podmínka je na konci
Čekací smyčka
Příklad (15) Vytvořte algoritmus pro výpočet výsledného odporu R, který se skládá ze dvou paralelních odporů R1 a R2. Algoritmus bude fungovat tak, že budete moci postupně zadávat různé hodnoty odporů R1 a R2 pro výpočet výsledného odporu R.
Příklad (16) Vytvořte algoritmus pro zobrazení čísel od jedničky do desítky
Příklad (17) Vytvořte algoritmus pro sečtení čísel od jedničky do desítky
Příklad (18) Vytvořte algoritmus pro výpočet faktoriálu zadaného čísla