Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115 Číslo projektu: CZ.1.07/1.5.00/34.0410 Číslo šablony: 1 Název materiálu: Ročník: Identifikace materiálu: Jméno autora: Předmět: Tématický celek: Teorie algoritmizace 3. ročník WOH_52_1_teorie algoritmizace Ing. Bc. Martina Wohlrathová Informatika Algoritmizace Anotace: Učební text, definice a vlastnosti algoritmu, charakteristika vývojových diagramů, popis cyklů, úkoly na procvičení dekompozice úlohy Datum: 20. 8. 2013
Algoritmizace Každý z nás řeší denně nespočet úkolů. Počínaje ranní hygienou, přípravou snídaně, dopravou do školy či zaměstnání a nakonec večer uložením ke spánku. K plnění těchto úkolů člověk využívá své myšlení a jednotlivé činnosti často provádí podvědomě. Řešení stejného úkolu bude u různých lidí odlišné, neboť lidské myšlení zahrnuje do rozhodování emoce, zkušenosti, návyky, tvořivost, povahové rysy apod. a také (někdy ) myslí dopředu nebo si naopak neuvědomí důsledky svých kroků. Ve firmách, výzkumných ústavech, lékařství a vlastně ve všech oborech lidské činnosti řeší úkoly počítač, jehož procesor (na rozdíl od lidského mozku) hledá řešení úlohy podle přesně stanoveného postupu, ve kterém neexistuje náhoda či pocity. Takový postup se nazývá algoritmus a algoritmizací rozumíme vytváření takového postupu řešení úlohy. Algoritmus je posloupnost operací vedoucích k řešení dané úlohy. Musí mít tyto vlastnosti: Hromadnost musí vyhovovat celé množině úloh. To znamená, neřeší kolik je 5 + 3, ale řeší součet dvou libovolných čísel, tedy x +y. Přesnost jednoznačná formulace, po provedení kroku musí být zřejmé, který krok bude následovat. Konečnost musí proběhnout v konečném počtu kroků. Musí skončit nějakým výsledkem, třeba i hlášením chyby. Tento algoritmus nevyřeší součet 5 + 8 přesto, že řeší součet dvou čísel. Postrádá hromadnost.
Nepřesný algoritmus, není jasné pokračování v případě nesplnění podmínky. Pro záporná čísla nebo nulu nic neřeší, pro kladná čísla je nekonečný. Úloha je zadána svými vstupními a výstupními daty. Vstupní data Algoritmus Výstupní data Vyřešit úlohu pak znamená najít a definovat postup, který pro každou možnou vstupní hodnotu najde odpovídající výstupní hodnotu. Například úloha připravit snídani by byla zadána: vstupní data rohlík, máslo, džem, nůž, talíř výstupní data rohlík namazaný máslem a džemem Pomocí různých podmínek je nutné určit přípustné hodnoty, jako například je-li možné jako máslo použít margarín nebo jak silná vrstva džemu má být u namazaného rohlíku apod. Algoritmus lze zapsat slovy běžným jazykem nebo vývojovým diagramem (přehlednější). Program je zápis algoritmu programovacím jazykem (srozumitelný pro počítač).
Vývojový diagram je grafické znázornění algoritmu úlohy pomocí jednotných značek a spojnic se šipkami. Začátek nebo konec programu Vstup nebo výstup hodnot (čti x, tiskni x, vypiš x) Příkaz, operace Větvení, podmínka Spojovací značky
Algoritmus je kombinací posloupnosti, větvení a cyklů. Základní druhy cyklů: WHILE DO Dokud platí dělej Podmínka je na začátku. (Dokud je A menší než 10, přičti k němu vždy po průchodu podmínkou jedničku) Nemusí vůbec dojít k přičtení jedničky. Repeat Until Opakuj dokud nebude splněno Podmínka je na konci. (Přičítej jedničku tak dlouho, dokud nebude A větší než 10) Jednička se nejméně jednou přičte.
FOR... DO Pro i od 1 do N dělej Je dán přesný počet opakování N. i je řídící proměnná. (i se každým průchodem cyklu zvětšuje o jednu; desetkrát bude vypsána hodnota i, vždy o jednu větší. Vytvořit algoritmus úlohy není vždy jednoduchá záležitost a najít a odstranit případné chyby je ještě obtížnější. Úlohy řešíme nejdříve sestavením hrubého schématu a dále řešíme jednotlivé části celku detailněji. Používáme jednoduché, srozumitelné struktury, bez speciálních triků. Našemu algoritmu musí rozumět i ostatní. Práce na programech je většinou týmová. Naším cílem je pouze naučit se vidět řešení úkolu jako posloupnost jednotlivých kroků, které jsou jasně definované a postihují všechny možné varianty. Tento racionální a logický pohled nám bude užitečný v životě profesním, tak i osobním. Cvičení Napište přirozeným jazykem postup (proveďte dekompozici úlohy na jednotlivé elementární činnosti za použití přiměřené míry abstrakce): 1. Uvaření čaje 2. Přechod ulice bez semaforu a se semaforem 3. Natankování 20 l benzinu 4. Zatlučení hřebíku 5. Průchod dveřmi, které jsou možná zamčené a máme svazek klíčů, do druhé místnosti 6. Dostat se z domova do školy 7. Uvařit špagety 8. Připravit koupel 9. Uvařit cokoliv dle receptu Všimněte si ve vašich postupech použitých příkazů, rozhodování na základě podmínky, použitých druhů cyklů.