informatika:maturita:16a
Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
| Obě strany předchozí revizePředchozí verzeNásledující verze | Předchozí verze | ||
| informatika:maturita:16a [01. 02. 2015, 19.44] – [Základní prvky algoritmů] - přidán ternární operátor a swtich-case xmrnustik | informatika:maturita:16a [26. 05. 2020, 13.21] (aktuální) – [Eratosthenovo síto] xdostal | ||
|---|---|---|---|
| Řádek 1: | Řádek 1: | ||
| ====== Algoritmizace ====== | ====== Algoritmizace ====== | ||
| - | ===== Algoritmus ===== | ||
| - | Algoritmus je přesný popis pracovního procesu, který z měnitelných vstupních údajů dochází k žádaným výsledkům. | + | ===== Pojmy ===== |
| - | ==== Vlastnosti algoritmus | + | |
| - | * **Determinovanost** - v každé situaci musí být naprosto zřejmé, co a jak se má provést, jak má provádění algoritmu pokračovat, | + | |
| - | * **Obecnost** - algoritmus by neměl řešit jeden konkrétní problém (například 5 x 5), ale měl by nabízet obecné řešení daného problému (například X x Y) | + | |
| - | * **Finitivnost** - algoritmus by měl vždy mít omezený počet kroků, po kterých skončí | + | |
| - | * **Resultativnost** - musí mít nějaký výstup | + | |
| - | * **Korektnost** - výstup by měl být správně | + | |
| - | * **Efektivita** - děláí se na paměťovou efektivitu (náročnost na paměť) a výpočetní efektivitu (náročnost na výpočet), tyto dvě vlastnosti jsou většinou k sobě ve vztahu nepřímé úměry | + | |
| - | ==== Základní prvky algoritmů ==== | + | |
| - | === Podmínky (selekce) === | + | |
| - | Umožňují větvení algoritmů. Podmínky můžou mít čtyři možné formy. První forma jsou podmínky typu **if-then**, | + | |
| - | Druhou formou jsou podmínky typu **if-else** když něco, tak dělej, a pokud ne něco, tak dělej něco jiného (" | + | * **Algoritmus** – konečná sekvence operací sloužící k řešení určitého |
| + | | ||
| + | * **Programovací jazyk** – prostředek pro zápis | ||
| - | Existuje ještě jeden typ podmínky a tou je **switch-case**. Tato podmínka je založena na tom, že konkrétní proměnná | + | ===== Pravidla programovacích jazyků ===== |
| + | | ||
| + | * **Sémantika** | ||
| + | * //int number = 1 + 1;// | ||
| + | * Dojde k inicializaci deklarované proměnné " | ||
| - | === Cykly === | ||
| - | Umožňují vícenásobné opakování části algoritmu. Cykly můžou mít také dvě možné formy. První forma jsou cykly typu **while**, dokud něco tak prováděj (" | ||
| - | <WRAP center round tip 60%> | + | ===== Vlastnosti algoritmu ===== |
| - | for a for-each | + | * **Determinovanost** (Určenost) – V každé situaci musí být naprosto zřejmé jaký krok (instrukce) se právě provádí |
| - | </ | + | * **Obecnost** – Algoritmus by měl řešit typovou úlohu co nejvíce obecně, např. výpočty s využítím proměnných místo numerických konstant |
| + | * **Finitivnost** (Konečnost) – U algoritmu musí být možné určit po jaké době skončí, či musí být myslitelné naplnění podmínky pro jeho ukončení | ||
| + | * **Resultativnost** (Výslednost) – Musí mít nějaký výstup, tím je buď řešení úlohy a nebo oznámení o nemožnosti nalezení tohoto řešení | ||
| + | * **Korektnost** (Správnost) – Výstup by měl být správně (platí zejména pro výpočetní algoritmy) | ||
| + | * **Efektivita** – Dělí se na paměťovou efektivitu (náročnost na paměť) a výpočetní efektivitu (náročnost na výpočet), tyto dvě vlastnosti jsou většinou k sobě ve vztahu nepřímé úměry | ||
| - | ==== Ukázka algoritmu ==== | ||
| - | **Vajíčka** | + | ===== Známé algoritmy ===== |
| - | * **Vstupní údaje:** počet vajec, typ tuku, šunka | + | |
| - | * **Výstup: | + | |
| - | - Vezmi pánev | + | ==== Eratosthenovo síto ==== |
| - | - POKUD je typ tuku máslo, vezmi z lednice máslo | + | |
| - | - POKUD NENÍ, vem ze skříně olej (**if-else**) | + | |
| - | - Dej olej na pánev | + | |
| - | - Přidej na pánev šunku | + | |
| - | - DOKUD není šunka dozlatova, čekej (**while**) | + | |
| - | - Přidej vejce, DOKUD tam nejsou všechny (**do-while**) | + | |
| - | - DOKUD vše není hotovo, čekej (**while**) | + | |
| - | - Vypni plotnu | + | |
| - | - Jez! | + | |
| - | <WRAP center round tip 60%> | + | |
| - | **Pseudokód** - klasický kód | + | |
| - | </ | + | |
| + | Algoritmus pro získání všech prvočísel od dvou po dané číslo. | ||
| + | Postup: | ||
| + | Krok 1: Vytvoření seznamu, obsahujícího všechna čísla v rozsahu 2 až n: | ||
| + | Krok 2: První číslo ze seznamu je zapsáno jako prvočíslo do seznamu prvočísel a ze seznamu je vymazáno společně se všemi jeho násobky. | ||
| + | Krok 3: Opakuj krok 2, dokud není původní seznam prázdný. | ||
| + | Krok 4: Seznam prvočísel obsahuje všechna prvočísla od 2 po n | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | |||
| + | ==== Euklidův algoritmus ==== | ||
| + | |||
| + | Algoritmus pro výpočet největšího společného dělitele (dále jen NSD) dvou čísel. | ||
| + | |||
| + | Zde příklad: jsou zadána dvě čísla 140 a 15. | ||
| + | |||
| + | Postup: | ||
| + | * Nejprve zjistíme zbytek po dělení většího čísla číslem menším. (V našem případě 140 = 9 * 15 + **5**) | ||
| + | * Nyní zopakujeme první krok, ale s dělením menšího čísla zbytkem po dělení (15 = 3 * 5 + **0**) | ||
| + | * Vyšel nám zbytek 0, takže NSD je rovno 5, pokud by nám nevyšel zbytek 0 aplikovali bychom znovu krok jedna | ||
| + | |||
| + | [[http:// | ||
| + | |||
| + | |||
| + | ==== Djikstrův algoritmus ==== | ||
| + | |||
| + | Algoritmus sloužící pro výběr nejlepší trasy z bodu A do bodu B. | ||
| + | |||
| + | Postup: | ||
| + | * Každá cesta mezi jednotlivými body dostane hodnotu, podle " | ||
| + | * Algoritmus si postupně vypočítává délku cesty z bodu A do všech sousedních bodů a z nich do dalších bodů. | ||
| + | * Pokud algoritmus najde novou cestu do již objeveného bodu, pomalejší cestu k tomuto bodu odstraní. | ||
| + | * Na konci zůstane pouze jedna nejrychlejší cesta do kažhého z bodů. | ||
| + | * Algoritmus pak jako výstup vydá nejrychlejší cestu do požadovaného bodu B. | ||
| + | |||
| + | |||
| + | {{: | ||
| + | |||
| + | |||
| + | Pravděpodobnostní algoritmy: | ||
| + | |||
| + | ==== Algoritmus Las Vegas ==== | ||
| + | |||
| + | Algoritmus hledající prvek žádaného typu v množině s více typy prvků. V základní podobě algoritmu je narušen jak princip determinismu, | ||
| + | |||
| + | Postup: | ||
| + | * Algoritmus vybere prvek množiny s náhodně přiděleným pořadovým číslem v rámci povoleného rozsahu odpovídajícím velikosti možiny. | ||
| + | * Poté algoritmus u získaného prvku ověřuje typ, je-li typ shodný s typem hledaným, prvek vrátí jako výsledný výstup. | ||
| + | * Pokud však typ prvku neodpovídá, | ||
| + | |||
| + | |||
| + | ==== Algoritmus Monte Carlo ==== | ||
| + | |||
| + | Algoritmus s cílem analogickým k výše zmíněnému. Je alternativou k algoritmu Las Vegas, neboť nabízí konečnost (ukončení běhu cyklu v závislosti na parametru maximálního běhového času či počtu opakování cyklu) výměnou za jistou pravděpodobnost nedosažení cíle (není-li v rámci daného času či počtu opakování nalezen prvek žádaného typu, algoritmus skončí a vrátí se "s prázdnou" | ||
| + | |||
| + | Postup: | ||
| + | * Algoritmus vybere prvek množiny s náhodně přiděleným pořadovým číslem v rámci povoleného rozsahu odpovídajícím velikosti možiny. | ||
| + | * Poté algoritmus u získaného prvku ověřuje typ, je-li typ shodný s typem hledaným, prvek vrátí jako výsledný výstup. | ||
| + | * Pokud však typ prvku neodpovídá a zároveň není dosaženo maximálního času či počtu opakování cyklu, postup je zopakován. | ||
informatika/maturita/16a.1422816275.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)
