Benutzer-Werkzeuge

Webseiten-Werkzeuge


wenndann:switch:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.


wenndann:switch:start [2024/08/31 10:03] (aktuell) – angelegt - Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 +====== 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:
 +
 +<code learnj>
 +if(raumnummer == 131){
 +   println("Besprechung der Fachschaft Mathematik");
 +} else {
 +   if(raumnummer == 161){
 +      println("Projekt 'Umwelt macht Schule'");
 +   } else {
 +      // usw...
 +   }
 +}
 +</code>
 +Das wird schnell unübersichtlich! Für solche Fälle gibt es die switch-Anweisung:
 +
 +<HTML>
 +
 +<div class="java-online" style="height: 400px; width: 100%" data-java-online="{'withBottomPanel': false, 'id': 'WennDann1'}">
 +
 +<script type="text/plain" title="Main.java">
 +int raumnummer = Input.readInt("Bitte geben Sie die Raumnummer ein:");
 +
 +switch(raumnummer){
 +   case 131:
 +      println("Besprechung der Fachschaft Mathematik");
 +      break;
 +   case 161:
 +      println("Projekt 'Umwelt macht Schule'");
 +      break;
 +   case 162:
 +      println("Lehrerfortbildung zur Benutzung der neuen Whiteboards");
 +      break;
 +   case 202:
 +      println("Gesperrt (Renovierungsarbeiten)");
 +      break;
 +   default:
 +      println("Für diesen Raum liegen keine Belegungsdaten vor.");
 +}
 +</script>
 +</div>
 +
 +</HTML>
 +
 +<WRAP center round info 80%>
 +Die **switch-Anweisung**
 +<code learnj>
 +switch(wert){
 +   case wert1:
 +      Anweisungen1;
 +      break;
 +   case wert2:
 +      Anweisungen2;
 +      break;
 +   case wert3:
 +      Anweisungen3;
 +      break;
 +   case wert4:
 +      Anweisungen4;
 +      break;
 +   // usw...
 +   default:
 +      Default-Anweisungen;
 +}
 +</code>
 +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.
 +</WRAP>
 +
 +<WRAP center round important 80%>
 +**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.
 +<code learnj>
 +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?");
 +}
 +</code>
 +</WRAP>