Algoritmické myšlení je součást obecnějšího informatického myšlení, která se zaměřuje na navrhování algoritmů. 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.
- Zvážení různých přístupů k řešení problému, porovnání efektivity algoritmů.
- Porozumění algoritmu, který vymyslel někdo jiný, a jeho provedení.
- Hledání a opravování chyb.
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ů. Než začneme vymýšlet algoritmy, potřebujeme si umět všímat pravidelností ve světě kolem nás.
- Základy algoritmického myšlení – posloupnost příkazů, cykly, podmínky.
- 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í.

Společná vlastnost: slova (lehké)
34 zadání
Typicky zabere: 7 min
Ukázka
Co mají slova společného?
Meziříčí, náručí, ovčí, bezpečí, výročí
Jaké další slovo se hodí k následujícím?
auto, ponorka, vlak, letadlo
Co mají slova společného?
skupina, projekt, opravdu, vlastně, světový

Číselné řady obrázkově (střední)
39 zadání
Typicky zabere: 5 min
Ukázka



Číselné řady s popisem (lehké)
22 zadání
Typicky zabere: 8 min
Ukázka
1, 1, 2, 1, 2, 3, 1, 2, 3, 4, ...
Střídá se zvyšování o 1 a snižování o 2.
1, 2, 2, 2, 3, 2, 4, 2, 5, ...
Na sudých pozicích je vždy 2. Na lichých pozicích se čísla zvyšují o 1.
1, 2, 4, 5, 7, 8, 10, 11, 13, 14, ...
Přirozená čísla, ve kterých jsou vynechány _.

Slovní vztahy (lehké)
41 zadání
Typicky zabere: 3 min
Ukázka
poslouchat – hudba
číst – ?
auto – volant
koloběžka – ?
Slovensko – Bratislava
Německo – ?

Slovní vztahy (střední)
51 zadání
Typicky zabere: 4 min
Ukázka
stát – hranice
moře – ?
Která dvojice je ve stejném vztahu?
luk – šíp
jablko – ovoce
rajče – ?

Vzory z dlaždic (lehké)
50 zadání
Typicky zabere: 6 min
Ukázka




Posloupnost příkazů (lehké)
53 zadání
Typicky zabere: 3 min
Ukázka




Posloupnost příkazů (střední)
61 zadání
Typicky zabere: 5 min
Ukázka




Posloupnost příkazů (těžké)
61 zadání
Typicky zabere: 6 min
Ukázka




Posloupnosti kouzel (lehké)
40 zadání
Typicky zabere: 6 min
Ukázka




Posloupnosti kouzel (střední)
50 zadání
Typicky zabere: 6 min
Ukázka
Doplňte část kouzla pod kaňkou.



Posloupnosti kouzel (těžké)
46 zadání
Typicky zabere: 4 min
Ukázka




Deaktivace bomby: posloupnosti (lehké)
40 zadání
Typicky zabere: 6 min
Ukázka




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




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




Opakování (lehké)
40 zadání
Typicky zabere: 4 min
Ukázka




Opakování (střední)
53 zadání
Typicky zabere: 5 min
Ukázka
Zjednodušte kód:



Opakování (těžké)
48 zadání
Typicky zabere: 7 min
Ukázka




Opakovací kouzla (lehké)
42 zadání
Typicky zabere: 6 min
Ukázka




Opakovací kouzla (střední)
51 zadání
Typicky zabere: 7 min
Ukázka




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




Deaktivace bomby: opakování (lehké)
40 zadání
Typicky zabere: 5 min
Ukázka




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




Deaktivace bomby: opakování (těžké)
40 zadání
Typicky zabere: 5 min
Ukázka




Podmínky a větvení (lehké)
48 zadání
Typicky zabere: 8 min
Ukázka




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




Podmínky a větvení (těžké)
61 zadání
Typicky zabere: 14 min
Ukázka
Co se vypíše pro x = 1?



