Programovací jazyk Karel
Pedagogické aspekty prostředí programu
editovatCelkový vzhled prostředí byl volen tak, aby orientace v něm nepůsobila žákům problémy. Práce s jednotlivými prvky aplikace je velmi snadná. V žácích by rozhodně neměl vzniknout pocit, že si s programem nevědí rady. Takto vybudovaný negativní postoj by působil špatně na jejich motivaci. Program Karel byl vytvořen tak, aby tento postoj u žáků nevznikal. Pokud by žáci cokoliv pokazili při zadávání programu, mají kdykoliv možnost opravy. Programovací pole je snadno editovatelné, žáci mají možnost mazat celý vytvořený program nebo jen některé řádky. Ze vzniklých a opravených chyb při programování se žáci mohou poučit, neboť chyba je nedílná součást výukového procesu. V době, kdy se rozmáhají hry založené na principu péče o „živého“ elektronického tvora (Tamagochi, Pokémon), by přiblížení programovatelného objektu dětskému světu mělo působit při výuce jako pozitivní motivační prvek. Pochopitelně, velmi záleží na schopnostech učitele. Dostatečně motivovat žáky je poměrně obtížné, a proto je třeba v tomto směru vyvinout zvýšenou snahu. Čím bližší mají žáci k dané problematice vztah (přesněji řečeno, kladný vztah), tím snazší má učitel při motivování práci. „Starání se“ o příjemně vypadajícího robůtka pohybující se v „městě“, by mělo žáky zaujmout. Důkazem, že v dětech je někde ukryta touha se o něco, či někoho starat, může být právě současný fenomén her, kdy se děti staví do rolí pečovatelů. Kdyby děti měly k možnosti starat se o někoho negativní postoj, výše zmiňované hry by jen stěží dosáhly takové obliby. Pokud dovede učitel Karlův svět dostatečně přiblížit a vymyslet k němu poutavý příběh, položí tím základ budování kladného vztahu žáků k práci s tímto programem a posléze i k programování.
Program Karel a programování
editovatProgram Karel slouží k výuce základních principů programování a k tomu je také přizpůsoben. Lze v něm osvětlit principy použití jednoduchých i složených příkazů, umožňuje též demonstraci cyklů a podmiňovacího příkazu. Díky tomu vytváří poměrně širokou škálu možností pro práci ve vyučovacích hodinách. Kromě začátečnických úloh lze pomocí tohoto programu řešit i některé komplikovanější úlohy, na kterých lze ukázat shodné obecné principy pro psaní programů. Práce s ním má připomínat hru, což koresponduje s přirozenou tendencí dětí realizovat se prostřednictvím nejrůznějších her. Hlavní náplní je ovládání robůtka, což je činnost, k níž lze žáky poměrně snadno motivovat. Stačí jen vymyslet ke každému zadání úlohy nějaký příběh a tak zvýšit motivaci žáků k vyřešení, tedy vytvoření odpovídajícího programu. Žáci si v prvé řadě hrají a tím se vědomě či nevědomě učí. Tímto způsobem si osvojí základy programování. Nejsou nuceni pracovat s vývojovým prostředím vyšších programovacích jazyků, které obvykle nepůsobí na neznalého člověka většinou příliš přátelsky. Spojení hry s vyučováním je princip, o nějž se práce s programem Karel opírá.
Úplné začátky
editovatProgram Karel dává mnoho možností k začlenění do výuky. V úvodních hodinách, kdy se žáci teprve seznamují s obecnou problematikou tvorby programů, se nejvíce uplatní režim pro přímé příkazy. V něm by si žáci měli prostředí programu Karel nejdříve osvojit. V tomto režimu lze také žákům demonstrovat, že program je posloupnost elementárních kroků. Teprve následně přichází na řadu režim pro programování. Pak už se dá začít hovořit o skutečném programování. Při seznamování žáků s prostředím programu by učitel měl upozornit na tyto režimy a jejich odlišnosti. Pro ranou práci, tedy v režimu přímých příkazů, se žákům velmi budou hodit klávesová tlačítka. Je třeba zdůraznit, že tyto prvky jsou pouze pomocné a že je nelze použít při následném programování. Žáci s nimi mohou Karla přesouvat a otáčet jej do všech směrů. Při výuce obecných základů programování má program Karel zejména ilustrativní funkci. Nejprve je třeba žákům ukázat obecný princip řešení problémů. Měli by si uvědomit, že všechny složitější činnosti se skládají z několika po sobě následujících jednodušších úkonů. Je nutno žákům předvést, že pokud máme omezenou množinu elementárních činností (v našem případě chůze, sbírání/pokládání značek, odstraňování/kladení překážek a otáčení), lze jejich správným kombinováním provádět i mnohem náročnější činnosti.
Příklad
editovatUčitel má žákům ukázat, že s Karlem je možno dělat činnosti, které Karel sám od sebe neumí. Nejprve tedy nechá žáky vyzkoušet činnosti, které Karel svede. Následně nechá žáky samostatně přemýšlet, jak docílit toho, aby se Karel na místě otočil čelem vzad a popošel o jedno políčko vpřed. Jistě pro ně nebude problém přijít na to, že se stačí dvakrát otočit stejným směrem a následně udělat krok. Učitel ale na této jednoduché úloze může předvést, že kombinací jednoduchých úkonů, lze provést složitější operace. Následně pak zdůrazní, jak důležité je provádět úkony ve správném pořadí. Zamění libovolné dvě operace a nechá žáky vyzkoušet si tuto pozměněnou posloupnost. Bude patrné, že pořadí činností musí být stanoveno přesně. Žáci by si měli zkoušet vytvářet různé kombinace příkazů. Postupů práce při následných hodinách je několik. Pro ilustraci uvádím dva nejpravděpodobnější.
První: Žák pracuje s programem, zadává Karlovi příkazy a zapisuje si jednotlivé kroky. Až splní úkol, na papíře mu vznikne posloupnost činností, které provedl. Tu si pak může opětovně vyzkoušet.
Druhý: Je obrácený. Žák pracuje nejprve na papíře a pokouší se „naslepo“ zapsat posloupnost činností. Teprve až si je jist, může ji vyzkoušet s počítačem.
Zajímavá je také párová práce. Kupříkladu činnost, kdy jeden z žáků vidí na monitor, druhý pak sedí s tužkou a papírem otočený k monitoru zády. Jako tým mají zadanou úlohu (kupř. sebrat na území tři cihly). Žák sedící u monitoru popisuje, co má Karel před sebou, a kde jsou cihly. Nemá ovšem možnost Karlovi skutečně příkazy zadávat. Otočený žák pak na základě popsané situace dává příkazy a zapisuje je. Jeho kolega mu pak popisuje situaci, jako by se příkaz provedl. Až úkol splní, mohou se oba zadáním příkazů z papíru přesvědčit o správnosti. Zkoušením různých kombinací příkazů a „hraní si “ s nimi si žáci, aniž by to tušili, osvojí klíč k psaní programů, totiž tvorbu předpisu obsahujícího jednoznačnou posloupnost činností - algoritmu. Některé žáky není třeba tímto termínem zatěžovat. Je důležité, aby si všichni uvědomili, že se složitější problém dá rozložit do několika jednoduchých činností, které jdou po sobě ve správném pořadí. Jakmile budou žáci schopni tvořit „přepisy“ pro náročnější činnosti, je zbytečné setrvávat v režimu pro přímé příkazy a nutit žáky zadávat příkazy jednotlivě. V této fázi je možno pokročit ke skutečnému psaní programu.
Pokud si žáci osvojí možnost vykonávání složitějších činností pomocí jednodušších úkonů prováděných ve správném pořadí, může je učitel seznámit i se skutečným psaním zdrojového kódu uživatelského programu. K tomu v programu Karel slouží režim pro psaní programů. Technicky se psaní programu provádí zadáváním příkazů do programovacího pole. Po osvojení principů zapisování programů následuje fáze skutečné tvorby programu.
Karel v hodinách
editovatZkušenosti se základy programování mě dovedly k několika podstatným zjištěním. Prvním z nich je, že ačkoliv dospěji na určitou úroveň znalostí, měla bych být, s prostředky které mám, schopna úlohy řešit. Velmi často však nevím, jak k problému přistoupit. Mnohokrát jsem nabyla dojmu, že postupuji známou metodou pokus-omyl, která přímo nevylučuje, že k požadovanému řešení dospěji. Nezaručuje ale také, že se k němu dopracuji v rozumném čase. Proto si myslím, že spíše než žákům předkládat nové a nové příkazy, je mnohem důležitější naučit je základní principy a soustředit se více na analýzu problému. Velmi se mi osvědčil postup, který se zde pokusím nastíním. Není to univerzální návod, nicméně s programem Karel se takto dá pracovat. Nejprve by měli žáci pracovat tzv. „nasucho“, tedy nejdříve problém rozebrat teoreticky. Přitom je možno důležité body zapisovat na tabuli, aby všichni měli jádro problému na očích. Jakmile se dokončí rozbor, měl by následovat návrh řešení. Žáci se jednotlivě pokusí vytvořit program, který si zapíší na papír. Tato fáze je důležitá, protože každý žák má možnost realizovat se . I když třeba následně zjistí, že jeho postup nebyl zcela v pořádku, může se z chyb poučit. Dále pak následuje, buď rozdělení se do dvojic a vzájemně porovnávat své programy nebo zvolit jednoho žáka, který své řešení předloží ostatním. Ti se k němu vyjadřují a postupně se začne formovat řešení. Až nyní přijde na řadu počítač. Žáci si prakticky vyzkouší, co si teoreticky připravili. Pokud by se vyskytla chyba, pokusí se ji odstranit. To již mohou činit individuálně či párově. Důležité ovšem je, že pro odstranění chyb musí proniknout do podstaty programu a tedy jej musejí chápat. Chyba sama o sobě by neměla znamenat něco negativního. Je to krok na cestě za správným řešením. Pozice učitele může být při tomto postupu různá. Závisí na jeho vlastním odhadu situace, jak moc a kdy bude do procesu tvorby programu zasahovat. Možností má mnoho. Ovšem je třeba mít na paměti, že čím více aktivity je na straně žáků, tím je to pro jejich získávání vědomostí a dovedností lepší. Učitel by měl v hodinách působit především jako poradce. Neměl by žáky slepě vést k řešením úloh, ale měl by jen k němu ukazovat cestu.
Je pochopitelné, že pokud by se žáci setkali s novými prvky, je především na učiteli, aby s nimi žáky seznámil a vysvětlil jim všechny aspekty, které by mohlo aplikování těchto prvků mít. Jedná se především o důkladné procvičování nových příkazů, zejména pak jejich logické zakomponování do programu (to se týká především podmíněného příkazu). Kladením důrazu na důslednou analýzu problému učitel žáky povede k přijmutí jednoho z klíčových programovacích návyků. Pokud jej žáci akceptují, získají tak dovednost, jejíž uplatnění najdou nejen v rámci tvorby programů, ale i při řešení obecných situací. Jakmile dokáží problém rozebrat, je to první krok k tomu, aby vymysleli postup, jak ho řešit, tedy vytvořit algoritmus. Vlastní psaní programu v příkazech, které jsou srozumitelné Karlovi (nebo obecně počítači) je jen převedení již navrhnutého algoritmu. Tento fakt by si měli žáci uvědomit. Jako první musí být myšlení, tedy nápady na řešení, poté jeho teoretické provedení, a teprve pak může následovat jeho konkrétní podoba ve formě, jíž Karel rozumí. V tomto ohledu je program jen nástrojem na realizaci a prověřování myšlenkových konstrukcí žáků. Programování je správné řazení elementárních akcí podle předem navržené koncepce. Bez ní by zůstalo jen u nesystematického řazení zvolených příkazů. Při tvorbě programů se ovšem neuplatní jen analytické myšlení, ale také fantazie a tvořivost, které jsou prapůvodci všech programů. Tyto vlastnosti musí stát u zrodu všech programů. I toto by měli žáci pochopit a díky tomu si uvědomit, že programování je komplexní záležitost vyžadující všechny zmíněné prvky. Smyslem programu Karel je umožnit žákům, aby si své nápady vyzkoušeli v praxi. Každá zkušenost, i když se nezdá být nikterak závažná, je součástí učení. I když mají žáci třeba pocit, že si s Karlem jen hrají, přejímají obecné principy programování. To v nich vytváří zkušenostní základ, na němž mohou dále stavět.