Algoritmické myšlení a blokové programování

Algoritmické myšlení lze v procvičovat různými způsoby. Základní cvičení slouží k seznámení s jednotlivými koncepty (posloupnosti příkazů, cykly, podmínky, proměnné), další cvičení se zaměřují na interaktivní čtení kódu nebo na algoritmické dovednosti bez programování. Těžištěm obsahu je pak blokové programování.

Následující tabulka nabízí základní přehled cvičení s jejich stručným popisem a přehled běžných případů užití. Kolonka „typický čas“ udává čas řešení jednoho zadání. U cvičení Rozhodovačka, Přesouvání a Označování žáci řeší vždy celou sadu položek podobného typu, splnění celé sady většinou trvá alespoň 3 minuty. U každého typu cvičení jsou k dispozici desítky nebo i stovky zadání.

Základní cvičení – procvičování dílčích konceptů

Následující cvičení poskytují seznámení s jednotlivými koncepty v rámci algoritmického myšlení. Mohou sloužit jako úvodní seznámení, rozcvička před vlastní tvorbou programů, také mohou ujasnit miskoncepce. K dispozici jsou zejména tyto typy cvičení:

  • Rozhodovačka – Obsahuje větší množství stručných položek, uživatel vybírá ze dvou možností tu správnou.
  • Přesouvání – V rámci něj uživatel umisťuje do plátna chybějící části (např. část kódu či výsledku programu).
  • Označování – Uživatel vybírá na plátně oblasti splňující podmínku (související např. s tím, jak bude program probíhat).

U výše uvedených cvičení jsou často k dispozici různé motivy: jeden konkrétní koncept lze procvičit jak základní cestou (znázorněné bloky s čísly, písmeny či obrázky), tak např. na motivu cesty vlaku, kouzel či deaktivace bomby.

Různé motivy lehkých Rozhodovaček na téma posloupnost příkazů.

Některé jednotlivé koncepty lze procházet i pomocí cvičení Pexeso či Krok po kroku.

Příprava na blokové programování

Šipkovaná

Šipkovaná je jednoduchá logická úloha, která však procvičuje programátorský styl myšlení a může posloužit jako dobrá rozcvička před blokovým programováním. Podobně jako v Robotanikovi i zde se program tvoří pomocí šipek, tentokrát se však šipky umisťují přímo do herního plánu. Díky tomu je význam příkazů a tvorba programu velmi intuitivní. Hra je použitelná i pro děti, které ještě ani neumějí číst. Hra nicméně obsahuje i náročnější prvky (souběžnost, změna stavové informace), takže nabízí zajímavé úlohy i pro starší řešitele.

Kód kostky

Před samotnou tvorbou či úpravou kódu v rámci blokového programování je užitečné umět kód číst. Ve cvičení Kód kostky hráč ovládá postavu v herní mřížce dle předem připravených instrukcí. Cvičení se dotýká prakticky všech dostupných konceptů: od základního pořadí příkazů až po proměnné či funkce (bez parametrů i s nimi). K dispozici jsou i sady s programem psaným v Pythonu.

Blokové programování

Při výuce základů programování a algoritmického myšlení se dnes běžně používá blokové programování. Jde obvykle o předstupeň před programováním v běžných textových programovacích jazycích (např. Python). Může také být použito pro procvičení algoritmického myšlení, aniž by následoval přechod na textový programovací jazyk. Blokové programování se využívá především ve spojení s mikrosvěty: jednoduché prostředí (pravidelná mřížka, 2D plátno), ve kterém se pohybuje agent ovládaný programem (robot, želva, malíř…).

v rámci blokového programování využívá standardní znázornění a ovládání (typicky za pomoci prostředí Blockly), je tedy kompatibilní s aktivitami v jiných prostředích. Blokové programování v má následující specifika a silné stránky:

  • Úlohy s jednoznačným zadáním, které jsou automaticky opravované – žáci tak mají konkrétní cíl a jasnou zpětnou vazbu, zda cíle dosáhli.
  • Několik vzájemně se doplňujících forem procvičování a mikrosvětů, díky čemuž si žáci mohou každé téma procvičit různými způsoby.
  • Velmi rozsáhlá sbírka příkladů (stovky zadání).
  • Důraz na práci s obtížností, systematický přístup ke stupňování obtížnosti pomocí postupného odebírání nápovědných prvků – žáci přechází od jednoduchého výběru ze dvou možností přes drobné úpravy programů až ke zcela samostatné tvorbě.

