KAREL 98Základy programování pro malé i větší bez potřeby znalostí matematikyTomáš HolubecÚstí u Vsetína 116 755 01 Karel je robot uzavřený ve městě 10x10 polí. V jeho světě existují
pouze zdi, značky a čtyři světové strany. Sám umí pouze udělat krok,
otočit se vlevo a položit nebo zvednout značku. Také umí rozpoznat zda na
poli, kde stojí, je nějaká značka, zda stojí před zdí a na jakou světovou
stranu je natočen.
Karlovo městoKarlovo město je zobrazeno v pravém horním rohu. Je tvořeno poli 10x10, z vnějšku je ohraničeno vnějšími zdmi, které jsou znázorněny růžovou barvou. Karel je ve výchozí poloze v levém dolním rohu natočen vpravo - je doma.Vedle města je malé okno obsahující nástroje na úpravu města. Umožňuje hýbat s Karlem, pokládat značky a vytvářet vnitřní zdi. Další nástroje pro úpravu města jsou v horním menu pod položkou Město. Světové strany jsou ve městě rozloženy jako na mapě - sever nahoře, jih dole, východ vlevo, západ vpravo.
Přímý režimKarel ihned provede Vámi zadaný příkaz. Klikněte myší na okno Ovládání Karla a do spodního řádku napišteVLEVO VBOK
a stiskněte ENTER. Karel (jeho šipka) se otočí vlevo. Stejným způsobem
můžete napsat POLOZ nebo ZVEDNI a Karel na poli,
kde stojí, položí nebo zvedne značku. Napíšete-li KROK , Karel
se posune o jedno políčko ve směru šipky.Obecně platí, že můžete napsat Karlovi jakýkoli příkaz, který je uveden v okně Známé příkazy. Na začátku zná Karel pouze čtyři základní výkonné příkazy. Jejich pomocí se dá vytvořit jakýkoliv program.
Režim učení KarlaChceme-li naučit Karla rozumět novému příkazu musíme mu říci, že se jedná o nový příkaz, který si má zapamatovat.Pokud jste chtěli Karla otočit čelem vzad, museli jste dvakrát za sebou napsat VLEVO VBOK . Karel příkaz CELEM VZAD
ještě nezná, musíme mu nový příkaz vysvětlit. Napíšeme POCHOP
CELEM VZAD a stiskneme ENTER. V okně nad vstupním řádkem se objeví
náš nový příkaz. Karel nyní čeká, co tento příkaz znamená. Napíšeme
VLEVO VBOK . V horním okně se pod CELEM VZAD
objeví VLEVO VBOK , všimněme si, že VLEVO VBOK je
odskočeno od začátku řádky. Napíšeme ještě jednou VLEVO VBOK .
Napíšeme KONEC . Karel nyní zná nový příkaz CELEM
VZAD . Nový příkaz můžete ihned vyzkoušet.
Základy programování v KarloviKarel od narození zná pouze 4 přímé příkazy:
Dále rozumí slovům: OPAKUJ, DOKUD, KDYZ, JE/NENI, ZEĎ, ZNACKA, SEVER, JIH, VYCHOD, ZAPAD, KONEC, POCHOP, CHYBA
Učíme Karla novým příkazůmKaždý nový příkaz si nejprve pište do tzv. kopenogramu. Kdo se naučí myslet v kopenogramech, bude umět v budoucnu rychleji pracovat i se složitějšími programovacími systémy.1.úkol: Naučíme Karla otočit se čelem vzad a
vpravo vbok.
Tip: Příkazy můžete zkracovat. 2.úkol: Karel na pole, kde stojí, položí 5 značek
(SLOUP), při jižní zdi postaví na 8 polích CHODNÍK (na každém poli jedna
značka).
Co udělá Karel příkazem STĚNA? Cyklus OPAKUJ můžeme vložit dvěma způsoby: 3.úkol: Naučíme Karla dojít ke zdi, jejíž
vzdálenost od robota není známa (KE ZDI), Karel postaví ke zdi neznámé
vzdálenosti CHODNÍK 1, Karel postaví CHODNÍK 2 kolem města neznámých
rozměrů.
Z kopenogramů vidíte, že dříve naučený příkaz lze v novém kopenogramu
použít stejně jako některý ze čtyř příkazů, které Karel zná na
začátku. Cyklus DOKUD můžeme vložit dvěma způsoby: Při přepisování kopenogramu můžete příkazem CHYBA vymazat poslední
vložený příkaz. Pokud zrovna Karlovi nevysvětlujete nový příkaz, dojde k
odstranění posledního naučeného příkazu. 4.úkol:
KDYZ můžeme vložit dvěma způsoby: 5.úkol: Volání názvu právě učeného příkazu nazýváme rekurze, program se
ocitá na začátku a opět vykoná příkaz Rekurzi lze použít také v bloku s příkazem Při rekurzi si Karel pamatuje odkud byl na začátek programu odhozen -
vytahuje si kartičky a vše si na ně zapisuje (Ve skutečnosti se
tomu říká zásobník a ukládá se do něj adresa místa, odkud má program
odskočit do podprogramu. Pokus: Zadejte příkaz 6.úkol: S využitím rekurze naučte Karla chodit
kolem budovy 4X4 zdi (HLÍDAČ), tzn. Karel udělá 5 kroků a otočí se vlevo a
tuto činnost vykonává tak dlouho dokud ho sami nezastavíme. Rekurzi v kombinaci s příkazem 7.úkol: Naučíme Karla dojít do poloviny neznámé
vzdálenosti od zdi. Karel nejprve půjde dvojkroky ke zdi, pak se otočí a zpět půjde po
krocích - tzn. kolik dvojkroků šel ke zdi, tolik kroků půjde zpět a
dostane se právě do poloviny vzdálenosti. Proč druhý krok musí být opatrný? Rekurzí je Karel vždy odhozen na začátek programu. Při každém odhození
si ze svého batůžku vytáhne kartičku a na ni si poznačí, odkud byl odhozen
na začátek příkazu. Při řešení některých složitějších úloh je zapotřebí užít několik
takových rekurzí. V hlavním menu programu naleznete sbírku úloh. Jedná se o úlohy během
let sesbírané na soutěžích v programování. K některým z nich jsem přidal i
vzorové řešení. Tomáš Holubec
|