~~NOCACHE~~
~~REVEAL theme=dokuwiki&transition=convex&controls=1&show_progress_bar=1&build_all_lists=1&show_image_borders=0&horizontal_slide_level=2&enlarge_vertical_slide_headers=0&show_slide_details=1&open_in_new_window=1&size=1024x768~~
====== Algoritmizace a programování ======
===== Algoritmus =====
* Algoritmus je přesný návod, resp. postup, kterým lze vyřešit daný typ úlohy.
* V souvislosti s programováním, se jím myslí teoretický princip řešení problému.
* Obecně se ale algoritmus může objevit i v jiné oblasti. Jako jistý druh algoritmu chápeme např. i návod na sestavení nábytku atp.
===== Vlastnosti algoritmu =====
//Aby bylo možné v informatice pokládat nějaký návod za algoritmus, musí být://
* elementární
* determinovaný
* konečný
* rezultativní
* hromadný
==== Elementární ====
Algoritmus se skládá z jednoduchých, snadno realizovatelných kroků
==== Determinovaný ====
Po každém kroku lze jasně určit, který krok následuje nebo zda algoritmus skončil
==== Konečný ====
Algoritmus musí skončit po konečném počtu kroků
==== Rezultativní ====
Algoritmus má alespoň jeden výstup, který je v požadovaném vztahu k zadaným vstupům
==== Hromadný ====
Lze jej použít k řešení celé skupiny podobných úloh
===== Vývojový diagram =====
---->
{{:spse:pm1:pasted:20201005-195421.png?500}}
<----
---->
{{:spse:pm1:pasted:20201005-195431.png?500}}
<----
---->
{{:spse:pm1:pasted:20201005-195456.png?500}}
<----
V čem vývojový diagram nedodržuje pravidla vývojových diagramů? ((Pro rozhodování nepoužívá kosočtverec a pro cykly nepoužívá šestiúhelníky.))\\
V čem algoritmus nedodržuje pravidla algoritmů? ((Nedodržuje "konečnost", za určitých okolnostní nemusí algoritmus skončit nikdy. ))
===== Základní algoritmické konstrukce =====
* začátek/konec algoritmu (označení/vymezení začátku, konce)
* vstup, výstup
* zpracování (příkaz)
* podmínka (větvení)
* opakování/cyklus (tři typy – s podmínkou na začátku, na konci, s počtem opakování)
* jinde definovaná činnost (podprogram, funkce)
==== Začátek a konec ====
Začátek a Konec – značka se vyskytuje pouze na začátku nebo na jeho konci algoritmu
(obvykle s popiskou Start, resp. End uvnitř značky)
{{:spse:pm1:pasted:20201005-195826.png?200}}
==== Vstup a výstup ====
Vstup nebo Výstup – znázorňuje načtení dat, která jsou potřebná pro činnost programu, nebo zobrazení výstupů programu
{{:spse:pm1:pasted:20201005-200658.png?200}}
==== Zpracování ====
Zpracování – znázorňuje nějakou činnost programu, během které dochází k transformaci dat (například sečtení dvou čísel)
{{:spse:pm1:pasted:20201005-200704.png?200}}
==== Podmínka ====
slouží k rozvětvení programu na základě podmínky, která je uvedena uvnitř. Je-li podmínka splněna, pak program pokračuje větví označenou **+**, není-li splněna, pokračuje větví označenou **-**
{{:spse:pm1:pasted:20201005-200710.png?200}}
==== Podprogram ====
Podprogram – znázorňuje samostatnou část programu, která může obsahovat větší množství kroků (např. načti text ze souboru)
{{:spse:pm1:pasted:20201005-200715.png?200}}
==== Cyklus - s počtem opakování ====
Značka příprava – označuje přípravnou fázi programu, užívá se například pro zahájení cyklu o známém počtu opakování. (Stejná značka může být i na konci tohoto typu cyklu)
{{:spse:pm1:pasted:20201005-200722.png?200}}
---->
{{:spse:pm1:pasted:20201005-200924.png?400}}
<----
---->
=== Cyklus - s podmínkou na začátku ===
{{:spse:pm1:pasted:20201005-200746.png?400}}
<----
---->
=== Cyklus - s podmínkou na konci ===
{{:spse:pm1:pasted:20201005-200750.png?400}}
<----