Zadanie č. 1: Karel the Robot Library
Znenie zadania
Vytvorte knižnicu v jazyku C pre tvorbu programov v programovacom jazyku Karel. V rámci knižnice vytvorte všetky funkcie, ktoré sú definované na stránke API (bez nutnosti implemenovať funkciu setStepDelay()).
Všeobecné informácie
Odovzdané zadanie prejde kontrolou originality, ktorá sa uskutoční voči aktuálne vypracovaným zadaniam ako aj zadaniam z minulých rokov. Pokiaľ sa zistí, že študent odovzdal kópiu iného riešenia, nesplní základnú podmienku získania zápočtu a ten mu nebude udelený (bez možnosti opätovného pokusu odovzdať zadanie). Pokiaľ odovzdané zadanie bude vlastné iba čiastočne, zadanie nebude akceptované. Študent bude mať ešte jeden pokus dopracovať zadanie, ale jeho hodnotenie bude penalizované do -5 bodov. O výške penalizácie rozhodne príslušný cvičiaci.
Toto zadanie je zamerané na overenie znalostí z nasledujúcich oblastí:
- práca s jednorozmerným a dvojrozmerným poľom,
- údajové štruktúry, a
- enumeračné typy.
Požiadavky pre úspešné odovzdanie zadania
- projekt musí byť odovzdaný včas pomocou LMS Moodle v správnom formáte (viď nižšie)
- knižnica musí obsahovať implementáciu všetkých príkazov, ktoré sú uvedené na stránke API
- funkcia turnOn() musí vedieť načítať svet robota Karla v dohodnutom formáte
- počas prekladu nemôže dôjsť ku žiadnemu varovaniu (warning) a ani ku žiadnej chybe (error)
-
vo výslednej implementácii sa môžu nachádzať len dve globálne premenné:
- karel - premenná štruktúrovaného typu, ktorá obsahuje všetky potrebné informácie o robotovi Karlovi
- world - premenná štruktúrovaného typu, ktorá obsahuje všetky potrebné informácie o svete, v ktorom sa robot Karel pohybuje
- vytvorený kód musí byť okomentovaný a to najmä všetky deklarácie funkcií, všetky vytvorené vlastné typy (enumeračné, štruktúrované) spolu s ich položkami, všetky makrá a všetky globálne premenné
-
projekt sa bude prekladať prekladačom gcc pomocou nasledovných prepínačov:
$ gcc -std=gnu99 -Werror -pedantic
Štruktúra balíčka na odovzdanie
Zadanie sa odovzdáva formou zip balíčku, pričom jeho názov bude reprezentovaný jedinečným identifikátorom študenta s rokom odovzdavania v tvare: ROK_AB123CD.zip. Zip balíček bude obsahovať nasledujúcu štruktúru priečinkov, pričom počiatočné lomítko '/' reprezentuje koreňový priečinok v balíčku:
- /src/ - priečinok, v ktorom sa budú nachádzať zdrojové kódy, resp. celý projekt uložený vo vývojovom prostredí; vo vnútri tohto priečinku sa musia nachádzať súbory main.c, karel.c a karel.h.
- /doc/ - priečinok, v ktorom sa bude nachádzať dokumentácia ku zadaniu (viď nižšie) buď v samostatnom súbore documentation.pdf alebo vo forme vygenerovaného priečinku html/ z programu Doxygen.
-
/readme.txt - súbor, v ktorom budú uvedené informácie o autorovi:
NAME : NAME SURNAME STUDENT ID : ab123cd E-MAIL : name@student.tuke.sk YEAR : 9999
Poznámka: Je dôležité, aby vaše súbory zachovali uvedenú štruktúru. Ak sa niektorý zo súborov nachádza v balíčku, ale mimo uvedenej štruktúry, bude to považované za chybu a takto odovzdaný balíček nebude považovaný za správny.
Dokumentácia
Dokumentácia ku zadaniu je reprezentovaná dokumentom vo formáte .pdf a sa skladá z týchto častí:
- Titulná strana
- Znenie zadania - Viď vyššie na tejto stránke.
- Dodefinovanie zadania - V tejto časti uveďte obmedzujúce podmienky riešenia, ako napr. maximálna výška a šírka sveta; max. počet značiek, ktoré sa môžu nachádzať u Karla v batohu a pod.
- Návrh riešenia úlohy - V tejto časti opíšte vlastný návrh riešenia úlohy (analýzu problému) spolu s návrhom vlastných údajových štruktúr, enumeračných typov a nových typov, ktoré budú reprezentovať potrebné objekty v problémovej oblasti.
-
Použitie programu - V krátkosti opíšte, ako je možné vaše riešenie použiť - ako postupovať pri preklade a spúšťaní programu. Táto časť by teda mala obsahovať
- informácie o použití programu spolu so zoznamom parametrov, pomocou ktorých je ho možné spustiť (tzv. používateľská príručka),
- informácie o preklade programu so zoznamom všetkých potrebných prepínačov a volieb, a
- zoznam všetkých chybových správ (napr. ak sa Karel pokúsi vziať značku z miesta, na ktorom žiadna značka nie je).
- Záver - V tejto časti zhodnoťte svoje riešenie a opíšte ďalšie prípadné možnosti využitia a rozšírenia v súvislosti s existujúcimi obmedzeniami riešenia.
- Príloha: Referenčná dokumentácia - pozostáva z dokumentácie všetkých vytvorených funkcií, údajových štruktúr, vlastných typov, enumeračných typov a globálnych premenných. Pre vytvorenie je vhodné použiť automatizovaný nástroj (napr. Doxygen), ktorý dokumentáciu automaticky generuje z komentárov. Využiť môžete predpripravený konfiguračný súbor Doxyfile. Doxygen je možné spustiť aj na serveri omega.tuke.sk z príkazového riadku príkazom doxygen. Vygenerovaná dokumentácia nemusí byť súčasťou .pdf súboru s dokumentáciou, ale stačí výstup vo formáte HTML uložiť do priečinku doc/html/.