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();
}
}