Algoritmické myšlení – 3. střední škola
MTLAlgoritmické myšlení je součást obecnějšího informatického myšlení, která se zaměřuje na navrhování algoritmů.
Co zahrnuje algoritmické myšlení?
Algoritmus je přesně daný postup, kterým řešíme určitý problém. Algoritmické myšlení se typicky využívá při programování, tj. při zápisu algoritmů, které provádí počítač. Má však svoje využití i v běžném životě: typickými příklady jednoduchých algoritmů jsou recepty na vaření nebo instrukce k sledování cesty z jednoho místa na druhé.
Algoritmické myšlení zahrnuje nejen tvorbu algoritmu, ale i další související kroky:
- Porozumění problému, jasná formulace problému.
- Abstrakce, rozklad problému na podčásti, odlišení podstatných prvků od těch, které jsou méně důležité.
- Zvážení různých přístupů k řešení problému, porovnání efektivity algoritmů, optimalizace postupů.
- Porozumění algoritmu, který vymyslel někdo jiný, a jeho provedení.
- Hledání a opravování chyb.
Algoritmické myšlení na Umíme informatiku
V rámci Umíme informatiku dělíme toto téma na několik podtémat:
- Rozpoznávání vzorů – vyhledávání společných vzorů a vlastností, vzory v posloupnostech, popis vzorů
- Posloupnosti příkazů – skládání algoritmů z více příkazů
- Cykly a podmínky – opakované a podmíněné vykonávání příkazů
- Proměnné – práce se stavovou informací, ukládání hodnot do proměnných
- Funkce a zobecňování – zobecňování (abstrakce) vzorů, rozklad (dekompozice) problémů na části, použití funkcí
- Vývoj programů – ladění, hledání chyb
Příklady v této části staví především na „mikrosvětech“, což jsou jednoduchá, intuitivní prostředí s omezeným množstvím příkazů a současně zajímavou dynamikou. Jsou začleněny jak variace na často používané principy (želví grafika, robot na mřížce), tak originální variace jako kouzla nebo deaktivace bomby.
Pro zápis programů zde využíváme blokové programování, k jehož použití nabízíme samostatný metodický text pro učitele.
Rozhodovačka
Rychlé procvičování výběrem ze dvou možností.
Posloupnosti kouzel (těžké)
zadání: 48
Typicky zabere: 5 min

Deaktivace bomby: posloupnosti (střední)
zadání: 46
Typicky zabere: 6 min

Deaktivace bomby: posloupnosti (těžké)
zadání: 48
Typicky zabere: 7 min

Vstup a výstup (střední)
zadání: 54
Typicky zabere: 8 min

Vnořené bloky (střední)
zadání: 38
Typicky zabere: 3 min

Vnořené bloky (těžké)
zadání: 40
Typicky zabere: 4 min

Opakuj N× (střední)
zadání: 50
Typicky zabere: 5 min

Opakuj N× (těžké)
zadání: 48
Typicky zabere: 6 min

Opakovací kouzla (těžké)
zadání: 43
Typicky zabere: 5 min

Deaktivace bomby: opakování (střední)
zadání: 50
Typicky zabere: 6 min

Deaktivace bomby: opakování (těžké)
zadání: 56
Typicky zabere: 8 min

Podmínky a větvení (střední)
zadání: 60
Typicky zabere: 7 min

Podmínky a větvení (těžké)
zadání: 58
Typicky zabere: 11 min

Podmíněná kouzla: oblékání příšerek (střední)
zadání: 40
Typicky zabere: 6 min

Podmíněná kouzla: oblékání příšerek (těžké)
zadání: 44
Typicky zabere: 8 min

Deaktivace bomby: podmínky (střední)
zadání: 53
Typicky zabere: 5 min

Deaktivace bomby: podmínky (těžké)
zadání: 44
Typicky zabere: 6 min

Deaktivace bomby: rozhodovací stromy (střední)
zadání: 40
Typicky zabere: 6 min

Opakuj dokud (těžké)
zadání: 50
Typicky zabere: 8 min

Deaktivace bomby: opakuj dokud (střední)
zadání: 41
Typicky zabere: 11 min

Vláček: opakované rozhodování (střední)
zadání: 35
Typicky zabere: 8 min

Vnořené cykly (střední)
zadání: 34
Typicky zabere: 6 min

Vnořeně opakovací kouzla (střední)
zadání: 40
Typicky zabere: 7 min

Deaktivace bomby: vnořené cykly (střední)
zadání: 40
Typicky zabere: 6 min

Cykly a podmínky: mix (střední)
zadání: 190
Typicky zabere: 8 min

Cykly a podmínky: mix (těžké)
zadání: 156
Typicky zabere: 10 min