Podmíněná kouzla: oblékání příšerek (lehké)
39 zadání
Typicky zabere: 4 min
Ukázka
Doplňte část kouzla pod kaňkou.



Podmíněná kouzla: oblékání příšerek (střední)
43 zadání
Typicky zabere: 8 min
Ukázka




Podmíněná kouzla: oblékání příšerek (těžké)
40 zadání
Typicky zabere: 7 min
Ukázka
Zjednodušte kouzlo:



Deaktivace bomby: podmínky (lehké)
42 zadání
Typicky zabere: 7 min
Ukázka




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




Deaktivace bomby: podmínky (těžké)
50 zadání
Typicky zabere: 5 min
Ukázka




Opakuj dokud (střední)
36 zadání
Typicky zabere: 16 min
Ukázka




Vnořené cykly (střední)
34 zadání
Typicky zabere: 6 min
Ukázka
Zjednodušte kód:



Proměnné: základní principy (lehké)
41 zadání
Typicky zabere: 7 min
Ukázka




Proměnné: základní principy (střední)
51 zadání
Typicky zabere: 7 min
Ukázka




Proměnné: základní principy (těžké)
50 zadání
Typicky zabere: 5 min
Ukázka
Prohodí tento kód hodnoty proměnných?


Proměnná kouzla (lehké)
38 zadání
Typicky zabere: 5 min
Ukázka
Doplňte část kouzla pod kaňkou.



Proměnná kouzla (střední)
45 zadání
Typicky zabere: 7 min
Ukázka




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




Deaktivace bomby: proměnné (střední)
40 zadání
Typicky zabere: 9 min
Ukázka




Cykly s proměnnými (střední)
43 zadání
Typicky zabere: 12 min
Ukázka
Kolik čísel se vypíše?



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




Podmínky s proměnnými (střední)
43 zadání
Typicky zabere: 10 min
Ukázka




Podmínky s proměnnými (těžké)
48 zadání
Typicky zabere: 11 min
Ukázka
Lze takto zjednodušit?



Funkce (střední)
39 zadání
Typicky zabere: 8 min
Ukázka




Funkce (těžké)
49 zadání
Typicky zabere: 9 min
Ukázka




Zobecňování programů (střední)
45 zadání
Typicky zabere: 6 min
Ukázka
Vyberte společné zobecnění těchto programů:



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




Pexeso
Hledání dvojic, které k sobě patří.

Vločky (lehké)
9 zadání
Typicky zabere: 3 min
Ukázka




Kytičky (lehké)
12 zadání
Typicky zabere: 4 min
Ukázka




Náramky (lehké)
10 zadání
Typicky zabere: 4 min
Ukázka




Náramky (střední)
10 zadání
Typicky zabere: 5 min
Ukázka




Zápis klikyháků (lehké)
8 zadání
Typicky zabere: 5 min
Ukázka




Barevné dlaždice (lehké)
7 zadání
Typicky zabere: 4 min
Ukázka



Želví obrázky (střední)
10 zadání
Typicky zabere: 6 min
Ukázka




Želví obrázky (s opakováním) (střední)
8 zadání
Typicky zabere: 7 min
Ukázka



Přesouvání
Přesouvání kartiček na správné místo. Jednoduché ovládání, zajímavé a neotřelé úlohy.

Společná vlastnost: obrázky (lehké)
11 zadání
Typicky zabere: 4 min

Společná vlastnost: slova (lehké)
10 zadání
Typicky zabere: 5 min

Společná vlastnost: příšerky (lehké)
16 zadání
Typicky zabere: 4 min

Trojice (střední)
16 zadání
Typicky zabere: 5 min

Postupná přeměna (lehké)
11 zadání
Typicky zabere: 6 min

Doplňování řad: čísla (lehké)
15 zadání
Typicky zabere: 5 min

Doplňování řad: čísla (střední)
15 zadání
Typicky zabere: 9 min

