Karel and his Sensors
Ciele
- Porozumieť a vedieť využiť vo svojich programoch štruktúry a štruktúrované typy.
- 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_.
Ú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
- 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().
-
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.
Ďalšie zdroje
- Rudolf Pecinovský: Základy algoritmizace
- Pavel Herout: Učebnice jazyka C (1. díl) - 14.1, 14.2
$Id$
Poznámka: