Rudolf Pecinovský: Jazyky pro výuku základů programování - Karel a Logo

pátek 5. října 2001 ·

V pátém díle seriálu se dostává na jazyky a prostředí, které se snaží eliminovat nedostatky klasických programovacích jazyků pro výuku začátečníků. Dnes se pokusím ukázat, jaké jsou výhody a nevýhody Loga a Karla, jež v této oblasti platí za světovou klasiku.

V minulém článku jsem shrnul základní zásady, jimiž bychom se měli řídit při výběru jazyka a vývojového prostředí, v němž budeme učit základy programování. Dospěl jsem k závěru, že pro tyto účely jsou nejvýhodnější jazyky a vývojové prostředí specializovaná právě na výuku základů programování. Skončil jsem vyjmenováním těch, která jsou v našich krajích (do „našich krajů“ počítám Česko a Slovensko) nejznámější. V pořadí jejich vzniku jsou to Logo, Karel, Baltazar, Baltík a Petr.

Společné vlastnosti

Všechny uvedené jazyky mají jednu společnou vlastnost: zavádějí jakýsi virtuální svět, v němž pak žáci řeší nejrůznější úlohy. Takovýto přístup má několik výhod:

  • Řešení základních úloh, kterými žáci začínají, nevyžadují žádné operace vstupu a výstupu.

  • Řešení úloh probíhá před studentem na obrazovce bez nutnosti zadávání vstupně-výstupních příkazů.

  • Studen vidí na obrazovce nejen výsledek, ale většinou také celý postup ukazující, jak ovládaný objekt k výslednému řešení dojde.

  • Programy lze vytvářet od samého začátku výuky. Jednoduchou základní odezvu má i spuštění prázdného programu, které vede k vykreslení počátečního stavu prostředí.

  • Úlohy připadají zajímavé nejen dětem, ale i dospělejším frekventantům kurzů. (Lidé si rádi hrají v každém věku.)

  • Programy řešící předkládané úlohy jsou nesmírně jednoduché. Na rozdíl od příkladů řešících problémy reálného života neobsahují skoro žádný „šum“.

  • Jednoduchost a průzračnost programů vede k tomu, že se v nich poměrně snadno hledají případné chyby.

  • Prakticky hned na počátku výuky je možné vysvětlit pojem procedury a následně pak vysvětlit a demonstrovat pravidla dekompozice, která je pak možno aplikovat při řešení řady příkladů v průběhu celé výuky. To nám umožní učit téměř od počátku řešení složitějších úloh.

Podívejme se nyní na specifika jednotlivých jazyků a vývojových prostředí.


Logo

Programovací jazyk Logo vznikl na Massachusetts Institute of Technology (MIT) v roce 1967. Nevznikl ale jako jazyk pro výuku programování, ale jako jazyk pro výuku myšlení. Je to vlastně snadněji čitelná verze jazyka LISP, který je hlavním jazykem při programování umělé inteligence.

Hlavní postavou jazyka Logo je želva (turtle) pohybující se po pláži. Když želva spustí ocásek, kreslí za sebou stopu v písku. Když ocásek zvedne, pohybuje se bez toho, že by za sebou zanechávala stopu. Ve spojitosti s Logem se proto často hovoří o želví grafice. (Ukázky některých jednoduchých příkladů můžete najít v článku R. Fojtíka Programování na ZŠ (3. díl) – Logo a jeho želva.)

Želva rozumí od počátku široké paletě příkazů, a to nejen grafických. V Logu proto můžete řešit řadu úloh včetně těch, které patří do oblasti umělé inteligence – ne nadarmo je jeho tatínkem LISP.

Toto dědictví však s sebou přináší i nepříjemné vlastnosti. Způsob uvažování při tvorbě programů v Logu je přece jenom trochu jiný, než způsob uvažování při tvorbě programů v klasických programovacích jazycích. Jeho autorům proto bylo často vytýkáno, že je tento jazyk pro výuku programování nevhodný. Autoři se bránili tím, že nevymýšleli jazyk pro výuku programování, ale jazyk pro výuku myšlení.

Stejně bychom se k Logu měli postavit i my. Kdo chce učit děti pouze logicky uvažovat a nechystá se je pak následně učit programovat v klasických jazycích, může pro něj být Logo docela dobrá volba, protože mu velice rychle nabídne možnosti, s nimiž se žáci klasickou cestou seznámí až mnohem později. Na druhou stranu mu budou odepřeny jiné možnosti, na kterých je však celé moderní programování pevně postaveno.


Karel

Na přelomu sedmdesátých a osmdesátých let se Richard Pattis na Stanfordské universitě začal ve svých kurzech programování setkávat s žáky, kteří již před příchodem na školu vytvořili na svých domácích počítačích řadu programů v Basicu. Přitom se však naučili řadě zlozvyků, kterých se jen velice těžko zbavovali. Pettis pro ně vymyslel robota (pojmenoval jej po Karlu Čapkovi, autorovi hry RUR) a jeho jednoduchý svět.

