====== 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 ([[https://www.tutorialspoint.com/pascal/pascal_case_statement.htm|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?"); }