2.12. Többszörös választás (switch utasítás)
Ha egy programban egyetlen változó értékétől függően nagyon sokfelé ágazhat a végrehajtás, az if-else szerkezet egy idő után átláthatatlanná és nehezen olvashatóvá válhat. Ilyenkor érdemes a switch (többágú elágazás) utasítást használni.
A switch megvizsgálja egy változó (vagy kifejezés) értékét, és az annak pontosan megfelelő case (eset) ágra ugrik. Minden ágat egy break utasítással kell lezárni, ami kilépteti a programot a vizsgálatból.
Általános forma:
switch (változó)
{
case érték1:
// utasítások, ha a változó == érték1
break;
case érték2:
// utasítások, ha a változó == érték2
break;
default:
// utasítások, ha egyik fenti értékkel sem egyezik (opcionális, mint az else)
break;
}
16. feladat
Kérjünk be egy érdemjegyet számként (1-5), majd a switch utasítás segítségével írjuk ki szövegesen (elégtelen, elégséges, közepes, jó, jeles)! Ha a szám nem 1 és 5 közötti, írjuk ki, hogy "Hibás adat!" Név: Switch1.
Megoldás:
static void Main(string[] args)
{
int jegy;
Console.Write("Kérek egy érdemjegyet (1-5): ");
jegy = Convert.ToInt32(Console.ReadLine());
switch (jegy)
{
case 1:
Console.WriteLine("Elégtelen");
break;
case 2:
Console.WriteLine("Elégséges");
break;
case 3:
Console.WriteLine("Közepes");
break;
case 4:
Console.WriteLine("Jó");
break;
case 5:
Console.WriteLine("Jeles");
break;
default:
Console.WriteLine("Hibás adat!");
break;
}
Console.ReadKey();
}
Gyakorló feladatok
- Készítsen programot, amely egy 1 és 12 közötti szám beolvasása után kiírja a képernyőre az adott hónap nevét! Ha a szám nem ebben a tartományban van, jelezze a hibát!
- Kérjen be egy karaktert (pl. 'a', 'b' vagy 'c'), amely egy menüpontot jelképez! A
switchutasítás segítségével írja ki, hogy melyik menüpontot választotta a felhasználó (pl. 'a' -> "Adatbevitel", 'b' -> "Feldolgozás", 'c' -> "Kilépés"). - Készítsen egy egyszerű számológépet! Kérjen be két számot, majd kérjen be egy műveleti jelet (
+,-,*,/) szövegként vagy karakterként! Aswitchutasítással végezze el a kért műveletet a két számon, és írja ki az eredményt! Ügyeljen arra, hogy osztás esetén a nullával való osztást a program ne engedje meg! - Kérje be a hét egy napjának sorszámát (1-7), és döntse el róla egy
switchutasítással, hogy az adott nap munkanap-e vagy hétvége! (Tipp: Aswitchszerkezetben többcaseág is összevonható, ha ugyanazt az eredményt adják, példáulcase 1: case 2: ...)