Článek
Jak vlastně fungují počítače? Pokud byste na tuto častou dětskou otázku měli odpovědět vážně, řeč rychle přijde na programování. A než složitě popisovat nějaké abstraktní pojmy, je jednodušší si to vyzkoušet.
Navíc se nám to všem bude hodit, bez ohledu na to, čím se živíme. Programování totiž není jen úkolování počítače. Je to způsob, jak si stanovit cíl a popsat jednotlivé úkony nutné k jeho dosažení. Což je schopnost, kterou se vyplatí trénovat. Zvláště v éře, kdy umělá inteligence otevře programování mnohem širšímu okruhu lidí.
Jednoduchý začátek
Jedním z nejlepších nástrojů pro úplné začátečníky je programovací jazyk Scratch. Vyvinuli jej v Media Lab na americkém MIT a výborně se hodí pro vysvětlení základních i pokročilejších principů programování.
Pro úplně nejmenší uživatele – řekněme od tří do sedmi let – je tu verze Scratch Junior, kterou s dětmi spustíte na tabletu nebo na telefonu (tablet je ale pro dětské prstíky pohodlnější). Pro ovládání není vůbec potřeba umět číst nebo psát, stačí orientovat se v obrázcích a hodí se znát číslice.
Po otevření nového projektu se vám ukáže hlavní rozhraní, ve kterém budete programovat:
Náš první projekt bude jednoduchý. Naučíme se zadávat postavičkám sekvenci příkazů. Dětem to nejčastěji vysvětluji jako recept, podle kterého pak počítač „vaří“ výsledek.
Napřed seženeme ingredience: tedy postavičky, objekty, scény, zvuky atd. A potom vytvoříme návod, podle kterého má počítač s těmito přísadami pracovat. Úkoly zadáváme pomocí příkazů, které mají podobu dílků skládačky. Jejich sestavováním za sebou určujeme jejich sekvenci. Podívejte se na návod ve videu:
Kočička – hlavní postavička našeho jednoduchého příběhu – přijde ke klukovi, ten nadskočí a kočička se zase vrátí na místo. Pomocí časovače můžeme zajistit jejich vzájemnou interakci. Musíte naměřit nebo odhadnout, na kolik desetin sekundy časovač nastavit, což pochopitelně není ideální, a za chvíli si ukážeme lepší řešení.
Můžete takových sekvencí udělat celou hromadu. Přidávejte postavičky, scény, můžete nakreslit i vlastní objekty. Děti si obvykle užijí spoustu zábavy při nahrávání zvuků. Dá se takto pomocí sekvence (a notnou dávkou trpělivosti) sestavit i celá pohádka.
Složitější programování plné očekávání
Sekvencemi ale programování zdaleka nekončí. Počítač totiž – na rozdíl třeba od kolovrátku – může vyhodnotit aktuální situaci a rozhodnout se na základě naměřených nebo zadaných hodnot, kterou část naprogramované sekvence vykonat.
Je tu několik speciálních dílků, které si zaslouží naši pozornost. Umí posílat zprávy ostatním postavičkám, vytvářet konečné i nekonečné cykly nebo přepínat scény. Právě pochopení těchto podmínek, cyklů, událostí a spouštěčů je klíčové pro rozvoj abstraktního myšlení.
Zase ale platí, že nemá cenu děti zahltit nějakou teorií. Vše je nejlépe prezentovat při řešení nějakého konkrétního problému. Jednoduchým způsobem, jak ukázat jejich výhodu, je naprogramovat složitější sekvenci s více postavami, které na sebe nějak reagují.
Kdybychom k tomu využívali jen sekvenci příkazů a časovač, šlo by to těžko. Musíte naměřit nebo odhadnout, na kolik desetin sekundy časovač nastavit. Proto je lepší využít funkci, která „zavolá“ ostatní. V „dospělém“ programování to odpovídá volání funkce nebo spouštěčům událostí. V dětské verzi je to startovací blok s obálkou (někdo vyslal zprávu) nebo kolizí (došlo ke srážce s jinou postavou).
Kombinací těchto spouštěčů můžete udělat celkem komplikované scény. Pokud každé postavě naprogramujete nějaké chování a reakce na ostatní, začne si brzy prostředí žít vlastním životem…
A vy můžete vymýšlet, co všechno pomocí tohoto systému naprogramujete. Inspiraci najdete na specializovaných stránkách. Doporučuji také proklikat osm ukázkových projektů, které se nacházejí v záložce s otazníkem.
Každý jednoduchým způsobem demonstruje některou ze základních funkcí nebo sady příkazů Scratch Jr.
Jdeme o úroveň výše
Pro pokročilejší studenty je tady pak plnohodnotný Scratch. Nabízí i off-line verzi, my budeme pro jednoduchost pracovat s tou webovou. Rozhraní je trochu podobné variantě pro děti, ale na první pohled je vidět, že je tu mnohem více možností.
Oproti dětské verzi nám zde přibylo několik zásadních věcí:
- Proměnné: můžete si vytvořit vlastní proměnné, upravovat je a sledovat jejich hodnotu, a na základě této hodnoty pak měnit, co se bude dít.
- Seznamy: dokonce lze vytvořit i seznam, tedy takové jednoduché pole proměnných. Pak můžete zjišťovat, co je a co není na seznamu, upravovat obsah seznamu atp.
- Podmínky: můžeme provádět zvolené příkazy jen za určitých podmínek, které si sami nastavíme. Lze se rozhodovat na základě hodnoty proměnné, podle polohy postavy, podle toho, čeho se postava dotýká nebo podle jejich kombinace.
- Výpočetní operace: najdete zde sčítání, odčítání, násobení, dělení, zbytek po dělení, zaokrouhlení... a taky desítku pokročilejších operací.
- Logické operátory: při vyhodnocování podmínek můžete použít i operátory AND (platí to i to) nebo OR (platí alespoň jedno z).
- Cykly: máme tu kromě opakování určitý počet cyklů i neomezené opakování nebo opakování, dokud nedojde ke splnění nějaké podmínky.
- Vlastní bloky: můžete si v sekci "Moje bloky" vytvořit vlastní blok, což je vlastně taková zkratka, která vám usnadní tvorbu složitějších programů. Schopnost znovu používat již jednou vytvořené bloky kódu se vám bude velmi hodit.
- Klony: postava může dynamicky vytvářet nebo rušit své vlastní klony.
- Vstupy: můžete sledovat vstupy z klávesnice, pozici myši nebo třeba pohyb zaznamenaný webovou kamerou.
- Batoh: můžete přesouvat kusy kódu nebo celé objekty pomocí batohu, jakési schránky napříč projekty.
Pomocí těchto funkcí (a s dávkou trpělivosti a vynalézavosti) už skutečně můžete sestavit i velmi komplexní prográmky. My si tady ukážeme jen jednoduchou hru, kterou ale můžete s dětmi dále vylepšovat.
Můžete třeba přidat vlastní zvuky, pálku, kterou ovládáte klávesami nebo počítat skóre, přidávat rychlost, měnit směr apod. Pro začátek se podívejte na náš krátký návod:
Jako inspirace při tvorbě pokročilejších her vám může posloužit také toto povedené video, ve kterém se z rychlíku podíváte na tvorbu deseti různých jednoduchých her. Nebo na tohoto programátora, který dělá jednoduchý a pokročilý klon slavné hry FlappyBird.
Zapojíme umělou inteligenci
Na závěr si ukážeme, jak Scratch propojit s umělou inteligencí. Využijeme k tomu klon Scratche Playground AI Blocks, do kterého lze jako modul vložit několik různých modulů. Včetně neuronové sítě vytrénované pomocí naší oblíbené Teachable Machine, které jsme věnovali první díl našeho seriálu.
Napřed si tedy vytrénujeme nový model. Na Teachable Machine natrénujte rozpoznávání toho, kterým směrem ukazuje váš prst: doleva, doprava nebo nahoru. Nezapomeňte také udělat variantu, kdy nikam neukazujete, aby měl model jak rozpoznat neutrální situaci.
Vytrénovaný model otestujte a následně exportujte. Vytvoříte URL adresu s modelem (vaše fotky veřejné nebudou, nahrává se pouze vytrénovaný model) a tu následně zkopírujete do svého projektu. Více v našem návodu:
Po importování svého modelu můžete použít rozpoznané kategorie podobně, jako kdybyste rozpoznávali třeba stisky šipek na klávesnici. Nezapomeňte zavřít stránku Teachable Machine, jinak vám v prohlížeči nebude fungovat webová kamera. Můžete naprogramovat třeba pohyb postavy po obrazovce podle toho, kterým směrem ukazujete.
Možností, jak takové propojení s vytrénovanou neuronovou sítí využít, je samozřejmě nepřeberně. Zkuste třeba vyrobit jednoduchou hru ovládanou gesty. Nebo program, který bude vyprávět vtipy, a detekuje, jakmile se usmějete.
Důležité je především to, že si spolu s dětmi na vlastní kůži vyzkoušíte, jak programování funguje. Jistě, jazyk Scratch není ideální pro tvorbu aplikací. Ale na základní experimentování se hodí výborně. A propojení s vlastními neuronovými sítěmi tomu dodávají další rozměr.
Jak dětem vysvětlit umělou inteligenci?
- Zobrazit všechny články seriálu: Hrajeme si s AI
Co je to umělá inteligence? Zní to složitě, ale uvidíte, že to může být užitečné, a dokonce je to i zábava. Umělá inteligence funguje na počítači, ale chová se jinak, než jsme u počítačů zvyklí…
Obvykle počítače jen přesně a poslušně plní nějaké pokyny. Asi jako když ráno vstanete a děláte to, co vždycky. Je sedm hodin – vstávat. Je sedm hodin a pět minut – čistit zuby. Je sedm hodin a deset minut – oblékat. Není žádné místo pro nejistotu. Ale umělá inteligence funguje jinak. Říkáme, že je chytrá, ale přesnější by bylo říct, že je naučená.