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
|