Jednoduché programy pre robota Karla.

Ciele
  1. Osvojiť si možnosti riadenia robota Karla prostredníctvom základných príkazov.
  2. 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
  1. 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: Program napíšte v niektorom z dostupných textových editorov (napr. vim, mcedit, nano alebo joe). Názov súboru, do ktorého napíšete váš program, odvoďte od názvu súboru s mapou zmenou prípony na .c (napr. ak sa mapa nachádza v súbore stairs.kw, tak program uložte do súboru s názvom stairs.c). Do programu vložte tieto riadky, ktoré budú predstavovať jeho kostru:
    1	   #include <karel.h>
    2	 
    3	   int main(){
    4	 
    5	      return 0;
    6	   }
                    
    Váš program sa bude nachádzať medzi riadkami 3 a 5.
    Poznámka: V programovacom jazyku C záleží na veľkosti písmen použitých v názvoch funkcií.
  2. 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úbor stairs.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
  1. Robot Karel - stránka na wikipédii venovaná robotovi Karlovi
  2. Rudolf Pecinovský: Základy algoritmizace - kapitola 6.1
  3. 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
comments powered by Disqus