Doplňování řad: symboly (lehké)
14 zadání
Typicky zabere: 5 min

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

Popis vzorů: Vyšívání (střední)
16 zadání
Typicky zabere: 7 min

Vztahy slov (lehké)
11 zadání
Typicky zabere: 3 min

Kouzelné hůlky (střední)
11 zadání
Typicky zabere: 6 min

Obrázkový mixér (střední)
11 zadání
Typicky zabere: 7 min

Kódy květin (střední)
6 zadání
Typicky zabere: 6 min

Obrázky a vrstvy (lehké)
8 zadání
Typicky zabere: 3 min

Rozklad obrázků (lehké)
14 zadání
Typicky zabere: 5 min

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

Rozklad obrázků (s opakováním) (střední)
10 zadání
Typicky zabere: 7 min

Sběr odpadu (lehké)
10 zadání
Typicky zabere: 4 min

Bloudící myš (lehké)
9 zadání
Typicky zabere: 5 min

Bloudící myš (střední)
9 zadání
Typicky zabere: 6 min

Stavby z kostek (lehké)
11 zadání
Typicky zabere: 6 min

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

Posloupnosti kouzel (lehké)
12 zadání
Typicky zabere: 4 min

Posloupnosti kouzel (střední)
12 zadání
Typicky zabere: 6 min

Sběr vlajek (lehké)
15 zadání
Typicky zabere: 5 min

Sběr vlajek (střední)
15 zadání
Typicky zabere: 4 min

Včelí smyčky (lehké)
14 zadání
Typicky zabere: 5 min

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

Opakovací kouzla (lehké)
8 zadání
Typicky zabere: 4 min

Opakovací kouzla (střední)
8 zadání
Typicky zabere: 5 min

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

Oblékání příšerek (lehké)
10 zadání
Typicky zabere: 4 min

Oblékání příšerek (střední)
8 zadání
Typicky zabere: 6 min

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

Vláček (střední)
22 zadání
Typicky zabere: 11 min

Proměnná kouzla (střední)
16 zadání
Typicky zabere: 6 min

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

Klasifikace (střední)
11 zadání
Typicky zabere: 5 min

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

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

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

Šipkovaná
Šipkovaná je jednoduchá logická úloha, kde tvoříte program pro skřítka pomocí šipek umístěných do lesa. Není to ale zas tak úplně snadné, protože krom šipek jsou ovšem v lese i hřiby, rybníky, teleporty, kouzelné hůlky, vybuchují muchomůrky...
Skřítkova rozcvička
Položte do lesa šipky, aby skřítek došel do svého domečku. Šipek je málo, tak ať vám vystačí.
Sběr hříbků
Než dojde skřítek domů, musí posbírat všechny hříbky.
Skoky
V lese jsou občas rybníčky. Skřítek je zvládne přeskočit, ale musíte mu přistavit na správné místo pružinku.
Víc skřítků
Máme tu několik skřítků a všichni chtějí do domečku. Někteří jsou navíc červení. A nikdo se nesmí srazit!
Pozor na skřeta!
V lese se objevil zlý skřet. Skřítek se musí dostat domů a vyhnout se mu.
Přebarvování
Skřítek se naučil přebarvovací kouzlo, které mu změní barvu kabátku.
Kameny a hůlka
V lese občas překáží velké kameny. Naštěstí tu je kouzelná hůlka, která je odčaruje.
Vybuchující muchomůrka
V lese začaly růst kouzelné muchomůrky. Když kolem nich někdo projde, vybuchnou!
Rotující šipky
Lesní vynálezci vymysleli rotující šipky, které se otočí pokaždé, když kolem nich skřítek projde.
Mizející šipky
Tentokrát tu máme speciální mizející šipky, které jsou jen na jedno použití.
Lesní výpravy I
Lesní výpravy s různými prvky: hříbky, rybníky, několik skřítků…
Teleport
Máme tu další kouzla – tentokrát teleportační brány, které přenesou skřítka z jednoho místa na druhé.
Lesní výpravy II
Pokračování lesních výprav s různými prvky.
Lesní výpravy III
Třetí díl lesních výprav s různými prvky.
Obtížné
A na závěr několik obtížnějších úloh.

