Die switch-Anweisung (mehrseitige Auswahl)
Beispiel 1: Raumplan
Die Raumbelegung der Mehrzweckräume des Gymnasiums Kleinschwabhausen sieht heute so aus:
Raumnummer | Belegung |
---|---|
131 | Besprechung der Fachschaft Mathematik |
161 | Projekt 'Umwelt macht Schule' |
162 | Lehrerfortbildung zur Benutzung der neuen Whiteboards |
202 | Gesperrt (Renovierungsarbeiten) |
Nach Eingabe einer Raumnummer soll der Computer die Belegung ausgeben.
Natürlich könnte man das mit einer riesigen 'if' - 'else' - Konstruktion lösen:
if(raumnummer == 131){ println("Besprechung der Fachschaft Mathematik"); } else { if(raumnummer == 161){ println("Projekt 'Umwelt macht Schule'"); } else { // usw... } }
Das wird schnell unübersichtlich! Für solche Fälle gibt es die switch-Anweisung:
Die switch-Anweisung
switch(wert){ case wert1: Anweisungen1; break; case wert2: Anweisungen2; break; case wert3: Anweisungen3; break; case wert4: Anweisungen4; break; // usw... default: Default-Anweisungen; }
führt Anweisungen1
aus, falls wert == wert1
, sie führt Anweisungen2
aus, falls wert == wert2
usw.
Falls der Wert in keinem der case
-Blöcke enthalten sind, werden die Anweisungen des default
-Blocks ausgeführt.
Vorsicht: Die break-Anweisungen sind wichtig!
Die switch-Anweisung springt zum case-Block, der den richtigen Wert enthält, und führt die Anweisungen dort durch. Trifft sie auf kein break
, so führt sie auch die Anweisungen der nachfolgenden case
-Blöcke solange durch, bis sie dort endlich auf ein break
trifft.
Der Sinn dieser Festlegung (die bspw. in der Programmiersprache Pascal anders getroffen ist) ist, dass dadurch ermöglicht wird, gleichartige Fälle zusammenzufallsen, bspw.
switch(gewürfelteZahl){ case 1: case 3: case 5: println("Es wurde eine ungerade Zahl gewürfelt."); break; case 2: case 4: case 6: println("Es wurde eine gerade Zahl gewürfelt."); break; default: println("Bist Du sicher, dass Du mit einem sechsseitigen Würfel gewürfelt hast?"); }