User manual
while (expr2) { 
Utasításblokk 
expr3; 
} 
A “for” hurok normál esetben számciklusként alkalmazandó. 
for (i = 0; i < n; i++) 
. . . 
Példa: 
#include “asuro.h” 
int main(void) { 
Init() 
int zaehler;       // Változó deklarálása számként 
for (zaehler=0; zaehler<10; zaehler++) {   // tízszer ismételni: 
SerWrite(“Mehet!\n”,12);  // “Mehet!” küldése 
} 
MotorDir(FWD,FWD);    // Mindkét motor előre 
MotorSpeed(120,120);    // Mindkét motor kb. félerővel előre 
while (1) {         // Ezután már semmit nem kell tenni! 
}  } 
“while(1)” ekvivalens a “for(;;)”-vel, egy végtelen ciklus, ami soha nem fejeződik be, mivel a megszakításhoz szükséges 
feltétel sohasem lesz hamis (azaz 0). 
További hurokfelépítés a “do” ciklus 
do 
Utasításblokk 
while( Feltétel); 
A “while” ciklussal ellentétben itt a feltétel igazságtartalma az utasításblokk végén kerül ellenőrzésre. Ez a ciklus legalább 
egyszer végigfut. 
9.1.6. Függvények 
A függvény definícióknak mindig a következő a formátuma: 
Függvénytípus FüggvényNév (ParaméterTípus 1 ParaméterNév 1, 
ParaméterTípus 2 ParaméterNév 2, ...) 
Remek, függvénydefiníciók! De mire jó ez az egész??? Nagyon praktikus, de kicsit bonyolultabb, és és egy kicsit később 
olvashatjuk... 
Gyakran előfordul, hogy egyes programrészekre a program különböző részein ismét szükségünk van. Ekkor vagy mindig 
újraírjuk (nagyon fárasztó és teljesen átláthatatlan), vagy egyszer meghatározunk egy függvényt. 
Gyakran szeretnénk egy függvénynek egy vagy több értéket átadni. Például egy (önállóan megírt) MenjEgyKicsitEloere()-
függvény egyszerűen nagyobb örömet okoz, ha meg tudjuk adni a sebességet, időtartamot vagy az útszakaszt. Ezt a 
paraméterekkel tehetjük meg. 
Esetenként előfordul az is, hogy egy függvény egy értéket visszaad. Könnyen elképzelhető egy HanyGombLettMegnyomva() -
függvény. Ez a függvény visszatérési értékén keresztül történik, ami valahogy és valahol a függvényben keletkezik és a return 
utasítással tér vissza. Ezért is minden függvény return-nel; vagy return SZAM; -mal végződik. 
Különleges függvényt képez a main () függvény. Ez egy programba történő ugrópont. Az ASURO-nál ez a függvény a 
bekapcsolásnál megy végbe. A main ()-függvénynek minden programban benne kell  lennie! 
Miután megismertük az összes adattípust és beszéltünk egy keveset a függvényekről, megpróbálkozunk egy kis példa 
fügvénnyel, ami két 8 bites számot sokszoroz és visszaadja az eredményt. 
int Mult(char a, char b) 
/* A függvény egy int-értéket ad vissza, aminek a neve Mult és két karaktert ad vissza 
paraméterként */ 
{    // A függvény kezdete 
int c;    // A c változó int-ként van meghatározva 
c = a * b;    // c kiszámítása 
return c;  // visszatér c-vel 
}    // A függvény vége 
Még egy kis rutin, ami az éppen meghatározott függvényt végrehajtja: 
int main (void)      // A main függvény mindig egy int számot ad vissza, 
// és nem nem kap átadott paramétert 
{    // A függvény kezdete 
char mult1,mult2;      // Két karakteres változó definiálása 
int erg;        // Egy int változó definiálása, aminek eredménye a 
// mult1 és mult2 változók szorzata 
// lesz 
mult1 = 2;         // Hozzárendelés 
mult2 = 10;       // Hozzárendelés 
erg = Mult(mult1,mult2);    // Az előre meghatározott Mult függvény előhívása 
return 0; 
}         // Vége 
9.1.7. Mutatók és vektorok 
A mutatókkal és tömbökkel itt csak olyan szinten foglalkozunk, amennyire az ASURO működtetéséhez szükséges. 
Amikor a vonalkövető érzékelők ill. az odometriai érzékelők kiolvasásra kerülnek, vektorokra van szükség. Ezek deklarációja 
egyszerű: 
int lData[2]; 
int oData[2]; 
A vonalérzékelőhöz és az odometriához az észlelést két vektor (l Data, o Data) 2 elemmel határozza meg. A [0] elemben az 
ASURO megfelelő függvényének (LineData(), OdometrieData ()) előhívása után a bal érzékelő értéke van, az [1] elemben a 
jobb érzékelőé. 
Ehhez egy kis példa: 
Ha mindkét vonalérzékelőnél a jobb oldali jobban meg van világítva, mint a bal, akkor az Utasítás 1-nek kell végrehajtódnia, 
egyébként az Utasítás 2-nek. 
int lData[2];     // A memória rendelkezésre állítása a mért értékhez 
LineData(lData);     // A mért érték beolvasása 
if (lData[1] > lData[0]) 
Utasítás1; 
else 
Utasítás2; 
A soros interfész funkcióinak (SerWrite(), SerRead() ) használatához jelsorozatokra van szükség. Ezek a következőképp 
vannak meghatározva: 
char message [] = “Itt egy szoveg van”; 
Egy jelsorozat küldéséhez az ASURO-nál csak a SerWrite() függvényt kell előhívni a megfelelő paraméterekkel. Az első 
paraméter adja meg a szöveget ill. a jelsorozat változót, a második paraméter megadja, hány jelet kell átvinnie a 
jelsorozatnak. 
SerWrite(message,20); 
ill. 
SerWrite(“Itt egy szoveg van”,20); 
Infra porton keresztül küldve “Itt egy szoveg van”. 
Ha jeleket szeretnénk fogadni, az ASURO a SerRead () függvényre van definiálva. Az első paraméter a jelsorozat változót 
tartalmazza, amiben a fogadott jelek tárolódnak, a második paraméter megadja, hány jelet kell fogadni, a harmadik egy 
lefutási időt képez. Ha a beállított időn belül (processzor taktus) nem érkezik adat, a függvény megszakad. Ha itt “0” van 
beállítva, a függvény megvárja az összes jel beérkezését. 
Ehhez is egy kis példa: 
Az ASURO-nak a “Hallo hier bin ich” üzenetet kell fogadnia az infra porton keresztül: 
char message [] = ”01234567890123456789”; 
A fogadandó szöveg részére a hely készen áll. Az imént előkészített jelsorozatnak elég nagynak kell lennie, hogy a fogadandó 
szöveget felvegye. 
SerRead(message,18,0); 










