Algoritmus je metoda, která slouží k vytváření/sestavování algoritmů.
- vstup
Vstupem algoritmizace jsou specifické požadavky na vytvoření/sestavení algoritmu, tak, aby splňoval všechny požadované podmínky.
- výstup
Výstupem algoritmizace je samotný algoritmus.
Algoritmus je postup, jak vyřešit či konat danou úlohu.
- slovně
Algoritmus lze zapsat slovně, buď formou přirozeného jazyka, kde se podrobně postup popíše, nebo pomocí tzv. pseudo kódu, který se strukturou přibližuje k zápisu v programovacím jazyce, ale místo příkazů jsou použity slova přirozeného jazyka.
- programovacím jazykem
Algoritmus je zapsán pomocí cyklů, funkcí atp. v daném programovacím jazyce.
- graficky
Algoritmus se zapisuje pomocí vývojového diagramu příkazů.
- matematicky
Algoritmus je zapsán vztahem mezi veličinami, soustavou rovnic, maticemi atp.
-
alespoň jeden vstup
-
resultativnost
Každý postup je přesně definován.
- obecnost
Algoritmus neřeší konrétní problém (musí řešit zadanou úlohu pro různé přípustné hodnoty).
- konečnost
Algoritmus musí skončit v libovolném počtu kroků, ten může být libovolně velký.
- srozumitelnost a přehlednost
Pokud úlohu řeší více algoritmů, vybíráme ten nejefektivnější.
Vyšší programovací jazyky mají blíže k přirozenému jazyku a používají se běžná slova (např. if, when, class...), čímž jsou srozumitelnější.
Poskytují také abstrakci nad tím, jak funguje procesor počítače. Zabývají se více tím, jak obecně implementovat algoritmus, než-li jak jen provést pro daný procesor počítače.
Umožňují využívat např. datových typů a datových struktur, čímž lze program lépe strukturovat a lze jej vytvářet přehledněji.
Nižší programovací jazyky mají blíže k počítači a jejich syntaxe spíše připomíná instrukce. Neposkytují žádnou nebo malou abstrakci od toho, jak funguje procesor počítače.
- vyšší
Např. Java, C#, Javascript, Pascal...
- nižší
Např. JSA, C...
Viz. otázky 6 a 7.
Nejprve je nutno napsat zdrojový kód programu, tedy kód např. v jazyce C#. Daný kód se poté zkompiluje či je překládán interpretem do strojového kódu, se kterým následně pracuje procesor počítače.
Překladač je program, který ze zdrojového kódu vytvoří spustitelný soubor, nejčastěji obsahující strojový kód.
Interpret je program, který zdrojový kód překládá postupně během běhu programu.
Strojový kód je posloupnost strojových instrukcí prováděných CPU.
- interpretovaný
Pro spuštění programu je nutný interpret, tedy program vykonávající jednotlivé příkazy programu. Většinou je paměťově náročnější.
- kompilovaný
Zdrojový kód je nutné přeložit pouze jednou, poté lze spouštět bez nutnosti externího programu.
- požadavky
Řeší se, jakou úlohu bude program řešit, kde bude využíván a pro koho bude určen.
- specifikace
Popisování funkčnosti požadovanéhoprogramu. Využívá se pomůcek jako grafů, obrázků atp.
- architektura
Navrhuje se, jak bude program fungovat jako celek. Program se rozděluje na moduly či vrstvy. Závislé na programovacím jazyce.
- návrh
Detailní popis všech částí programu. Závislé na programovacím jazyce.
- vytvoření
Vytvoření samotného programu podle předešlých kroků.
- testování a ladění
Program se testuje, zda-li je funkční a vše funguje beze chyb. Pokud program nesplňuje požadavky, je nutné ho upravit.
- použití
Pokud vše funguje, program je možno poskytnout uživatelům.
Jakýkoli algoritmus lze zapsat pomocí těchto příkazů:
- posloupnost příkazů
- neúplný podmíněný příkaz
- úplný podmíněný příkaz
- cyklus s podmínkou před posloupností
- cyklus s podmínkou za posloupností
- cyklus řízený parametrem
Je nutno rozložit logiku programu na jednotlivé spolu provázané objekty.
18. Jaký je rozdíl mezi algoritmizací ve strukturovaném programovacím jazyce a objektově orientovaném jazyce?
- strukturovaně
Program se člení do funkcí či procedur.
- objektově
Program se člění do objektů, které dále mají metody s různým modifikátorem přístupu.
Viz. 16.
Využívá se objektů a tříd. Objekty se mohou dále modifikovat pomocí dědičnosti, skládání, zapouzdření atp.
Návrhové vzory představují řešení návrhu programu. Jedná se o vyzkoušený postup, ne o knihovnu či kus kódu. Řeší návrh, ne konkrétní problém.
Algorizace bere v potaz návrhový vzor, kterým se musí řídit, aby se zachovala jednotnost v rámci programu. Návrhový vzor je jakousi šablonou pro algoritmizaci.