Das switch-Konstrukt dient der Fallunterscheinung und bedeutet übersetzt “schalten”. Eine übergebene Variable dient der switch-Anweisung dabei als Schalter. Im Anweisungsblock übernehmen Sprungmarken (case)die weitere Arbeit. Diesen Sprungmarken folgt eine Konstante sowie ein Doppelpunkt.
Ein kleines Beispiel:
1 2 3 4 5 6 7 8 9 10 11 | switch(Variable) { case 10: case 20: case 30: case 40: } |
Die Anzahl der case-Anweisungen ist beliebig. Hat die Variable den Wert 10 wird die entsprechende case-Anweisung und alle folgenden ausgeführt.
1 2 3 4 5 6 7 8 9 10 11 | switch(Variable) { case 10: cout << "Variable hat den Wert 10." << endl; case 20: cout << "Variable hat den Wert 20." << endl; case 30: cout << "Variable hat den Wert 30." << endl; case 40: cout << "Variable hat den Wert 40." << endl; } |
Nimmt Variable den Wert 40 an sieht die Ausgabe in Ordnung aus. Sollte der Wert der Variable aber bei 10 liegen erscheint der Text für alle case-Anweisungen.
Die Ausführung aller nachfolgenden case-Anweisungen kann nur durch die Verwendung der break-Anweisung unterbunden werden.
1 2 3 4 5 6 7 8 9 10 11 12 13 | switch(Variable) { case 10: cout << "Variable hat den Wert 10." << endl; break; case 20: cout << "Variable hat den Wert 20." << endl; break; case 30: cout << "Variable hat den Wert 30." << endl; break; case 40: cout << "Variable hat den Wert 40." << endl; } |
Die letzte Anweisung benötigt kein break, da der switch-Anweisungsblock sowieso endet.
Was aber, wenn keiner der Fälle zutrifft? Existiert keine zutreffende case-Anweisung, wird das Programm am Ende des switch-Anweisungsblockes fortgesetzt. Wenn dieser Fall abgefangen werden muss, benötigt man einen Fall, der dieses Problem löst. Dieser nennt sich default und wird immer dann angesprungen, wenn kein anderer Fall “zuständig” ist.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | switch(Variable) { case 10: cout << "Variable hat den Wert 10." << endl; break; case 20: cout << "Variable hat den Wert 20." << endl; break; case 30: cout << "Variable hat den Wert 30." << endl; break; case 40: cout << "Variable hat den Wert 40." << endl; break; default: cout << "Es wurde eine falsche Zahl eingegeben." << endl; } |
Nachfolgend wurde das obige Beispiel mit if-Anweisungen nachgebaut.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | if(Variable==10) cout << "Variable hat den Wert 10." << endl; else if(Variable==20) cout << "Variable hat den Wert 20." << endl; else if(Variable==30) cout << "Variable hat den Wert 30." << endl; else if(Variable==40) cout << "Variable hat den Wert 40." << endl; else cout << "Es wurde eine falsche Zahl eingegeben." << endl; // oder so if(Variable==10) cout << "Variable hat den Wert 10." << endl; else { if(Variable==20) cout << "Variable hat den Wert 20." << endl; else { if(Variable==30) cout << "Variable hat den Wert 30." << endl; else { if(Variable==40) cout << "Variable hat den Wert 40." << endl; else cout << "Es wurde eine falsche Zahl eingegeben." << endl; } } } |