Karel and his Sensors

Ciele

  1. Porozumieť a vedieť využiť vo svojich programoch štruktúry a štruktúrované typy.
  2. Porozumieť a vedieť využiť vo svojich programoch enumeračné typy.

Úvod

Doposiaľ ste pracovali len s jednoduchými a základnými typmi. Na dnešnom cvičení sa naučíte vytvárať štruktúrované typy ako aj vlastné nové typy.

Postup

Krok č. 1

V prvom kroku nahradíte niekoľko premenných, ktoré opisujú robota Karla, prostredníctvom štruktúry.

Úloha 1.1:

Vytvorte štruktúru s názvom Robot, ktorá bude zoskupovať všetky premenné opisujúce vlastnosti robota Karla.
Štruktúra Robot bude predstavovať zoskupenie premenných karel_x, karel_y, karel_beepers a karel_direction. Názvy položiek štruktúry skráťte odstránením prefixu karel_.
Poznámka:
Pokiaľ ste pracovali aj na doplňujúcich úlohách, do štruktúry Robot zahrňte aj premenné karel_steps a premennú, v ktorej uchovávate názov posledne vykonaného príkazu.

Úloha 1.2:

Vytvorte deklaráciu premennej karel, ktorá bude typu Robot.

Úloha 1.3:

Aktualizujte svoj kód nahradením pôvodných premenných za vytvorenú štrukturálnu premennú.

Krok č. 2

V tomto kroku vytvoríte podobne, ako tomu bolo v prvom kroku, samostatnú štruktúru zoskupujúcu premenné opisujúce svet robota Karla.

Úloha 2.1:

Vytvorte štruktúru s názvom World, ktorá bude zoskupovať všetky premenné opisujúce svet, v ktorom sa bude robot Karel nachádzať.
Štruktúra World bude predstavovať zoskupenie premenných world_height, world_width a world. Názvy položiek štruktúry skráťte odstránením prefixu world_. Aby nedochádzalo ku kolízii mien, pôvodnú premennú world môžete v štruktúre pomenovať ako data.

Úloha 2.2:

Vytvorte deklaráciu premennej world, ktorá bude typu World.

Úloha 2.3:

Aktualizujte svoj kód nahradením pôvodných premenných za vytvorenú štrukturálnu premennú.

Krok č. 3

V tomto kroku využijete vo svojej implementácii vlastné enumeračné typy Direction a Boolean.

Úloha 3.1:

Vytvorte enumeračný typ Direction, ktorý bude reprezentovať možné smery, v ktorých sa Karel môže pohybovať.
Pri vytváraní nezabudnite jednotlivé položky (EAST, NORTH, WEST a SOUTH) enumeračného typu inicializovať na správne hodnoty.

Úloha 3.2:

Aktualizujte svoj kód použitím enumeračného typu Direction vo svojej implementácii.
Všetky číselné konštanty, ktoré používate na reprezentáciu smerov, nahraďte položkami enumeračného typu. Taktiež všetky premenné, ktoré nesú informáciu o smere (orientácii) robota Karla, pretypujte na typ Direction.

Úloha 3.3:

Vytvorte enumeračný typ Boolean, ktorý bude mať len dve hodnoty: TRUE (pravda, hodnota 1) a FALSE (nepravda, hodnota 0).

Úloha 3.4:

Aktualizujte svoj kód použitím enumeračného typu Boolean vo svojej implementácii.
Aktualizácia sa bude týkať najmä všetkých senzorov - ich návratového typu, ako aj porovnávaní výstupnej hodnoty zo senzoru s konkrétnou číselnou hodnotou (1 alebo 0).

Krok č. 4

V poslednom kroku implementujete zvyšné senzory robota Karla. Ich prehľad ako aj význam nájdete na tejto linke.

Úloha 4.1:

Postupne implementujte zvyšné senzory robota Karla.

Úloha 4.2:

Overte správnosť svojho riešenia overením fungovania jednotlivých senzorov.

Doplňujúce úlohy

  1. Robot Karel nesmie vykonať žiadny príkaz, pokiaľ nie je zapnutý. Upravte svoju implementáciu tak, aby primitívy ako aj samotné senzory robota Karla nebolo možné použiť skôr, ako bol robot Karel zapnutý pomocou funkcie turnOn().
  2. Pridajte do Vášho riešenia komentáre a vygenerujte k nemu dokumentáciu vo formáte html prostredníctvom nástroja Doxygen.
    Poznámka:
    Základné informácie k nástroju Doxygen nájdete na jeho webovej stránke, v pokynoch k vypracovaniu zadania č. 1 a v referenčnej príručke na stránkach predmetu Programovanie.
$Id$