Želví grafika
Naprogramujte želvu, aby kreslila pěkné obrázky. Želva rozumí pokynům jako je „jdi dopředu“ či „zatoč doprava“. Programy tvoříte pomocí přetahování grafických bloků. Začněte s jednoduchými obrázky a pokračujte až k fraktálům.
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.
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í
ProgMalování je zábavná kombinace programování a malování. Úkolem je nakreslit zajímavé obrázky pomocí programů, které tvoříte přetahováním připravených bloků.
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
Plošinovky patří ke klasickým počítačovým hrám. V naší Plošinovce však neovládáte postavu herní konzolí, ale programem. Programy se tvoří grafickým programováním a procvičíte si na nich především podmínky.
Rozcvička
Pan Blob se potřebuje dostat ke dveřím. Naučte ho, jakou akci má kdy provést, aby úspěšně splnil svoji misi.
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.
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í.
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í.
Č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).
Č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, ale neumí sbírat mince a vejít do dveří.
Čí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.

Robotanik
Robotanik je programátorská úloha s jednoduchými pravidly, snadným ovládáním a mnoha zajímavými úlohami. Základní úlohy jsou řešitelné i pro úplné programátorské začátečníky. Pokročilé úlohy dají zabrat i zkušeným programátorům a poslouží především jako velmi dobrý trénink rekurze.
Pokud chcete zkusit na rozcvičení něco snadnějšího, zkuste hru Šipkovaná.
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
Naprogramujte želvu, aby kreslila pěkné obrázky. Želva rozumí pokynům jako je „jdi dopředu“ či „zatoč doprava“. Programy tvoříte pomocí jazyka Python 3. Pro rozcvičení můžete použít verzi želví grafiky v grafickém programování.
Zájemci najdou více informací o želví grafice v knížce od jednoho z autorů projektu Umíme programovat.
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...
Kód kostky
Předtím, než se vrhneme na tvorbu vlastních programů, je velmi užitečné si natrénovat čtení a pochopení již vytvořených programů. Kód kostky je elegantní hra zaměřená přesně na tuto dovednost. Madam Kostka a pan Kostka vyráží na procházku po herním plánu. Postupují přesně podle zadaných instrukcí. Vyzkoušejte, zda jim rozumíte!
Toto nové cvičení je zatím v testovacím provozu. Bude ještě docházet k úpravám a doplňování příkladů.
Rozcvička kostek
Madam Kostka a pan Kostka vyráží na procházku po herním plánu. Postupují ovšem přesně podle instrukcí.
Opakování
Pro stručný zápis delší procházky využijeme pokyn opakuj.
Procházky s rozhodováním
Průběh procházky může záviset na barvě pole nebo na počtu teček kostky.
Procházky s rozhodováním II
Nyní stojí kostky před složitějšími rozhodnutími.
Opakuj dokud
Doposud jsme měli cykly se zadaným počtem opakování. Nyní využijeme opakování podle podmínky.
Opakované rozhodování
Když zkombinujeme opakování a podmínky, vzniknou již zajímavé trasy procházek.
Dvojité opakování
Nyní máme programy, ve kterých se vyskytuje opakování uvnitř opakování. Z toho už se občas panu Kostkovi motá hlava.
Výpravy kostek
Kostky vyráží na výpravy, při kterých si vyzkouší příkazy různého typu a trochu záludnější programy.
Funkce kostky
Nyní naučíme kostky nové pokyny. A tyto pokyny hned využijeme pro stručný zápis zajímavé procházky.
Funkce s parametry
Nyní kostky naučíme funkce, jejichž význam záleží na vstupním parametru.