Kouzla: mix (střední)
zadání: 128
Typicky zabere: 6 min

Kouzla: mix (těžké)
zadání: 87
Typicky zabere: 6 min

Deaktivace bomby: mix (střední)
zadání: 184
Typicky zabere: 9 min

Deaktivace bomby: mix (těžké)
zadání: 100
Typicky zabere: 10 min

Proměnné: základní princip (střední)
zadání: 44
Typicky zabere: 5 min

Proměnné: základní princip (těžké)
zadání: 44
Typicky zabere: 5 min

Proměnné: obecné principy (střední)
zadání: 50
Typicky zabere: 6 min

Proměnné: obecné principy (těžké)
zadání: 51
Typicky zabere: 7 min

Proměnná kouzla (těžké)
zadání: 43
Typicky zabere: 7 min

Deaktivace bomby: proměnné (střední)
zadání: 48
Typicky zabere: 6 min

Deaktivace bomby: proměnné (těžké)
zadání: 45
Typicky zabere: 6 min

Výrazy s proměnnými (střední)
zadání: 49
Typicky zabere: 5 min

Výrazy s proměnnými (těžké)
zadání: 48
Typicky zabere: 5 min

Cykly s proměnnými (střední)
zadání: 43
Typicky zabere: 9 min

Cykly s proměnnými (těžké)
zadání: 51
Typicky zabere: 11 min

Podmínky s proměnnými (střední)
zadání: 41
Typicky zabere: 8 min

Podmínky s proměnnými (těžké)
zadání: 50
Typicky zabere: 9 min

Typy proměnných (střední)
zadání: 66
Typicky zabere: 5 min

Typy proměnných (těžké)
zadání: 41
Typicky zabere: 5 min

Pojmenování proměnných (střední)
zadání: 48
Typicky zabere: 4 min

Pojmenování proměnných (těžké)
zadání: 46
Typicky zabere: 5 min

Použití proměnných (střední)
zadání: 61
Typicky zabere: 9 min

Funkce bez parametrů (těžké)
zadání: 63
Typicky zabere: 6 min

Funkce s parametry (lehké)
zadání: 32
Typicky zabere: 5 min

Funkce s parametry (střední)
zadání: 41
Typicky zabere: 9 min

Funkce s parametry (těžké)
zadání: 50
Typicky zabere: 12 min

Zobecňování programů (střední)
zadání: 45
Typicky zabere: 7 min

Rozklad programů (střední)
zadání: 57
Typicky zabere: 11 min

Přesouvání
Přesouvání kartiček na správné místo. Jednoduché ovládání, zajímavé a neotřelé úlohy.
Doplňování řad: čísla (těžké)
zadání: 14
Typicky zabere: 9 min

Doplňování řad: geometrické útvary (střední)
zadání: 14
Typicky zabere: 7 min

Rozklad obrázků (střední)
zadání: 14
Typicky zabere: 7 min

Stavby z kostek (střední)
zadání: 11
Typicky zabere: 6 min

Včelí smyčky (střední)
zadání: 14
Typicky zabere: 8 min

Sběr vlajek: podmínky (střední)
zadání: 13
Typicky zabere: 5 min

Rozhodovací stromy (lehké)
zadání: 9
Typicky zabere: 5 min

Žebřík abstrakce (střední)
zadání: 16
Typicky zabere: 5 min

Obrázkové funkce (střední)
zadání: 8
Typicky zabere: 6 min

Vývojové diagramy: úpravy textu (střední)
zadání: 7
Typicky zabere: 6 min

Vývojové diagramy: proměnné a čísla (střední)
zadání: 12
Typicky zabere: 8 min

Označování
V zadaném obrázku či textu máte za úkol označit všechny oblasti, které splňují určitou vlastnost.
Průzkum vesmíru: proměnné (střední)
zadání: 52
Typicky zabere: 5 min

Vybarvování: cykly s proměnnými (střední)
zadání: 39
Typicky zabere: 5 min

Vybarvování: podmínky s proměnnými (střední)
zadání: 31
Typicky zabere: 5 min

Vybarvování: funkce s parametry (střední)
zadání: 41
Typicky zabere: 5 min

Vybarvování: rekurze a fraktály (střední)
zadání: 23
Typicky zabere: 5 min

Pexeso
Hledání dvojic, které k sobě patří.
Knoflíky a nitě (střední)
zadání: 8
Typicky zabere: 4 min

Proměnné: obecné principy (střední)
zadání: 9
Typicky zabere: 6 min

Typy proměnných (střední)
zadání: 8
Typicky zabere: 3 min

Abstrakce příšerek (střední)
zadání: 7
Typicky zabere: 3 min

Krok po kroku
Doplňování jednotlivých kroků v rozsáhlejším postupu.
Opakuj N× (střední)
zadání: 10
Typicky zabere: 5 min

