C Sharp programozás/Vezérlési szerkezetek

Vezérlési szerkezetek

Vezérlési szerkezetnek a program utasításainak sorrendiségét szabályozó konstrukciókat nevezzük.

Szekvencia

A legegyszerűbb vezérlési szerkezet a szekvencia. Ez tulajdonképpen egymás után megszabott sorrendben végrehajtott utasításokból áll.

Elágazás

Gyakran előfordul, hogy meg kell vizsgálnunk egy állítást, és attól függően, hogy igaz vagy hamis más-más utasítást kell végrehajtanunk. Ilyen esetekben elágazást használunk:

using System; 
 
class Conditional 
{ 
       static public void Main() 
       { 
               int x = 10; 
                
               if(x == 10) //Ha x == 10 
               { 
                       Console.WriteLine("X == 10"); 
               } 
               Console.ReadKey(); 
       } 
}

Mi van akkor, ha azt is jelezni akarjuk, hogy „x” nem egyenlő tízzel? Erre való az „else” ág, ez akkor hajtódik végre, ha a program nem talál más feltételt. Ezt az ágat nem kötelező megadni:

using System; 
class Conditional 
{ 
       static public void Main() 
       { 
               int x = 10; 
               if(x == 10) //Ha x == 10 
               { 
                       Console.WriteLine("X == 10"); 
               } 
               else //De ha nem annyi 
               { 
                       Console.WriteLine("X nem egyenlo tizzel!"); 
               } 
               Console.ReadKey(); 
       } 
}


Arra is van lehetőségünk, hogy több feltételt is megvizsgáljunk, ekkor „else-if” –et használunk:

using System; 
 
class Conditional 
{ 
       static public void Main() 
       { 
               int x = 12; 
                
               if(x == 10) //Ha x == 10 
               { 
                       Console.WriteLine("X == 10"); 
               } 
               else if(x == 12) //Vagy x == 12 
               { 
                       Console.WriteLine("X == 12"); 
               } 
               else //De ha nem annyi 
               { 
                       Console.WriteLine("X nem egyenlo tizzel és tizenkettovel sem!"); 
               } 
               Console.ReadKey(); 
       } 
}

A program az első olyan ágat fogja végrehajtani aminek a feltétele teljesül (termszetesen előfordulhat, hogy egyik sem lesz jó, ekkor nem történik semmi). Egy elágazásban pontosan egy darab if bármennyi else-if és pontosan egy else ág lehet. Egy elágazáson belül is írhatunk elágazást.

Az utolsó példában egy darab változó értékét vizsgáljuk. Ilyen esetekben azonban van egy egyszerűbb és elegánsabb megoldás, mégpedig a „switch-case” szerkezet. Ezt akkor használjuk, ha egy változó több lehetséges állapotát akarjuk vizsgálni:

using System; 
 
class Switch 
{ 
       static public void Main() 
       { 
               int x = 10; 
                
               switch(x) 
               { 
                       case 10: 
                               Console.WriteLine("X == 10"); 
                               break; 
                       default: 
                               Console.WriteLine("Default"); 
                               break; 
               } 
               Console.ReadKey(); 
       } 
}

A switch–en belül elsőként megvizsgáljuk, hogy x egyenlő–e tízzel. Ha igen, kiírjuk és a break–kel kiugrunk a switch–ből (egyébként a break minden ilyen esetben alkalmazható, pl. megszakítjuk egy elágazás egy ágának végrehajtását). Ha viszont x nem egyenlő tízzel, akkor a default–ra ugrunk, ami gyakorlatilag megfelel egy else ágnak. Az egyes esetek utasításai után meg kell adni, hogy hol folytassa a program a végrehajtást. Ezt vagy a break –kel tesszük a már látott módon, vagy valamilyen „ugró” utasítással (jump, return, goto, stb…):

using System; 
 
class Program 
{ 
       static public void Main() 
       { 
               Console.WriteLine("Adjon meg egy szamot: "); 
               int x = int.Parse(Console.ReadLine()); 
                
               switch(x) 
               { 
                       case 12: 
                               Console.WriteLine("X == 12"); 
                               break; 
                       case 10: 
                               goto default; 
                       default: 
                               Console.WriteLine("Default"); 
                               break; 
               } 
                
               Console.ReadKey(); 
       } 
}