Elől és hátul tesztelős ciklus


Újabb ciklusokkal fogunk ebben a részben foglalkozni. Először is nézzük az elöl tesztelős ciklust:

while(kifejezés){
utasítások
}

A lényege, hogy először megvizsgálja a kifejezést és csak akkor hajtja végre az utasításokat ha
az igaz. Tehát ha a kifejezés értéke elsőre se igaz akkor egyáltalán nem hajtódik végre a ciklus.

void setup(){
Serial.begin(9600);// soros monitor bit sebessége
}
void loop(){
int a = 0;// helyi változó létrehozása
while(a<19){ // a ciklus addig fut míg a értéke kisebb mint 19
a++;
Serial.print(a);// kiíratjuk a változó értékét
Serial.print(" ");//egy szóköz kihagyás
delay(100);
}
Serial.println();// sor emelés a ciklus lefutása után
}

Ez egy egyszerű példaprogram, a soros monitorra íratjuk ki a ciklusváltozó értékeit, ha hamissá
válik a kifejezés a while ciklusból vissza adódik a vezérlés a loopba, ahol emelünk egy sort a
soros monitoron és nullázzuk a változónkat. Aztán újra kezdődik minden...

A hátul tesztelős ciklus:

do{
utasítások
}while(kifejezés);

Elől tesztelésben ha a változó értéke eléri a 19-et a ciklus már nem hajtódik végre, most nézzük a
hátul tesztelős ciklust ugyan evvel a kóddal:

void setup(){
Serial.begin(9600);
}
void loop(){
int a = 0;
do
{
a++;
Serial.print(a);
Serial.print(" ");
delay(100);
}while(a<19);
Serial.println();
}

Ha lefuttatjuk ugyan azt az eredményt kapjuk mint az első proginál, de akkor mi a különbség?
Módosítsuk programunkat, az int a = 0; sor nulláját írjuk át 19-re, futtassuk le így a progit.
Itt látszik a különbség, a soros monitora kiíródik a 20 és csak utána áll le a ciklus, ill. kezdődik
előröl a loop ciklus (a progi írja a 20-asokat). Tehát ez az utótesztelés lényege, bármilyen
kezdőértéket beállíthatunk a ciklus egyszer mindenképp le fog futni.