|
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
|