Úlohy pro robota Karla pak studenti řešili zpočátku v omezené verzi Pascalu bez proměnných a datových typů. Tím byla do jisté míry srovnána obtížnost pro začínající studenty i pro ty zkušenější, kteří zde mohli uplatnit pouze málo ze svých zlozvyků a postupně se je odnaučovali a přecházeli na „víru pravou“.

Tento námět inspiroval několik nadšenců soustředěných kolem stanice mladých techniků v Praze, k tvorbě interaktivních programů, které byly v průběhu osmdesátých let implementovány na většinu u nás dostupných mikropočítačů a pomocí nichž v té době vstupovala do světa programování většina budoucích programátorů.

Robot Karel a jeho svět se stal výhodnou vyučovací pomůckou i v kurzu programování Cesta k profesionalitě, který byl určen pro dospělé a který probíhal na počátku devadesátých let na stránkách týdeníku ComputerWorld. Podíváte-li se na web, zjistíte, že tuto vyučovací pomůcku používá v kurzech CS1 (Computer Science 1) řada světových univerzit.

Svět robota Karla
Původní Pattisův Karel žije ve městě tvořeném pravoúhlou sítí ulic – vodorovných streets a svislých avenues (mnemotechnická pomůcka: AV ve slově avenues míří nahoru a dolů, proto jsou avenues svislé). Nebyla-li ulice před ním zatarasena zdí, mohl se pohybovat z křižovatky na křižovatku. Přitom uměl zjisti, je-li na dané křižovatce zvukový maják (beeper) a v případě potřeby jej sebrat nebo jen na ni naopak umístit.

Tomáši Bartovskému, který vytvořil první českou verzi Karla, se nelíbila síť linek představujících ulice a reprezentoval město jako šachovnici, které jsme posléze začali označovat jako dvorek. Český Karel proto nežije ve městě, ale na dvorku, kolem nějž je postavena zeď. Zdi mohou být postaveny i na jednotlivých polích této šachovnice – dvorku.
Karel se umí po dvorku pohybovat, umí na jeho jednotlivá políčka pokládat značky a zase je z nich sbírat. Na počátku rozumí pouze čtyřem základním povelům – primitivům: Krok (udělá krok vpřed), Polož (položí pod sebe značku), Zvedni (zvedne jednu ze značek, které jsou pod ním) a VlevoVbok. Kromě toho umí otestovat sedm základních podmínek: Zeď (zjistí, zda je před ním zeď), Značka (zjistí, zda je pod ním značka), Stisknuto (zjistí, zda od posledního testování někdo stisknul nějakou klávesu), Východ (zjistí, zda je Karel otočen na východ).

Použití Karla ve výuce
Samostatné prostředí robota Karla nepovažuji za optimální řešení, protože oproti vývojovým prostředím klasických programovacích jazyků nepřináší žádné podstatné výhody. Karel je však skvělou pomůckou ve chvíli, kdy se rozhodnete učit programování v nějakém klasickém programovacím jazyku. Můžete jej totiž připravit jako komponentu (knihovnu, modul …), která vám v první etapě výuky umožní zadávat problémy, jejichž řešení jsou nezašuměná a mají řadu dalších, výše citovaných výhod. V druhé etapě pak může tato komponenta sloužit sama o sobě jako ukázka možného řešení úkolu „vytvořit program realizující prostředí robota Karla“.

O Karlovi a možnostech jeho uplatnění ve výuce psal již R. Fojtík v článku Programování na ZŠ (2. díl) – robot Karel. Nepopisoval v něm však možnosti použití komponenty, ale celého prostředí.

Příště se budeme zabývat českými prostředími a jazyky pro výuku základů programování.



Rudolf Pecinovský

0 komentářů:

Články dle data



Učitelské listy

Nabídka práce

Česká škola - portál pro ZŠ a SŠ

Česká škola poskytuje svým čtenářům diskusní prostor k vyjádření názorů na školskou problematiku. Tyto příspěvky se nemusí shodovat se stanoviskem redakce České školy a jsou uveřejňovány jako podnět k dalším diskusím.

Obsah článků nemusí vyjadřovat stanovisko redakce nebo vydavatele Albatros Media, a.s.


Všechna práva vyhrazena.

Tento server dodržuje právní předpisy
o ochraně osobních údajů.

ISSN 1213-6018




Licence Creative Commons

Obsah podléhá licenci Creative Commons Uveďte autora-Neužívejte dílo komerčně-Nezasahujte do díla 3.0 Česká republika, pokud není uvedeno jinak nebo nejde-li o tiskové zprávy.



WebArchiv - archiv českého webu



Tyto webové stránky používají k poskytování služeb, personalizaci reklam a analýze návštěvnosti soubory cookie. Informace o tom, jak tyto webové stránky používáte, jsou sdíleny se společností Google. Používáním těchto webových stránek souhlasíte s použitím souborů cookie.