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