Želví grafika

Želví grafika umožňuje pomocí napsaného programu vykreslovat elegantní obrázky. Ty kreslí virtuální želva ovládaná jednoduchými příkazy pro pohyb (posun vpřed, otočení). Tvorba programu je interaktivní, žáci si mohou svoje programy průběžně zkoušet a ladit.

Želví grafika má přirozený přesah do geometrie, především do práce s úhly. Základní princip želví grafiky je velmi intuitivní a názorný. Cvičení tak může posloužit jako dobrá pomůcka i pro žáky, kteří úhly ještě důkladně neovládají – v želví grafice lze do velké míry použít k práci s úhly přístup „pokus & omyl“, kterým si žáci postupně budují intuici.

ProgMalování

V rámci ProgMalování se malíř pohybuje po plátně a dělá „razítka“ (základní tvary jako čtverec, kruh, obdélník a několik obrázků postav). Cvičení je podobné želví grafice. Rozdíl je v tom, že se malíř pohybuje po plátně ve čtyřech směrech, bez použití úhlů. Cvičení klade důraz na správné pořadí akcí – díky překrývání útvarů lze ze základních tvarů vytvářet složitější obrazce.

I u této úlohy je přirozený přesah do geometrie, tentokrát především k tématu souřadnic a vlastností základních útvarů.

Plošinovka

Cvičení Plošinovka vychází ze stejnojmenného klasického žánru počítačových her, ve kterém se postava pohybuje pomocí skoků ve světě vertikálně uspořádaných plošin. Má za úkol vyhýbat se překážkám, sbírat mince a dojít k východu. V naší variantě je postava ovládaná programem. Postava se automaticky posunuje vpřed, cvičení je zaměřeno na využití podmínek.

Stavitel

Základ úlohy Stavitel tvoří „postava na mřížce“, což je jedno z často využívaných témat pro procvičování blokového programování. Úkolem je napsat program pro stavitele, který se pohybuje po krajině, sbírá materiál a staví stavby. Úloha je zaměřena především na procvičení opakování, podmínek a jejich vzájemné kombinování (cyklus „opakuj dokud“, použití podmínek v rámci cyklu).

RoboAréna

V této úloze jde také o ovládání postavy na mřížce. Úloha je netypická tím, že nejde o splnění zadaného úkolu, ale o poražení soupeřících robotů. RoboAréna je tedy vhodná především jako hra více hráčů přímo v hodině. Lze ji nicméně použít i pro individuální řešení, kdy hráč hraje proti „umělé inteligenci“ (tu představují předpřipravené strategie, které jsou přiměřeně inteligentní, aby bylo reálné je porazit).

Robotanik

Robotanik využívá zjednodušenou verzi uživatelského prostředí, ve kterém se program tvoří jako sekvence šipek. Pomocí podbarvení lze vyjádřit podmínky. Hlavní důraz je u této úlohy na rozklad programu na dílčí funkce. Funkce se mohou vzájemně volat, čímž lze simulovat cykly a realizovat i složitou funkcionalitu pomocí rekurze.

Základní princip cvičení je v různých podobách hojně využívaný. Známá je například hra LightBot, další variace lze najít např. v rámci Hour of Code. Zpracování na klade důraz na dostatečně bohatou sbírku příkladů odstupňovanou podle obtížnosti. V úvodních zadáních se tvoří jednoduché sekvence kroků, které jsou zvládnutelné i pro mladší žáky. Poslední úlohy pak představují náročný oříšek i pro talentované programátory.

Koncepty algoritmického myšlení

