Függvények




Ha egy hosszabb, bonyolultabb programot írunk már nem elegendő az utasítás blokkokat egyszerűen egymás után írni a főciklusban. Mert lesz olyan blokk amit többször meg kell ismételnünk, sőt lesznek olyan feltételes elágazások vagy ciklusok amik nem azt fogják végrehajtani amit mi szeretnénk. Itt jönnek képbe a függvények. A függvények olyan utasítás blokkok amik a program bármely részéről meghívhatók, viszont addig nem hajtódnak végre míg meg nem hívódnak, tehát a főciklus futása nem befolyásolja őket.

void setup(){
pinMode(13,OUTPUT);
Serial.begin(9600);
}

void loop(){
if(Serial.available()){
Serial.read();
blink5();
}
}

void blink5()
{
for(int i=0;i<5;i++){
digitalWrite(13,HIGH);
delay(500);
digitalWrite(13,LOW);
delay(500);
}
return;
}



Ez a progi egy olyan függvény használatát mutatja be ahol nincs átadandó paraméter se vissza térési
érték. Működéséről csak annyit, ha elküldünk egy karaktert a soros monitorból akkor az beindítja a
függvényünket ami ötször felvillantja a beépített ledet.
Amire figyelni kell: a függvény meghívása a főciklusból történik a függvény nevével, mindig zárni kell a hívást pontosvesszővel. pl.: fugg();
A függvények mindig a főciklus után helyezkednek el. Lezárjuk a loop ciklust a kapcsos zárójellel
és csak utána hozzuk létre a függvényt.
Ha függvénynek nincs paramétere akkor a függvény név mindig void-al kezdődik. Pl.: void fugg()
Ha lefut a függvény a return utasítás segítségével adjuk vissza a program futását a főciklusnak.

Most nézzünk meg egy paraméter átadást, ilyenkor a függvény hívásnál egy vagy több paramétert is
továbbítunk a függvény felé.

int db;
void setup(){
pinMode(13,OUTPUT);
Serial.begin(9600);
}


void loop(){
if(Serial.available()){
db = Serial.read( );
blink5(db-48);
}
}


void blink5(int vill)
{
Serial.println(vill);
for(int i=0;i<vill; i++){
digitalWrite(13,HIGH);
delay(500);
digitalWrite(13,LOW);
delay(500);
}
return;
}


A szabályok itt is szinte ugyan azok mint első esetben. Változás a függvény hívásban van, be kell
írni a zárójelek közé a továbbítandó értéket vagy értékeket. pl.: fugg(szam), fugg(szam,betu)
A függvény fejléce is változik, ugyan úgy voiddal kezdődik (mivel nincs visszatérési érték ) mint
a paraméterek nélküli függvény, de a zárójelek között már deklarálni kell egy ugyan olyan típusú változót mint amilyen a függvény hívásában van. A hívásban közölt érték ennek a változónak adódik át, a függvény már ezt a változót használja.


Nézzük meg a harmadik esetet is ilyenkor a függvénynek visszatérési értéke is van, ez a következő képpen mutat:


int db;
void setup(){
pinMode(13,OUTPUT);
Serial.begin(9600);
}

void loop(){
if(Serial.available()){
db = Serial.read( );
Serial.println(blink5(db-48));
}
}

int blink5(int vill)
{
int ertek= 0;
Serial.println(vill);
for(int i=0;i<vill;i++){
digitalWrite(13,HIGH);
delay(500);
digitalWrite(13,LOW);
delay(500);
ertek = analogRead(0);
}
return ertek;
}

A visszatérési értéket a függvény hívásánál kapjuk vissza, a minta progiban a következő képpen:
Serial.println(blink5(db-48));
Itt a soros monitorra íródik ki a visszatérési érték, persze előbb meghívja a függvényt, végrehajtja azt majd ezután tér vissza a kiíratáshoz. A visszatérési értéket változóban is elmenthetjük:
g = blink5(db-48);

A függvény fejlécében fel kell tüntetni a visszatérési érték típusát, a függvényen belül létre kell
hozni egy hasonló típusú változót amivel dolgozni fogunk, majd ennek a változónak az értékét
kell visszaküldeni a return utasítással visszatérési értékként. pl.: return ertek;


Röviden ennyit a függvények létrehozásáról és kezeléséről, remélem mindenkinek megkönnyíti a
további programozást.