Arduino – Feltételes végrehajtás

A programunk néha több lehetőség szerint futhat tovább, ezeket feltételekhez köthetjük, és a program a feltételek teljesülése esetén a megfelelő utasításokat hajtja végre.

if utasítás

Az „if” utasítás ellenőrzi, hogy a feltétel igaz-e. Ha igaz akkor végrehajtja az utasítást. A göndör zárójelek elhagyhatók az if (feltétel) után, ha csak egy feltételes utasítást kell végrehajtani. A pontosvessző jelzi az utasítás végét. Javaslom azonban a göndör zárójelek használatát mindenképp, mert átláthatóbbá teszi a kódot és ha később még egy sor utasítást szeretnénk hozzáírni a blokkhoz akkor szükség lesz rá. Figyeljünk rá, hogy a feltételben összehasonlító operátort használjunk. Ha véletlenül az egy egyenlőségjelet „=” használjuk, akkor az egy szimpla értékadás és a feltétel mindíg igaz lesz. Az „if” utasítást önállóan is használhatjuk.

int a = 10;

if(a == 10) 
{
  // utasítás, ha a feltétel igaz
}

else utasítás

Az „if” utasítás után megadhatunk egy opcionális „else” utasítást, amely akkor hajtódik végre, ha a kifejezés hamis.

int a = 10;

if(a == 10)
{
  // utasítás, ha a feltétel  igaz
}
else
{
  // utasítás, ha a feltétel hamis
}

else if utasítás

Az „if” utasítást követően egy opcionális „else if ” utasítást is megadhatunk, ha több különböző feltételt szerenénk megvizsgálni. Tetszőleges számú „else if” ágat megadhatink, míg „if” és „else” csak egy-egy lehet.

int a = 8;

if(a <= 10)
{
  // ha az első feltétel igaz
}
else if(a > 10)
{
  // ha az második feltétel igaz
}

Írhatunk „if – else if – else” kombinációt is, így több feltételt megvizsgálhatunk az „if – else if” szakaszokban és ha egyik sem igaz akkor az „else” kódblokkja fut le.

int a = 8;

if(a <= 10)
{
  // ha az "a" egyenlő vagy kisebb mint 10
}
else if(a > 10 && a <= 20)
{
  // ha az "a" 11 és 20 között van
}
else if(a > 20 && a <= 30)
{
  // ha az "a" 21 és 30 között van
}
else
{
  // ha egyik feltétel sem igaz 
}

switch case

Hasonló mint az „if – else if – else” utasítások, a „switch case” is egy vezérlési szerkezet. Előfordul, hogy ugyanazt a változót össze kell hasonlítani több különböző értékkel és más-más kódot végrehajtani a változó értékétől függően.

A „switch” feltételében megadott változó értékét hasonlítja össze a „case” cimke után megadott kifejezéssel. A „switch” utasításról utasításra lép. Utasítás csak akkor hajtódik végre, ha egy olyan „case” kifejezést talál, amely megegyezik a „switch” feltételében megadott változó értékével. Ezután addig folytatja az utasítások végrehajtását, amíg el nem éri a „switch” blokk végét, vagy nem találkozik egy „break” utasítással. Ha egyik „case” cimke sem egyezik, akkor a „default” cimke utasítása fut le.

switch (myVar) 
{
  case label1:
    // statements
    break;
  case label2:
    // statements
    break;
  default:
    // statements
    break;
}

? :  feltételes operátor

A feltételes operátor ” ? : ” három operandussal rendelkezik. A kettőspont két oldalán álló kifejezések közül mindig csak az egyik értékelődik ki.

(feltétel) ? (igaz_kifejezés) : (hamis_kifejezés);

Először az „feltétel” értékelődik ki, ha az értéke igaz, akkor a „igaz_kifejezés” kiértékelésre kerül, és a „hamis_kifejezés” figyelmen kívül marad. 

(igaz) ? (kiértékelődik) : (nem értékelődik ki);

Ha az „feltétel” hamis lesz, akkor az „igaz_kifejezés” marad figyelmen kívül és a „hamis_kifejezés” kerül kiértékelésre . 

(hamis) ? (nem értékelődik ki) : (kiértékelődik);

Az eredmény a „igaz_kifejezés” vagy a „hamis_kifejezés” értéke lesz, attól függően, hogy az „feltétel” igaz vagy hamis.


myVariable = (feltétel) ? (igaz_kifejezés) : (hamis_kifejezés);

A következő rész a ciklusokról szól.