Základní pojetí výuky je vhodné organizovat podle konceptů algoritmického myšlení a k nim vybírat jednotlivá cvičení. Žádné cvičení není úplně univerzální, různé formy se vzájemně doplňují a je výhodné je kombinovat. Následující tabulka udává zjednodušeně základní přehled toho, na co jsou jednotlivá cvičení vhodná.

Význam a pořadí příkazů

Úplné základy tvorby programů představují elementární příkazy a jejich řazení. Zde dobře poslouží jako rozcvička Šipkovaná a Rozhodovačka. Důležitým aspektem k procvičení je význam pořadí akcí, ten pěkně ilustruje zejména ProgMalování.

Opakování, cykly

Opakování a cykly tvoří těžiště procvičování pomocí blokového programování. Cykly lze pomocí bloků velmi snadno a přirozeně vyjádřit. Současně jde o téma, které již není úplně jednoduché, a má tedy smysl jej s žáky důkladně procvičovat. Typické problematické partie:

  • Rozpoznání a zápis vzorů – abychom využili cyklus, musíme najít vzor, který se pravidelně opakuje, a umět jej zapsat.
  • Zápis a interpretace opakování – především aspekt „co je součást cyklu, co patří mimo cyklus“.
  • Vnořené cykly – zejména v želví grafice lze pomocí vnořených cyklů vytvářet elegantní obrazce, základní použití vnořených cyklů je zde intuitivní, ale jejich důkladné ovládnutí vyžaduje trénink.

Rozhodovačka se zaměřuje cíleně na ujasnění častých miskoncepcí, např. ohledně úrovní zanoření.

Podmínky

Na podmínky je speciálně orientované cvičení Plošinovka. Z dalších interaktivních úloh se podmínky vyskytují v RoboAréně, Robotanikovi a Šipkované. Základní procvičení pak nabízí Rozhodovačka a Přesouvání.

Proměnné

Pomocí základních cvičení s výběrem možností je k dispozici procvičování sloužící k ujasnění základního mentálního modelu proměnné. U interaktivních úloh se použití proměnných nachází na hraně toho, co je rozumné zpracovávat formou blokového programování – složitější manipulace s proměnnými je formou bloků mírně nepraktická. V našich příkladech se soustředíme na základní použití proměnných pomocí několika elementárních příkazů (nastavit hodnotu, zvýšit hodnotu). Ve spojení s kreslením se i pomocí těchto základních příkazů dají tvořit zajímavé obrázky.

Funkce, rozklad na podproblémy

Podobně jako u proměnných i u tématu funkcí není blokové programování pro zpracování úplně ideální – tvorba a editace programů s funkcemi pomocí bloků je občas nepřehledná. Proto se u tohoto tématu soustředíme především na to, aby žáci pracovali s předpřipravenými materiály.

  • Rozhodovačka – Uvažování o připravených funkcích, doplňování částí kódu.
  • ProgMalování – Předpřipravené funkce z bloků, které žáci dále upravují či využívají ve svých programech (nemusí řešit samotnou definici funkce pomocí bloků).
  • Želví grafika – Silný aspekt „rozklad na podproblémy“, který je však typicky zapisován pomocí vnořených cyklů (bez funkcí).
  • Robotanik – Cvičení je založeno na využití funkcí; ty jsou sice hodně jednoduché, cvičení však dobře procvičuje princip „rozklad na podproblémy“.

Ladění programů

Ladění programů a testování jsou procvičována samovolně při použití libovolného z interaktivních cvičení: žáci při tvorbě programů téměř vždy potřebují hledat dílčí chyby a opravovat je. Pro cílenější procvičení těchto dovedností máme připravené sady zadání, které jsou specificky cílené na ladění. V těchto úlohách dostanou žáci jako součást zadání i program, který zadanou úlohu téměř řeší. V programu jsou však jednotlivé drobné chyby, které je nutno nalézt a opravit.

Mnoho žáků k ladění přistupuje metodou „pokus-omyl“ (to se ostatně týká nejen žáků, v programátorské hantýrce se toto chování označuje jako shotgun debugging). Je tedy vhodné aktivně vést žáky k alespoň trochu systematickému postupu, např. k využití krokování a k explicitnímu pojmenování zdrojů chyb.

