Skutečné programování pro děti

Úryvek C++ zdrojáku definující třídu Strela s grafickými metodami pro pohyb a kreslení.

Napsal(a)

v rubrice

Proč u nás neklikáme hry, ale píšeme je od nuly

Všude kolem vidíte reklamní slogany „naprogramuj si vlastní hru“. Často to ale znamená jen skládat hotové bloky v nástroji, který spoustu věcí udělá za vás. Je to zábavné – a pro první setkání s logikou fajn. Jenže skutečné programování je něco jiného. Je to porozumění tomu, co se děje „pod kapotou“, schopnost problém rozebrat, navrhnout řešení, napsat kód, vychytat chyby a mít z výsledku vlastní radost.

V našem kroužku programování pro děti v Praze jdeme tou druhou cestou. Hry opravdu píšeme od nuly – nejdřív v Pythonu s mladšími, později v C++ se staršími. Cíl není jen hotová hra; cílem je myšlení programátora, zdravá dávka matematiky a fyziky a dovednosti, které se hodí ve škole, u přijímaček i v budoucí práci.

Herní obrazovka se žlutým Pac-Man, šedým duchem, zelenými tečkami, bludištěm a textem "body=440 žije=2" na vrchu.

Pac Man

Naprogramovali studenti v kroužku Pythonu

Bounty Mario

Naprogramoval Pavel z kroužku C++

Herní scéna s dvěmi postavičkami na platformách, žebříky, barevné bloky, a texty "POWER 0" a "BALANCE 5590" na tmavém pozadí jeskyně.

Klikání vs. programování: v čem je rozdíl

Existuje spousta nástrojů, které slibují, že si „naklikáte“ vlastní hru. A pokud je cílem mít rychle hotový výsledek, fungují skvěle. Jenže my míříme jinam. Naším cílem není jen vytvořit hru, ale naučit děti rozumět tomu, co se děje uvnitř. Chceme, aby dokázaly problém rozebrat, navrhnout řešení a přemýšlet jako programátoři.

Skutečné programování není jen o psaní kódu. Je to logické myšlení, schopnost analyzovat složitý systém a navrhnout ho tak, aby fungoval. Je to práce s chybami, hledání příčin a hledání cest, jak věci udělat lépe. To jsou dovednosti, které se hodí nejen v IT, ale v jakémkoli oboru, kde je potřeba řešit problémy.

Proto u nás děti nezačínají izolovanými školními úlohami, ale praktickými projekty. Hra není jen zábava – je to ideální trenažér. Naučí tě přemýšlet o struktuře programu, reakcích na události, práci s daty a třeba i o tom, jak do hry dostat kousek matematiky nebo fyziky. A když se dostaneme k týmovým projektům, přidá se i spolupráce a komunikace, které jsou v reálném světě stejně důležité jako samotný kód.

Naším cílem je dát dětem náskok – aby se nebály složitějších úloh, aby chápaly principy a aby měly pevné základy, na kterých mohou stavět na střední, vysoké škole i v práci. Proto učíme programování tak, jak se používá v praxi – ne jako teorii, ale jako nástroj k řešení problémů.

Proč začínáme v Pythonu

Když děti přijdou poprvé, nechceme je odradit složitostí. Proto začínáme v Pythonu – jazyce, který je přehledný a odpouští drobné chyby. Díky tomu se můžeme soustředit na to podstatné: jak přemýšlet jako programátor. Nejde o to, aby si zapamatovaly každý příkaz, ale aby pochopily principy: co je proměnná, jak funguje cyklus, proč potřebujeme podmínky.

A protože víme, že děti baví vidět výsledky hned, rychle se dostaneme k jednoduché grafice. Postavička, která se pohybuje po obrazovce, nebo hra, která reaguje na klávesnici – to je motivace, která funguje mnohem lépe než suché příklady. Python je pro to ideální startovní čára.

Proč přecházíme na C++

Jakmile děti zvládnou základy, přichází čas na C++. Ne proto, že bychom chtěli být „hardcore“, ale protože C++ otevírá dveře k hlubšímu porozumění. Ukazuje, jak funguje paměť, proč je něco rychlé nebo pomalé, a jak se navrhují větší programy.

V C++ už nejde jen o to, aby hra fungovala. Učíme se strukturovat kód, používat objektově orientované programování a přemýšlet o tom, jak spolu jednotlivé části systému souvisí. To jsou dovednosti, které se hodí nejen v programování, ale i v jakémkoli technickém oboru. A když se k tomu přidá práce s grafickými knihovnami, síťová komunikace nebo správa kódu v Gitu, děti si vyzkouší věci, které používají profesionálové.

Matematika a fyzika: žádná teorie do šuplíku, ale praxe do hry

Zelená tabule zobrazující rotaci bodů s trigonometrickými rovnicemi pro souřadnicovou transformaci podle úhlu α.

Většina dětí se někdy zeptá: „K čemu mi bude matika?“ U nás tu odpověď dostanou hned – protože ji použijí ve vlastní hře. A to je úplně jiný zážitek než počítat příklady do sešitu.

S mladšími začínáme nenápadně. Když řešíme, jak zjistit vzdálenost mezi dvěma body na obrazovce, najednou se hodí Pythagorova věta. Občas si z toho děláme legraci: „Nemáte v učebnici kapitolu o kreslení koleček?“ – a pak společně zjistíme, že kružnice a odmocniny nejsou žádná magie, ale klíč k tomu, aby se postavička pohybovala správně.

Se staršími a šikovnějšími jdeme dál. Když programujeme balistiku střely ve Scorchi, přichází na řadu rychlost, zrychlení a gravitace. A když někdo zvládne víc, klidně otevřeme i dveře k vysokoškolským konceptům – ale vždycky tak, aby byly praktické a stravitelné.

Naším cílem není biflovat vzorce, ale ukázat, že matematika a fyzika jsou nástroje, které dávají smysl, když je použijete k něčemu, co vás baví. A když se vám podaří propojit teorii s vlastní hrou, je to radost, která se do žádné známky nevejde.

Děti a studenti při programování v učebně Klubu KAPSA se žlutými stěnami.

Kroužek programování v Pythonu

Studenti pracují na zadání

Kroužek programování v C++

Kluci programují zvětšování Mandelbrotovy množiny

Čtyři studenti sledují počítačový kód na obrazovce, na zdi promítnutý obraz a kód související se zvětšováním Mandelbrotovy množiny a v pozadí kout s věšáky na kabáty.

Jak to u nás vypadá

Na našich hodinách nenajdete frontální výklad a opisování z tabule. Místo toho hodně kreslíme, vysvětlujeme a hlavně tvoříme. Každý pracuje svým tempem – někdo ladí grafiku, jiný řeší algoritmus, další přemýšlí, jak zrychlit svůj kód. A když se někdo zasekne, pomůžeme mu najít cestu dál.

Hry jsou náš trenažér, ale nejsou cílem samy o sobě. Jsou prostředkem, jak se naučit řešit problémy, spolupracovatdokončit projekt. A když vidíme, jak děti na konci roku ukazují vlastní hru, kterou napsaly od nuly, je to radost, která se nedá srovnat se žádnou známkou.