Algoritmizace a programování Algoritmy 1 - Úvod
Základní pojmy Počítačový program Počítačový program zápis zdrojového kódu, kterému rozumí počítač zápis zdrojového kódu, kterému rozumí počítač Počítač vykonává příkazy Počítač vykonává příkazy Programovací jazyk Programovací jazyk Prostředek pro „dorozumívání se“ s počítačem Prostředek pro „dorozumívání se“ s počítačem Syntaxe Syntaxe Způsob zápisu příkazů Způsob zápisu příkazů Programování Programování Proces psaní příkazů v programovacím jazyce Proces psaní příkazů v programovacím jazyce
Co je to algoritmus? Přesný postup libovolné činnosti, kde známe posloupnost (sekvenci) kroků a víme jaký další krok bude následovat Přesný postup libovolné činnosti, kde známe posloupnost (sekvenci) kroků a víme jaký další krok bude následovat
Příklad algoritmu Uvaření čaje: (postup každého se může lišit) 1) Naplnění konvice vodou 2) Zapnutí konvice 3) Nachystání hrnku 4) Sáček čaje + cukr 5) Po skončení varu, hrnek zalít vařící vodou 6) Pár minut louhovat 7) Vyhodit sáček
Postup při vytváření algoritmu 1) Formulace problému 2) Stanovení cíle 3) Volba strategie 4) Navržení postupu 5) Zápis vytvořených postupů 6) Ověření správnosti definice vstupních dat definice výstupních dat
Vlastnosti algoritmu Hromadný (Masový) Hromadný (Masový) Neměl by sloužit pouze pro jediný případ Neměl by sloužit pouze pro jediný případ Odmocnina ze čtyř =>alg. nemá smysl Odmocnina ze čtyř =>alg. nemá smysl Odmocnina z libovolného čísla => má smysl Odmocnina z libovolného čísla => má smysl Jednoznačný Jednoznačný Každý krok jasně ukazuje na to co bude následovat Každý krok jasně ukazuje na to co bude následovat Opakovatelný (Determinovanost algoritmu) Opakovatelný (Determinovanost algoritmu) Výsledek bude vždy stejný při stejných vstupních datech Výsledek bude vždy stejný při stejných vstupních datech Konečný (Resultativnost algoritmu) Konečný (Resultativnost algoritmu) Po určitém počtu kroků vede ke konečnému výsledku a skončí Po určitém počtu kroků vede ke konečnému výsledku a skončí
Možnosti návrhu algoritmu Shora dolů Shora dolů Řešení rozkládáme na jednodušší operace až k dílčím krokům Řešení rozkládáme na jednodušší operace až k dílčím krokům Zdola nahoru Zdola nahoru Z dílčích kroků vytváříme prostředky pro zvládnutí celkového problému Z dílčích kroků vytváříme prostředky pro zvládnutí celkového problému Kombinace předchozích Kombinace předchozích
Příklady možností návrhu Shora dolů: Problém: Organizační struktura Ředitel Ředitel Zástupci, Ekonomka Zástupci, Ekonomka Vedoucí předmětových sekcí Vedoucí předmětových sekcí Učitelé Učitelé Problém2: Získání maturity
Způsoby zápisu algoritmu Přirozený jazyk Přirozený jazyk Přirozený jazyk strukturovaný Přirozený jazyk strukturovaný Pseudokód Pseudokód Konkrétní jazyk Konkrétní jazyk Vývojový diagram Vývojový diagram
Způsoby zápisu algoritmu 1/5 Přirozený jazyk Přirozený jazyk Nalezení největšího čísla v posloupnosti. Vstupem je posloupnost čísel, výstupem je největší číslo v dané posloupnosti. Do pomocného prvku uložíme první číslo posloupnosti. Postupně procházíme jednotlivá čísla v posloupnosti a pokud je hodnota právě zkoumaného čísla vetší než hodnota v pomocném prvku, uložíme hodnotu právě zkoumaného čísla do pomocného prvku. Pomocný prvek obsahuje největší číslo v posloupnosti. Nalezení největšího čísla v posloupnosti. Vstupem je posloupnost čísel, výstupem je největší číslo v dané posloupnosti. Do pomocného prvku uložíme první číslo posloupnosti. Postupně procházíme jednotlivá čísla v posloupnosti a pokud je hodnota právě zkoumaného čísla vetší než hodnota v pomocném prvku, uložíme hodnotu právě zkoumaného čísla do pomocného prvku. Pomocný prvek obsahuje největší číslo v posloupnosti.
Způsoby zápisu algoritmu 2/5 Přirozený jazyk strukturovaný Přirozený jazyk strukturovaný Vstup: posloupnost čísel Výstup: největší číslo v posloupnosti 1. Do pomocné proměnné uložit první číslo posloupnosti 2. Postupně procházet jednotlivá čísla posloupnosti 2.1 Jestliže je aktuální číslo vetší než pomocná proměnná, pak uložit aktuální číslo do pomocné proměnné 3. Pomocná proměnná obsahuje největší číslo posloupnosti posloupnosti
Způsoby zápisu algoritmu 3/5 Pseudokód Pseudokód Vstup: posloupnost čísel P Výstup: největší číslo NEJ v posloupnosti P NEJ <- P[0] NEJ <- P[0] pro všechna čísla C z P dělej pro všechna čísla C z P dělej jestliže C > NEJ pak NEJ NEJ pak NEJ <- C vrať NEJ vrať NEJ
Způsoby zápisu algoritmu 4/5, 5/5 Konkrétní jazyk Konkrétní jazyk Vstup : posloupnost čísel P Výstup: největší číslo NEJ v posloupnosti P Výstup: největší číslo NEJ v posloupnosti P NEJ = P [0]; NEJ = P [0]; foreach (C in P) { foreach (C in P) { if(C>NEJ) NEJ = C; if(C>NEJ) NEJ = C; } return NEJ; return NEJ; Vývojový diagram Vývojový diagram
Požadované znalosti Základní pojmy (slide 2) Základní pojmy (slide 2) Pojem algoritmus (slide 3) Pojem algoritmus (slide 3) Vlastnosti algoritmu (slide 6) Vlastnosti algoritmu (slide 6) Možnosti návrhu algoritmu (slide 7) Možnosti návrhu algoritmu (slide 7)
Pěkný zbytek dne Pěkný zbytek dne