Doporučení podle věku

Následující tabulka udává orientační přehled vhodnosti jednotlivých cvičení podle ročníků studia. Blokové programování je ideální především pro 2. stupeň ZŠ. Pro žáky na 1. stupni lze doporučit především cvičení Šipkovaná; i u dalších cvičení jsou však úvodní sady pro mladší žáky většinou dobře řešitelné.

Blokové programování je vhodné i pro žáky středních škol, poslouží například jako dobrá rozcvička před programováním v Pythonu nebo před řešením otevřených úloh s roboty. Všechna cvičení navíc obsahují i těžší zadání, u kterých se i zkušený programátor musí zamyslet. Ani středoškolští žáci se rozhodně při řešení nudit nebudou.

Výukové moduly

Pokud uvítáte tipy ke konkrétnímu pořadí, v jakém koncepty procházet a která cvičení při tom používat, prozkoumejte předpřipravené moduly. Orientační mapování na doporučené ročníky najdete v přehledu níže.

Blokové programování I (posloupnosti a cykly)5.–6. ročník
Blokové programování II (podmínky, ladění)5.–7. ročník
Blokové programování III (cykly a podmínky)6.–8. ročník
Blokové programování IV (proměnné)7. ročník ZŠ – 1. ročník SŠ
Blokové programování V (funkce)8. ročník ZŠ – 1. ročník SŠ
Shrnutí blokového programování a ukázka Pythonu9. ročník ZŠ – 2. ročník SŠ

Návaznosti

Obsah předmětu informatika na je vhodný pro úvodní seznámení s algoritmickým myšlením a blokovým programováním. K dispozici je dostatek velmi jednoduchých úloh, které jsou určeny úplným začátečníkům. I u složitějších konceptů jsou k dispozici úkoly s jasným cílem, který je současně pro žáky dosažitelný. Takto si mohou žáci vybudovat dobré základy, na které je pak možné následně navázat dalšími aktivitami, které dají žákům prostor řešit více otevřené a kreativní projekty.

Vymýšlení vlastního zadání samotnými žáky je zajímavé a užitečné: vlastní projekty mohou být motivující, žáci při nich trénují další užitečné dovednosti (např. formulování zadání, organizování práce, vyhodnocování postupu). Vlastní otevřená zadání ale přináší i rizika: u programátorských úloh není snadné najít zadání adekvátní obtížnosti. Pokud si žáci sami vymyslí úkol, snadno se stane, že bude příliš ambiciózní a nepodaří se jim ho naplnit, což může vést k demotivaci. Přechod k otevřeným projektům je tedy dobré neuspěchat. Průprava na úkolech s jasným zadáním žákům pomůže získat odhad toho, co je v dosahu jejich schopností.

Scratch

Mezi nejznámější prostředí pro blokové programování patří Scratch (a jeho zjednodušená verze ScratchJr použitelná i s malými dětmi). Scratch nabízí velmi širokou škálu příkazů a prostředí. Jeho silnou stránkou je především tvorba interaktivních animací, příběhů a jednoduchých her.

Robotika

Blokové programování lze využít i k programování fyzických robotů. Po koncepční stránce je programování velmi podobné programování virtuálních agentů v mikrosvětech (jak je použito ve cvičeních v ) a nepřináší žádné zásadní nové prvky. Interakce s fyzickými roboty je však pro mnoho žáků motivující a slouží jako dobrý doplněk cvičení s virtuálními roboty.

Ozobot

Micro:bit

NAPIŠTE NÁM

Děkujeme za vaši zprávu, byla úspěšně odeslána.

Napište nám

Nevíte si rady?

Před položením dotazu si prosím projděte návody:

Prosíme, nezasílejte dotazy na prozrazení řešení úloh či vysvětlení postupu. Pokud hlásíte chybu, upřesněte prosím, v čem přesně spočívá a připojte snímek obrazovky.

Čeho se zpráva týká?

Vzkaz Hlášení chyby Obsah Ovládání Přihlášení Licence