PROGRAMOVACÍ MINI-JAZYK ROBOT KAREL
Výučbový programovací mini-jazyk Robot
Karel je výnimočný tým, že pre žiaka, ktorý sa učí základné princípy
programovania, veľmi názorne a príťažlivo umožňuje vysvetliť aj
zložitejšie pojmy štruktúrovaného programovania. Žiak sa môže stotožniť
s postavičkou robota a pochopiť činnosť pri vykonávaní programov
počítačom. Keďže všetky príkazy jazyka narábajú s robotom na obrazovke,
žiak ma možnosť sledovať celý priebeh svojej činnosti.
História
Robot Karel je zvláštny tvor. Nemá mamu, ale zato má dvoch tatov. Prvý
je český spisovateľ Karel Čapek, ktorý sa považuje za "tatu"
všetkých robotov. Do divadelnej hry R.U.R. totiž vymyslel umelých
ľudí, ktorí pracovali v továrňach. Pretože vykonávali všetku ťažkú
robotu, jeho brat Jozef mu navrhol pomenovať ich "Robotmi". Toto nové
slovo spolu s hrou sa preslávilo na celom svete. Dnes si už málokto
spomenie, aké slovo je s ním príbuzné a z ktorej krajiny pochádza.
Každý robot má aj druhého tatu, človeka, ktorý ho vymyslel alebo
zostrojil. Tým druhým tatom Robota Karla je
Richard Pattis. Žije v USA a Karla vymyslel ako študent
Stanfordovej univerzity v Kalifornii.
V r. 1981 R. Pattis vydal knihu "Karel the Robot". Knižka Karel the
Robot prvýkrát predstavila malého robota s českým menom Karel. Na
Slovensko (vtedy ešte ČSSR) sa Karel dostal veľmi skoro a stal sa veľmi
populárnym. Možno trochu i pre jeho český názov. Karel je však stále
populárny i v zahraničí. Má už i objektového bračeka, ktorý sa volá
Karel++.
Prvé implementácie jazyka boli na počítačoch PMD-85, ZX Spectrum, IQ151
a pod. Od tej doby vzniklo mnoho ďalších implementácií pre rôzne
operačné systémy a rôzne počítače. Od prvého vydania knižky Karel the
Robot sa mnohé udialo. Vznikol napríklad Internet a programovací jazyk
Java. Predmetom vývoja je aj projekt internetovej implementácie jazyka
Karel.
Didaktické využitie
Karel je jednoduchý programovací jazyk, ktorý bol navrhnutý, aby
pomohol začiatočníkom preniknúť do tajomstiev programovania. Základom
koncepcie jazyka je snaha poskytnúť skoro všetko to, čo dokáže klasický
programovací jazyk a to pomocou čo najjednoduchšieho príkazového
repertoáru. Jazyk je určený pre výučbu a nerobí si ambície byť normálnym
programovacím jazykom.
Základom je robot Karel, ktorý je umiestnený v priestore obmedzenom
stenami, tzv. meste. Karel pozná len niekoľko príkazov. Dokáže urobiť
krok vpred a otočiť sa vľavo. Vie položiť a zobrať značku. To je ale
skoro všetko čo pozná. Nevie sa napríklad otočiť vpravo. Je to ale
nadmieru zvedavý robot. Akonáhle dostane príkaz, ktorému nerozumie, hneď
sa pýta čo znamená. Otočiť sa vpravo sa dá napríklad napísať tromi
príkazmi pre otočenie vľavo. Ak raz vysvetlíme príkaz, príkaz je
zaradený do známych slov a môže byť použitý pre vysvetľovanie ďalších
príkazov. V terminológii programovacích jazykov je vysvetľovanie nového
slova definíciou novej procedúry.
Karel rozumie tiež základným programovým konštrukciám, ako je
podmienený príkaz alebo príkaz cyklu. Ako podmienku možno uviesť test na
existenciu značky pod robotom alebo test na existenciu steny pred
robotom. Dajú sa tak písať relatívne zložité programy. Do priestoru, kde
sa Karel pohybuje môžeme pripraviť rôzne prekážky alebo položiť značky.
Možné je riešiť problémy typu ako naučiť Karla, aby našiel cestu z
bludiska alebo ako naučiť Karla, aby preniesol značky z jedného kúta do
druhého.
Pri vysvetľovaní významu nových príkazov je možné použiť i príkaz práve
vysvetľovaný, čo je vlastne rekurzia. S využitím rekurzie je možné
naučiť Karla riešiť problémy, ktoré sú relatívne obtiažne i v
"naozajstných" programovacích jazykoch.
Programovací jazyk Karel je skvelým úvodom do programovania. Žiak nie
je zaťažovaný množstvom detailných informácií. Nemusí ani používať
cudzie slová, pretože príkazy sú v češtine a nie je problém naučiť Karla
používať slovenské názvy príkazov. Žiak ale môže Karla naučiť poslúchať
príkazy v akomkoľvek jazyku. Môže sa teda venovať len a práve
programovaniu. Svojou koncepciou jazyk navádza k využívaniu dobrých
programovacích techník, ako je dekompozícia problému alebo štruktúrované
programovanie. Na ovládanie jazyka sú potrebné minimálne predchádzajúce
znalosti. Je vhodný i pre malé deti. Jedinou obmedzujúcou podmienkou je
znalosť písania. Počítať už programátor Karla vedieť nemusí.
Programovanie úloh pre Karla nevyžaduje žiadne predbežné znalosti z
matematiky alebo geometrie.
Žiaci sa väčšinou do tajomstiev programovania robota Karla dostanú
veľmi rýchlo. Je to spôsobené hlavne možnosťou okamžitej grafickej
odozvy prevádzaného programu. Žiaci môžu pracovať bez nárokov na vysokú
abstrakciu riešenia. Karel umožňuje programovať i bez počítača. Stačí si
nakresliť štvorcovú sieť znázorňujúcu Karlovo mesto, potom zobrať nejakú
figúrku predstavujúcu robota a podľa napísaných programov ňou pohybovať
po vyznačenom území. Ešte názornejšie bude, ak si vytvoríme územie na
podlahe učebne a potom jeden zo žiakov alebo ešte lepšie učiteľ bude
robiť úkony napísané v programoch. Týmto spôsobom bude programovanie pre
deti zaujímavé, názorné a zrozumiteľné. Takáto forma výučby je skutočná
škola hrou. Prechod k počítaču potom bude robiť omnoho menšie problémy.
Ďalšou výhodou jazyka je potreba písania len relatívne krátkych textov.
Žiaci, ktorí si na klávesnicu iba zvykajú, sa neoneskorujú v písaní
oproti tým, ktoré počítač vlastnia a vedia hľadať jednotlivé klávesy
rýchlejšie. Pri vytváraní programov (úloh pre robota) sa žiaci postupne
učia ovládať klávesnicu či myš prirodzeným a zaujímavým spôsobom.
Zapísanie je prehľadné a deťom zrozumiteľné. Zároveň sa žiaci učia
písať programy štruktúrovane, čo je dobrý návyk pre učenie ďalších
programovacích jazykov. Ak chceme s robotom Karlom vykonať zložitejší
pohyb, vytvoríme ho z už známych povelov. Týmto nás jazyk núti dôsledne
pri výučbe postupovať od jednoduchšieho k zložitejšiemu. Programovací
jazyk Karel podporuje základné algoritmické štruktúry, teda blok
príkazov, podmienky a cykly, núti premýšľať o tvorbe podprogramov.
Karel je pascalovského typu, preto by pre žiakov mal byť neskorší
prechod k programovaniu v Pascale jednoduchší.
Pre školy je dôležitá dostupnosť programovacieho nástroja a jeho
hardvérová nenáročnosť (už od i286 s VGA). Na celom svete existuje
niekoľko komerčných i voľne šíriteľných projektov, ktoré sa vývojom
programovacieho jazyka Karel zaoberajú. S robotom môžeme pracovať i na
Internete, lebo nástroj je naprogramovaný aj v jazyku Java. Pre úplných
začiatočníkov odporúčam knihu "Kamaráti
robota Karla" od autorov Gašparovičová
Ľ., Hvorecký J. Vydanie je síce z roku
1991, ale snáď ho v knižnici alebo antikvariáte ešte objavíte. Je určená
hlavne mladším žiakom, veľa obrázkov a pekné príklady sú kladom knihy.
Stručný prehľad dostupných verzií
Jednotlivé verzie programovacích minijazykov Robot Karel sa líšia tým,
pre ktorý operačný systém sú určené. V ďalšom texte uvediem
najrozšírenejšie verzie pre operačné systémy Linux, MS DOS a MS Windows.
Verzie pre operačný systém Linux
Verzia pre operačný systém Linux má označenie
Karel Lin.
Jednoduché grafické prostredie Robota Karla vyžaduje inicializáciu
X-window servera (napr. KDE, GNOME) v prostredí operačného systému
Linux. Práca vo vývojovom prostredí Karel Lin je analogická ako v
prostredí Karel Win (viď. nižšie). Voľne je dostupný na stránke
http://www.vssoft.cz/Download/karellin.zip
Verzie pre operačný systém MS Windows
Verzia pre operačný systém MS Windows je označená Karel 1 Win.
Prostredie Karel 1 Win je naprogramované v jazyku Delphi. Karel sa
pohybuje po meste, ktoré býva štvorcového tvaru najčastejšie rozmerov
15x15, mesto je ohraničené stenami a tie môžu tiež byť na akomkoľvek
mieste (políčku) okrem toho, kde stojí Karel. Karel sa môže pohybovať
dopredu, otočiť sa vľavo, koľkokrát sa mu zachce. Vie sa pozrieť pod
seba a pred seba a podľa toho sa rozhodnúť, čo podnikne. Na akékoľvek
miesto, kde stojí, môže položiť obmedzený počet značiek, a pokiaľ tam
nejaká značka je, môže ju zase zobrať. Voľne je dostupný na stránke
http://www.volny.cz/plavjanik/karel/karel.exe
V programe sa dajú napísať programy pre Karla v príjemnom editore a
tieto programy je možné odskúšať. Programy sa v ňom dajú ladiť (krokovať
a zastaviť na určitých miestach).
Program v jazyku Karel sa skladá z podprogramov. Každý podprogram má
svoj názov, ktorý môže byť maximálne 100 znakov dlhý, nesmie obsahovať
medzery a nesmie mať rovnaký názov ako nejaký iný podprogram alebo
príkaz. Do textu programu v Karlovi pre Windows možno zadávať poznámky.
Poznámka je text, ktorý sa pri behu programu nevykonáva.
V prostredí je možné napísať program v jazyku Karel, tento program
spustiť alebo ladiť. Tomu zodpovedá i hlavná obrazovka prostredia. Okrem
menu a nástrojovej lišty (toolbaru) obsahuje textový editor aj mesto s
Karlom, ktorý je znázornený šípkou.
Menu obsahuje ponuku Soubor, ktorá umožňuje ukladať súbor s programom
na disk, jeho tlač a ukončiť program. Pri ukladaní programu sa ukladá
súčastne i mesto. Mesto sa dá uložiť zvlášť v ponuke Město. Ponuka
Úpravy obsahuje príkazy pre prácu so schránkou.
Ďalšiu verziu pre operačný systém Windows predstavuje Karel 1.2.
V meste je možnosť náhodného rozloženia tehál. Je to vhodné pre
testovanie nových procedúr. Táto funkcia je novinkou od verzie 1.1.
Dostupný je na stránke
http://quantico.cs.vsb.cz/~dos083/Karel/Karel1_2setup.exe
Od verzie 1.2 je možnosť nastaviť veľkosť miestnosti. Rozmery
miestnosti sú udávané počtom polí. Ďalej tiež umožní nastaviť hustotu
pokrytia tehlami pri náhodnom rozostavení. Ak je hustota 0 %, potom sa
pri náhodnom rozostavení tehál nepostaví žiadna tehla. Naopak ak je
hustota 100 %, potom sa miestnosť celá pokryje tehlami.
Karel 3D Win je implementácia
programovacieho jazyka Karel v prostredí WINDOWS.
Po spustení programu sa na obrazovke objaví prázdna miestnosť, v rohu
ktorej sa nachádza robot, ktorý pozná niekoľko jednoduchých príkazov.
Toto prostredie umožňuje aj definovanie vlastných (zložitejších)
príkazov, napr. umožňuje jednoducho naprogramovať robota tak, aby
prešiel tehlovým bludiskom. Voľne je dostupný na stránke
http://www.edi.fmph.uniba.sk/archive/Education/Studentske%20projekty/Dipl%20'97/Kosut.zip
V programe Karel 98 Demo
predstavuje Karel robota uzavretého v meste 10x10 polí.
V jeho svete existujú len steny, značky a štyri svetové strany. Sám vie
iba urobiť krok, otočiť sa vľavo a položiť alebo zobrať značku. Tiež vie
rozpoznať či na poli, kde stojí, je nejaká značka, či stojí pred stenou
a na akú svetovú stranu je otočený. Demo verzia umožňuje Karla naučiť
iba 5 nových príkazov a v zbierke úloh sa nachádza iba niekoľko
riešených príkladov. Demo verzia je voľne dostupná na stránkach
http://www.mujweb.cz/web/holubec/download/karel98.exe
http://www.mujweb.cz/web/holubec/download/karkniha.exe
Karel Win predstavuje
jednoduché grafické prostredie Robota Karla.
Práca vo vývojovom prostredí Karel Win je analogická ako v prostredí
Karel Lin (viď. vyššie). Voľne je dostupný na stránke
http://www.vssoft.cz/Download/karelwin.zip
Karol++ je programovací jazyk
určený tiež na výučbu programovania pre deti.
Programovacie prostredie zvýrazňuje syntax, doplňuje slová, zobrazuje
program, obsahuje "debugger" umožňujúci krokovať program v Prehliadači
kódu. Karol++ beží pod systémom Windows (32-bitové verzie). Obsahuje
štandardné prvky známe z iných aplikácií. Voľne je dostupný na stránke
http://ono.host.sk/karol/down.php3?file=ftp://ftp.sac.sk/public/sac/sk_made/karol.exe
Hlavné okno Robota Karola++ obsahuje tieto časti:
Editor - zvýrazňuje syntax rezervovaných slov. Umožňuje
rýchle písanie programu pomocou stlačenia klávesov Ctrl+Enter, po ktorom
sa vysunie zoznam príkazov. Ak žiak napíš začiatok niektorého
rezervovaného slova (napríklad "opa") a stlačí Shift+Tab, tak sa slovo
automatický dopíše na "opakuj krat".
Pohľad - v tomto okne vidno Karola v miestnosti. Tu sa dá
ovládať aj priamo pomocou klávesnice. Kláves P položí tehlu, Z zoberie,
O označí, D zruší označenie, C vyčistí miestnosť. Pohybuje sa pomocou
šípiek klávesnice.
Prehliadač kódu - zobrazuje program v stromovej štruktúre.
Informačný panel - zobrazuje pozíciu Karola v miestnosti a
chybové hlásenia prekladača.
Verzie pre operačný systém MS DOS
Verzie pre operačný systém MS DOS sú nenáročné na hardvér, stačí osobný
počítač radu IBM PC 386.
Karel 3.2 je jedna z
najvydarenejších verzií Karla z hľadiska prechodu na programovací jazyk
Pascal.
Menu možno nastaviť na český alebo anglický jazyk a príkazy možno písať
tiež priamo v angličtine. Voľne je dostupná na stránke
http://www.ms.mff.cuni.cz/~plas8136/karel.zip
Program vytvorený v prostredí Karel 3.2 sa skladá z procedúr. Každá
procedúra obsahuje postupnosť príkazov, ktoré sa majú vykonať. Každá
procedúra musíte mať meno.
Prvým riadkom procedúry je slovo PŘÍKAZ (PROCEDURE), za ktorým
nasleduje názov procedúry. Na konci procedúry je príkaz KONEC (END).
Medzi nimi sú príkazy. Môžu to byť názvy iných procedúr, alebo to sú
základné príkazy pre ovládanie Karla, alebo sú to špeciálne príkazy pre
riadenie behu programu (príkazy cyklov alebo podmienok). Je povolené
napísať na jeden riadok aj viac príkazov oddelených bodkočiarkou. Do
programu je tiež možné písať komentáre. V programe nezáleží na poradí
jednotlivých procedúr.
Táto verzia Karla tiež ako jediná pracuje s premennými, s procedúrami s
parametrami, a s poliami.
Karel 3D je stará upravená
verzia z čias PMD-85 a kazetových magnetofónov.
Ale stále atraktívna, zaujímavá a najmä nenáročná na hardvér. Voľne je
dostupná na stránke
http://pvskoly.cz/stary/public/freeware%20a%20shareware/karel3d.arj
Karel 96 používa pracovný
zošit s piatimi listami.
Medzi nimi možno prechádzať klávesmi F1 až F5 alebo priamo myšou.
http://www.gym-karvina.cz/skola/inf/karel_in.exe
Jednotlivé listy obsahujú:
Pomoc - zobrazí pomoc ku všetkým ďalším činnostiam
Práce - základný režim, Karel vykonáva známe príkazy
Učení - Karel sa učí nový príkaz, oprava chýb, dokumentácia
Město - meditácia mesta podľa zadania úlohy
Psaní - hra, ktorá zdokonalí písanie na klávesnici
Príkazy možno zadávať myšou pomocou tlačidiel alebo napísaním príkazu.
Za prínos v tejto verzii považujem podmienku náhody.
Kritériá a výber optimálnej verzie
Grafické spracovanie
Programovací
režim
-
písanie
príkazov realizované myšou alebo klávesnicou
-
skratky
alebo celé názvy príkazov
-
zvýrazňovanie
syntaxe odsadzovaním a farebne
-
prehľadnosť
zdrojového textu
Editácia
zdrojového textu
-
vypísanie
pomoci pri syntaktickej chybe
-
funkcia
kopírovania a prilepenia znakov a reťazcov znakov
-
pohodlnosť
a rýchlosť editácie
Zmena
miestnosti
Špecifické
podmienky
Ladenie
Premenné,
polia, procedúry s parametrami
Iné
Z uvedených verzií výučbového programovacieho prostredia Robot Karel, s
prihliadnutím na technické možnosti školy, najoptimálnejšie vychádzajú
verzie pre operačný systém MS DOS.
Pre úvod do štruktúrovaného programovania vyhovujú verzie Karel 3D
(priestorová, jednoduchá editácia, zobrazenie zdrojového textu pri behu
programu) a Karel 96 (názornosť, jednoduchý programovací režim,
podmienky svetových strán, náhody).
Pre prechod pre programovací jazyk Pascal je ideálne prostredie Karel
3.2 (už svojim vzhľadom pripomína prostredie Turbo Pascal spoločnosti
Borland, používa premenné, polia, procedúry s premennými, pracuje s
ASCII hodnotami, graficky nie je obmedzené na kladenie tehál, Karel môže
maľovať ľubovoľný znak, môže komunikovať v angličtine, má prepracované
ladenie, zdrojový text je viditeľný, autor stále pracuje na vylepšovaní
verzie, ponúka kvalitný manuál a zdrojový kód prostredia, k dispozícii
je plná verzia). Toto prostredie však doporučujem až skúsenejším
užívateľom.
Za zaujímavé považujem aj verzie Karol++ a Karel 1 Win, ktoré ale majú
vyššie hardvérové a softvérové nároky (MS Windows) a pre verziu Karol++
je k dispozícii zdrojový kód. Autor verzie Karol++ pracuje na verzii
2.0, ktorá by už mala pracovať s premennými.
V prípade operačného systému Linux sa ako
jediná možnosť javí použiť verziu Karel Lin, avšak pre operačný systém
Linux existuje softvérový emulátor
codeweavers-wine, ktorý umožňuje spúšťať pod operačným systémom
Linux aj aplikácie určené iba pre MS Windovs. Download pre
codeweavers-wine, šírený pod GNU general public license, dostupný na:
ftp://ftp.codeweavers.com/pub/wine/codeweavers-wine-20011108-5.i386.rpm
Jednoznačne vylučujem verziu Karel 98 (plnú verziu treba zakúpiť, demo
verzia umožňuje naučiť Karla iba 5 nových príkazov, pri spustení
neustále otravuje okno s hlásením, že ide o demo verziu).
|