V praktickej časti cvičenia si precvičíme 

  • písanie kódu 
  • kompiláciu
  • spustenie programu
  • algoritmizáciu s Karolom

Úloha 1: KARLOV SVET

Na obrázku vpravo je zobrazený Karlov svet. Karol je ten zobáčik ">" na pozícii (1,1). Svet je definovaný v súbore s príponou .kw. V tomto prípade to je empty.kw. V hornej časti sú zobrazené informácie ohľadom pozície, natočenia na svetovú stranu (EAST → NORTH → WEST → SUTH), počte značiek v batohu a počte značiek na aktuálnej pozícii

Úloha 1.1: Stiahnite svet a nakopírujte ho do vopred vytvoreného priečinka CV2.

Súbor môžete stiahnúť do vlastného PC a následne ho prekopírovať pomocou Moba X-term

Úloha 1.2: Napíšte zdrojový kód s názvom empty.c a skompilujte ho pomocou nástroja gcc s nasledovnými prepínačmi: -Werror -Wall  a knižnicami -lkarel -lcurses . Výstupný súbor nech sa volá EMPTY


 gcc -Werror -Wall empty.c -lkarel -lcurses -o EMPTY


  • turn_on("svet.kw") - zapne Karola, je to robot ...
  • turn_off() - vypne Karola

Úloha 1.3: Spustite program 

$ ./EMPTY

Ak chcete program ukončiť skôr ako sa skončí sám, použite klávesovú skratku: "ctrl+c".


Úloha 2: PRVÝ ALGORITMUS

inf. Ak Karol počas svojej chôdze nabúra do steny alebo prekážky, program skončí neúspešne ...


Úloha 2.1: Prinúťte Karola prejsť na koniec prvého riadka. Karol bude nakoniec stáť na pozícii (8, 1)

  • step() - jeden krok dopredu


Úloha 2.2: Prinúťte Karola jeden krát prejsť okolo celého sveta

  • turn_left() - otočenie o 90° vľavo
  • front_is_clear() - ak pred Karolom nie je stena tak vráti logickú hodnotu 1 ak tam stena je vráti logickú 0


Úloha 2.3: Prinúťte Karola donekonečna chodiť okolo celého sveta.


Úloha 2.4: Prinúťte Karola prejsť okolo celého sveta. Ak počas chôdze natrafí na značku tak svoju prechádzku ukončí.

  • Vložte do sveta značku (na piaty stĺpec a prví riadok, jedna značka),  → Editujte súbor empty.kw a doplňte takýto riadok: B 5 1 1 
  • beepers_present() - senzor na značky vráti logickú hodnotu 1 ak tam značka je v opačnom prípade vráti logickú 0


Úloha 2.5: Prinúťte Karola prejsť okolo celého sveta tak, aby nakoniec skončil tam kde začal (1, 1). Karol musí na začiatku a na konci svojej prechádzky mať rovnaký počet značiek v batohu (100).

  • Značku, ktorú ste pridali v predchádzajúcej úlohe zo sveta vymažte
  • put_beeper() - Karol položí značku (ak v batohu nemá značky a pokúša ich použiť tak error)
  • pick_beeper() - Karol zoberie značku a uloží ju do batohu  (ak nestojí na značke a pokúša ju vziať tak error)


Úloha 2.6: Prinúťte Karola prejsť celý svet (teda aspoň raz sa ocitne na každej pozícii sveta). Celý svet zaplní značkami tak, že na každej pozícii sveta bude práve jedna značka. Potom Karol svoju činnosť ukončí.

  • Algoritmus je už zložitejší, musíte prísť na to, ako Karol bude vedieť, že prešiel celý svet. 


Úloha 2.7: Vypracujte úlohy zverejnené tu: https://kurzy.kpi.fei.tuke.sk/zap/labs/02.html

  • môžete používať aj nástroj make


  • No labels