Ciele
- Osvojiť si možnosti riadenia robota Karla prostredníctvom základných príkazov.
- Naučiť sa vytvoriť a spustiť jednoduché programy, ktoré budú riadiť robota Karla v definovanom svete.
Úvod
-
Zoznam základných príkazov pre robota Karel:
-
movek()
- Presunie Karla o jednu pozíciu vpred vzhľadom na smer, ktorým je Karel otočený. Pokiaľ sa Karel pokúsi pohnúť smerom, ktorým nemôže (v ceste stojí prekážka alebo sa nachádza na okraji sveta), program sa zastaví. -
pickBeeper()
- Pokiaľ Karel stojí na pozícii, na ktorej sa nachádza značka, Karel ho zodvihne a vloží do svojho batohu. -
putBeeper()
- Pokiaľ má Karel vo svojom batohu značku, položí ju na pozíciu, na ktorej sa aktuálne nachádza. -
turnLeft()
- Po zadaní tohto príkazu sa Karel otočí na mieste o 90 stupňov vľavo. -
turnOn()
- Príkaz, ktorý Karla zapne. Príkaz má jeden povinný parameter, ktorým je umiestnenie sveta, v ktorom Karel bude riešiť svoju úlohu. Príklad zapnutia Karla a jeho umiestnenia do sveta nachádzajúceho sa v súbore stairs.kw (pričom predpokladáme, že uvedený súbosr je uložený v tom istom adresári ako spúšťaný program) môže teda vyzerať nasledovne:
turnOn( "stairs.kw" );
-
turnOff()
- Po vykonaní všetkých krokov programu tento príkaz zabezpečí korektné vypnutie robota Karla.
Postup
-
V prvom kroku sa zoznámime s robotom Karlom a svetom, v ktorom sa nachádza. Vytvoríme pre Karla jednoduchý program, pomocou ktorého si osvojíte jeho základné funkcie.Úloha: Vo svojom domovskom priečinku si vytvorte priečinok s názvom
Karel
, do ktorého budete ukladať svoje kódy programov pre robota Karla.Úloha: Stiahnite si súbor sveta stairs.kw, do ktorého Karla umiestníte, a v ktorom bude riešiť nasledúci problém. Pre stiahnutie súboru z internetu môžete využiť nástroj wget v tvare:
wget URL_of_the_stairs.kw
Úloha: Vytvorte pre Karla program, pomocou ktorého mu pomôžete vyšplhať sa po schodoch nahor, až na najvyšší stupienok. Cestou pomôžte Karlovi pozbierať všetky značky, ktoré na schodoch nájde. Po vyšplhaní sa na najvy�ší schod Karel všetky značky položí. Pre riešenie tejto úlohy využite už spomínaný svet stairs.kw.Poznámka: V programovacom jazyku C záleží na veľkosti písmen použitých v názvoch funkcií. -
V druhom kroku sa naučíte, ako výsledný program preložiť a spustiť.Príklad: Preložte vytvorený program pomocou prekladača
compile
. V prípade, že prekladač objaví chyby, opravte ich.Riešenie: Program preložíte nasledovne:
$compile stairs.c
pričom súborstairs.c
predstavuje vami vytvorený program pre Karla.Poznámka: Znak$
nie je súčasťou príkazu, ale symbolizuje len použitie príkazového riadku. Pri zadávaní (alebo kopírovaní) uvedeného príkazu ho preto vynechajte.Príklad: Spustite preložený program.Riešenie: Pokiaľ preklad prebehol bez chýb, v priečinku, kde ste program preložili, vznikol súbor s názvom vášho zdrojového programu, ale s príponou.run
. Tento program spustíte nasledovne:
$ ./nazov.run
Úloha: Overte, ako sa Karel správa v prípadoch, keď chce prejsť cez stenu, alebo keď sa pokúsi položiť značku a v batohu už žiadnu nemá, alebo keď sa pokúsi vziať značku z rohu, na ktorom sa žiadna značka nenachádza.
Doplňujúce úlohy
Úloha:
Vytvorte pre Karla program, pomocou ktorého Karel označkuje všetky
štyri rohy sveta. Karel sa na začiatku nachádza na pozícii [1,1] a je
nasmerovaný na východ. Po označení všetkých rohov sa vráti na svoju
východziu pozíciu. Pre riešenie tejto úlohy si stiahnite svet
empty.kw.

Doplňujúce zdroje
- Robot Karel - stránka na wikipédii venovaná robotovi Karlovi
- Rudolf Pecinovský: Základy algoritmizace - kapitola 6.1
- Pavel Herout: Učebnice jazyka C (1. díl) - kapitoly 9.2 (úvod), 9.2.1, 9.2.2, 9.2.4, 9.2.5
.c
(napr. ak sa mapa nachádza v súborestairs.kw
, tak program uložte do súboru s názvomstairs.c
). Do programu vložte tieto riadky, ktoré budú predstavovať jeho kostru: