Feltételes elágazó utasítás - Arduino és programozása

Keresés a weboldalon

Programozási alapismeretek
Tartalomhoz ugrás

Főmenü:

Feltételes elágazó utasítás

Arduino programozása > Arduino programozása
Problémamegoldás során, gyakran előfordul,, hogy egy folyamat következő lépése valamely feltétel teljesülésétől függ. Amennyiben a feltétel nem teljesül, úgy a folyamat más eljárást végez el. Nem újdonság ez a jelenség, aki már foglalkozott excellel. Már ott lehetett találkozni ezzel a "ha...akkor...különben...", angolul "if...then...else..."  szerkezettel. Ezt az eljárást nevezzük feltételes programelágazásnak. Az oldalsó ábrán látható az utasítás folyamatábrája. A megadott feltétel teljesülése esetén az "akkor", "igen" vagy "then"  utasításszó utáni művelet kerül végrehajtásra, nem teljesülés esetén a "különben", "nem" vagy "else" utasításszócska utáni művelet. Az arduino programnyelve két formában is megjeleníti a feltételes elágazást.
if (feltétel)    { művelet; }
Feladata: A feltételes elágazás egyszerűsített -nem valódi- megvalósítása, ahol a zárójellek () közötti feltétel teljesülése esetén, a kapcsos zárójelek {} közötti művelet végrehajtódik, majd a folyamat folytatódik a következő utasítással, ahogy nem teljesülés esetén is ezzel folytatódik, csak nem kerül végrehajtásra a feltételes művelet.
Példa:  if (x >=0) { x = x - 1 }; //x értéke, ha nagyobb 0-nál, x értékét csökkenti 1-l, majd az if utasítás utáni műveletre lép
                                            //ha nem teljesül a feltétel, az utasítás utáni műveletetre lép, az x értékének csökkentése nélkül
Megjegyzés: a feltétel megadásánál kerüljük az egyenlőségjel (=) használatát, helyette (==) dupla egyenlőségjelet kell használni!
if (feltétel)    { művelet1; }  else { művelet2; }
Feladata: Valódi  feltételes elágazás ahol a zárójellek () közötti feltétel teljesülése esetén, a kapcsos zárójelek {} közötti művelet1 végrehajtódik, nem teljesülés esetén, az "else" utáni kapcsos zárójelben található müvelet2 kerül végrehajtásra.   
Példa: if (x >0) { x = x - 1 }; //x értéke, ha nagyobb 0-nál, x értékét csökkenti 1-l, majd az if utasítás utáni műveletre lép
                                            //ha nem teljesül a feltétel, az utasítás utáni műveletetre lép, az x értékének csökkentése nélkül
          else {digitalWrite (13, HIGH); } // x=0 értékre bekapcsola a 13-s port LED-je
Példa:
int swichstat = LOW; // kapcsoló állapot, kezdeti érték 0
int lastswichstat = LOW; // utolsó kapcsoló állapot
void setup() {
 // put your setup code here, to run once:

pinMode(31, OUTPUT); // 31-s LED beállítása
pinMode(45, INPUT_PULLUP); // 45-s porton lévő kapcsoló olvasásra állítása belső felhúzó ellenállással
}
void loop() {
 // put your main code here, to run repeatedly:
    
   swichstat = !digitalRead (45); // kapcsoló állapot negált értékének változóba olvasása
if (swichstat == HIGH && lastswichstat == HIGH) //Ha kapcsoló
   {
     digitalWrite (31, !digitalRead(31));
 }
lastswichstat = swichstat;
      
}
Vissza a tartalomhoz | Vissza a főmenühöz