Podmínky a větvení (střední)
zadání: 10
Typicky zabere: 7 min

Opakuj dokud (střední)
zadání: 11
Typicky zabere: 7 min

Proměnné: obecné principy (střední)
zadání: 8
Typicky zabere: 6 min

Funkce s parametry (střední)
zadání: 10
Typicky zabere: 8 min

Ladění programů s proměnnými (střední)
zadání: 10
Typicky zabere: 9 min

Úprava programů s proměnnými (střední)
zadání: 16
Typicky zabere: 8 min

Doplňování textu
Krátké texty, do kterých doplňujete na vybraná místa správnou variantu ze dvou možností.
Proměnné: obecné principy (střední)
zadání: 11
Typicky zabere: 7 min

Pojmenování proměnných (střední)
zadání: 8
Typicky zabere: 4 min

Použití proměnných (střední)
zadání: 7
Typicky zabere: 5 min

Psaná odpověď
Cvičení, ve kterém píšete odpověď na klávesnici.
Vzory v posloupnostech (těžké)
zadání: 21
Typicky zabere: 7 min

Želví grafika
Vykreslování obrázků želví grafikou za využití blokového programování.
Základy
Pro začátek naučíme želvu základní příkazy pro posun a zatáčení a nakreslíme s ní pár jednoduchých obrazců. Pokud si sami potřebujete ujasnit, jak fungují úhly, zkuste nejdřív pexeso na úhly.
Obrázky s opakováním
Přidáme želvě možnost opakovat příkazy, díky čemuž zvládne vykreslit už trochu zajímavější obrázky.
Kreslení
Aby to kreslení nebylo tak fádní, naučíme želvu malovat barevně a zvedat štětec.
Kreslení II
A teď si zkusíme nakreslit pár obrázků z (želvího) života. Kreslení těchto obrázků není sice úplně jednoduché, ale nevyžaduje žádný složitý nápad.
Vzory s opakováním
Když správně použijete vnořené opakování, želva dokáže vykreslit zajímavé obrazce.
Želva s limitem
V této sadě máte za úkol psát pro želvu krátké programy – každá úloha má limit na počet příkazů. Dokážete najít ten správný, stručný zápis programu?
Vzory s opakováním II
Pár dalších vzorů s pravidelným opakováním. Některé vypadají komplikovaně, ale jdou všechny vykreslit snadno. Jen je potřeba se na ně správně podívat.
Proměnné
Naučíme želvu používat proměnné a ta nám díky tomu nakreslí pěkné spirály.
Proměnné II
Složitější příklady s proměnnými.
Ladění obrázků
V této sadě máte připravené programy, které jsou skoro správně. Ale jenom skoro. Zkuste v nich najít chybu a opravit ji.
Úprava programů
V této sadě máte k dispozici hotové řešení, které je ale nepěkné. Úkolem je program vylepšit, aby byl stručnější a vešel se do limitu na počet příkazů.
Správné úhly
Želva zvládne nakreslit pěkné hvězdy a další obrazce. Musíte jí ale říct, o jaký úhel má přesně zatočit. Zkuste ten správný úhel nehádat, ale vypočítat.
Želva s limitem II
Druhá, náročnější sada s limity na počet příkazů.
Záludné
Směsice těžších úloh. Jdou často řešit krátkým programem, ale může k tomu být potřeba ten správný nápad.
Želví experimentárium
Na závěr tu máme úlohy „na hraní“. U těchto úloh není žádné jasné zadání k vyřešení. Máte připravený program, se kterým můžete experimentovat.
ProgMalování
Tvorba obrázků skládáním základním tvarů (např. kruh, čtverec), využití blokového programování.
Skládání tvarů
Skládáním základních tvarů se dají vykreslit zajímavé geometrické obrazce. Zvlášť když zapojíme speciální inverzní štětec.
Skládání tvarů II
Dokážete se na útvary správně podívat a poskládat je ze základních?
Malovací rozcvička
Sada příkladů na rozcvičení a vyzkoušení ovládání.
Obrázky
Kreslení obrázků pomocí základních operací. Bude potřeba se trochu zamyslet nad správným pořadím...
Obrázky II
Trochu rozsáhlejší obrázky. Nevyžadují žádný velký nápad, jen trochu důslednosti.
Vzory s opakováním I
Zde máme navíc příkaz pro opakování, který využijeme pro vykreslování řad a vzorů.
Vzory s opakováním II
Pokročilejší sada využívající opakování.
Proměnné
A teď si přidáme proměnné, což dohromady s opakováním umožňuje dělat nové zajímavé vzory.
Funkce
Pomocí funkcí můžeme vytvořit nové vzory a umisťovat je na různá místa na plátně.
Ladění obrázků
Důležitou součástí programování je ladění, tedy hledání chyb a jejich opravování. V této sadě si to můžete natrénovat: dostanete připravený program a jen ho musíte mírně doladit.
Záludné
Sbírka náročnějších úloh na závěr.
Plošinovka
Ovládejte skákající postavu pomocí blokového programování.
Čarování
Pan Blob umí kouzlit! Dokáže třeba odčarovat všechny plošinky s trávou.
Duch
Pan Blob se dokáže proměnit na ducha. Jako duch dokáže přejít přes nebezpečné ostny nebo pavouky, ale neumí sbírat mince.
Interakce
Vytvořte si vlastní pravidla hry a pak si hru zahrajte! V této sadě pan Blob dokáže reagovat nejen na prvky na plánu, ale i na kliknutí.
Interakce a střílení
Vytvořte si vlastní střílečku! Za využití klikání pomozte panu Blobovi překonat pavouky.
Interakce a čarování
Pan Blob bude čarovat a vy mu u toho můžete pomoct klikáním ve správnou chvíli.
Podmínky: základy
Pan Blob je inteligentní a nemusí u každého kaktusu dělat to stejné. Může se rozhodnout podle toho, zda kaktus roste na trávě, nebo písku.
Pavouci a střely
Pozor, některé plošinky hlídají obří pavouci. Pan Blob je však umí sestřelit.
Rozšířené podmínky
Aby se pan Blob mohl lépe rozhodovat, naučíme ho nové podmínky na směr chůze a počet mincí.
Interakce a podmínky
Nyní se pan Blob pustí do průzkumu záludnějších plošinových světů, na což se bude hodit využít podmínky i událost klikání.
Duch a podmínky
Pan Blob se opět potřebuje měnit v ducha, tentokrát ale jen za vhodných podmínek.
Čarování s podmínkami
Nyní pan Blob bude potřebovat jak čarování, tak podmínky.
Kombinace podmínek
V této sadě využijeme kombinace podmínek (logické spojky, vnořené podmínky).
Čítače
Pan Blob umí i počítat. Sice jen po jedné, ale i to stačí.
Záludné
Výběr těžších úloh. Některé jdou vyřešit i jednoduchým programem, nemusí být ale snadné to správné řešení najít.
Stavitel
Pomocí blokového programování vytvořte program pro stavitele Standu.
Základy stavitelství
Stavitel Standa se představuje a natrénuje si základní akce (chůze, přesun materiálu, stavění, kácení).
Stavby s plánováním
V této sadě čekají Standu úkoly jen za využití základních příkazů. Postup je však potřeba dobře naplánovat, aby byl efektivní.
Stavby s opakováním
Standa je pracovitý a dokáže toho postavit hodně. Pro zadávání úkolu se nám bude hodit příkaz opakuj
.
Stavby s opakováním: těžší
Úkoly využívající jen základní cyklus opakuj
. Je ale potřeba to dobře vymyslet.
Opakuj dokud
Tentokrát vyzkoušíme formu příkazu opakuj
s využitím podmínek.
Opakuj dokud: těžší
Mírně náročnější úkoly využívající cyklus opakuj dokud
.
Opakování a podmínky
Standu čekají náročnější stavební úkoly, bude se muset opakovaně rozhodovat podle aktuální situace v terénu.
Opakování a podmínky: těžší
Vnořené cykly
Funkce bez parametrů
Rekurze
Bonusová sada, ve které nejsou dostupné bloky pro opakování. Místo toho je potřeba vhodně využít rekurzivní funkce (funkce, které volají sami sebe).
Ladění programů
V této sadě jsou připravené programy, které jsou skoro správně. Jsou v nich drobné chyby, které máte za úkol najít a opravit ji.
Záludné
Robotanik
Jednoduché grafické ovládání, zapeklité programátorské úlohy.
Trénink
Vyzkoušejte si základní ovládání Robotanika.
Lehké
Sada úloh, které zvládne s trochou přemýšlení vyřešit i programátorský nováček.
Středně těžké
U těchto úloh už se budete muset trochu víc zamyslet, ale nejsou v nich ještě žádné záludné finty.
Těžké
Tady už to začíná být komplikovanější. U těchto příkladů už je často potřeba využít naplno princip rekurze (zanořování a vynořování z funkcí).
Opravdová výzva
Tyto úlohy už mohou dát zabrat i zkušenému programátorovi.
Python želva
Tvorba programů v Pythonu, kreslení obrázků želví grafikou.
Rekurze a fraktály
Náročné, bonusové téma pro pokročilé. Za využití rekurze můžeme pomocí želví grafiky kreslit elegantní fraktály. Jde to často krátkým programem, který však vůbec není lehké vymyslet...