Tu napíšte názov cvičenia.

Ciele
  1. Naučiť sa vytvárať nové príkazy pre robota Karla implementované ako funkcie v jazyku C.
Úvod
    Programovacie jazyky možno rozširovať definovaním nových funkcií. Tieto (ako nové konštrukcie) obohacujú jazyk a umožňnujú vytvárať zrozumiteľnejšie a lepšie štruktúrované programy. Aby sme funkciu vytvorili, musíme ju zadefinovať a až následne ju môžeme používať - teda volať. Nateraz si ukážeme, ako vyzerá definícia funkcie v jazyku C s najjednoduchším možným rozhraním - teda bez návratovej hodnoty a bez parametrov:
                void meno_funkcie(void) { 
                          /* telo_funkcie ... */ 
                } 
                
            
    Takéto funkcie nám pomôžu obohatiť množinu príkazov ktorým bude robot Karel rozumieť.
Postup
  1. V tomto kroku rozšírite slovník príkazov robota Karla o vlastné príkazy (funkcie). Upravíte riešenie príkladu z predošlého cvičenia a zjednodušíte ho vytvorením dvoch nových príkazov.
    Príklad: Vytvorte funkciu turnRight(), ktorá zabezpečí otočenie robota Karla o 90 stupňov vpravo.
    Riešenie: Keďže robot Karel pozná na otáčanie iba príkaz turnLeft(), ktorý ho otočí o 90 stupňov vľavo, musíme využiť túto Karlovu schpnosť aj pre novú funkcionalitu otočenia vpravo. Každá funkcia v jazyku C musí mať jedinečný názov (v našom prípade turnRight), návratovú hodnotu (v našom prípade nie je žiadna preto uvedieme void), zoznam formálnych parametrov (v našom prípade nie sú žiadne preto uvedieme za názvom funkcie len ()) a telo funkcie ohraničené zloženými zátvorkami, kde sa bude nachádzať samotný kód funkcie. Výsledná podoba nového Karolovho príkazu teda vyzerá nasledovne:
                        1	   void turnRight() {
                        2	      turnLeft();
                        3	      turnLeft();
                        4	      turnLeft();
                        5	   }
                        
                    
    Úloha: Vytvorte funkciu climbStair(), pomocou ktorej Karel vystúpi o jeden schod vyššie.
    Úloha: Upravte hlavnú funkciu programu main() tak, aby ste v nej využili vytvorené funkcie turnRight() a climbStair().
    Úloha: Overte správnosť upraveného riešenia jeho preložením a spustením.
    Úloha: Porovnajte počet riadkov výsledného programu pred použitím funkcií a po ich použití.
  2. Úloha: Zjednodušte riešenie doplňujúcej úlohy č. 1 z predchádzajúceho cvičenia použitím vlastných funkcií.
    Úloha: Robot Karel sa chce zúčastniť olympiády pre robotov (tzv. robolympiády). Jedna z disciplín, ktorej sa je možné v rámci olympiády zúčastniť, je prekážkový beh. Napíšte pre Karla program, pomocou ktorého zvládne zdolať rozcvičkovú prekážkovú trať nachádzajúcu sa v súbore training.kw. Pre úspešné zvládnutie prekážkového behu vytvorte funkciu jumpOver(), pomocou ktorej Karel preskočí práve jednu prekážku. Na jej vytvorenie využite ľubovoľné už vytvorené funkcie z riešení predchádzajúcich úloh. Všetky prekážky sú rovnako vysoké a Karel potrebuje trať prebehnúť z počiatočnej pozície [1,1] do koncovej pozície [5,1].
Doplňujúce úlohy
    Úloha: Cesta vedúca do areálu Technickej univerzity je za tie roky značne poškodená a vyznačuje sa väčším (občas aj menším) počtom dier v nej. Naprogramujte preto robota Karla tak, aby každú dieru, ktorú v ceste nájde, vyplnil značkou. Cesta, ktorú má Karel vyplniť, sa nachádza v súbore road.kw. Karel sa na začiatku nachádza na počiatočnej pozícii [1,2] a po zaplnení všetkých dier sa bude nachádzať na pozícii [5,2].
Doplňujúce zdroje
  1. Pavel Herout: Učebnice jazyka C (1. díl) - kapitoly 9.2.1 a 9.2.2
comments powered by Disqus