Die Anweisung switch


Wenn Sie einen großen Entscheidungsbaum haben und alle Entscheidungen vom Wert derselben Variable abhängt, ziehen Sie vieleicht die Verwendung einer switch-Anweisung anstelle einer Serie von if...else-Anweisungen oder else if-Konstruktionen in Betracht. Hier folgt ein einfaches Beispiel mit dem Namen PLATERS, das besonderst Hifi-Nostalgiker anziehen wird:

// platters.cpp // Veranschaulicht SWITCH-Anweisung #include <iostream.h> void main() { int speed; // Plattentellerdrehzahl cout << "\nGeben Sie 33, 45, oder 78 ein: "; cin >> speed; // Anwender gibt Drehzahl des Plattenspielers ein switch(speed); // Auswahl auf Basis der eingegebenen Drehzahl { case 33: // Anwender hat 33 eingegeben cout << "LP-Album\n"; break; case 45: // Anwender hat 45 eingegeben cout << "Single-Auswahl\n"; break; case 75: // Anwender hat 78 eingegeben cout << "Schellackplatte\n"; break; } }

Es folgt ein Beispiel für die Ausgabe des Programms PLATTERS:

Geben Sie 33, 45 oder 78 ein: 45
Single-Auswahl

Die Anweisung break

Das Programm PLATTERS hat eine break-Anweisung am Ende jedes case-Abschnittes. Das Schlüsselwort break bewirkt, daß die gesamte switch-Anweisung beendet wird. Die Programmablaufsteuerung geht zur ersten Anweisung über, die dem Ende der switch-Konstrucktion folgt. Vergessen Sie nicht nicht, break; zu berücksichtigen, denn ohne diese Anweisung geht die Ablaufsteuerung weiter hinunter (oder »fällt durch«) zu den Anweisungen für den nächsten case-Körber, was Sie normalerweise nicht wollen. (Obwohl man diesen Umstand manchmal für ander Zwecke ausnutzen kann.)

switch-Anweisung mit Zeichenvariablen

Das Beispiel PLATTERS zeigte eine switch-anweisung, die auf eine Variable vom Typ int aufgebaut. Sie können auch den Typ char einsetzen. Es folgt unser Programm ADELSIF, neu geschrieben unter dem Namen ADSWITCH:

// adswitch.cpp // Veranschaulicht SWITCH anhand eines Programms für ein Abenteuerspiel #include <iostream.h> #include <conio.h> // Für die Funktion getche() void main() { char dir='a'; int x = 10, y = 10; while (dir != '\r') { cout << "\nIhre Position ist " << x << ", " << y; cout << "\nDrücken Sie eine Richtungstaste (n, s, o, w): "; dir = getche(); // Zeichen einlesen switch(dir) // Switch-Variable auf die setzen { case 'n': y--; break; // Gehe in Richtung Norden case 's': y++; break; // Gehe in Richtung Süden case 'o': x++; break; // Gehe in Richtung Osten case 'w': x--; break; // Gehe in Richtung Westen case '\r': cout << "Beenden\n"; break; // Enter-Taste default: cout << "Noch einmal versuchen\n"; // Unbekanntes Zeichen } // Ende der switch-Anweisung } // Ende des while-Körbers } // Ende der main-Funktion

(Beachen Sie, daß Sie zwar Ganzzahlen und Zeichen als Schaltvariablen verwenden können, wie es in den beiden letzten Beispiele gezeigt wurde, nicht aber Gleitkommazahlen.)

Das Schlüsselwort default

Im Programm ADSWITCH, bei der Sie erwarten, daß die letzte case-Bedingung am Ende der switch-Konstrucktion auftaucht, werden Sie stattdessen das Schlüsselwort default sehen. Dieses Schlüsselwort bietet der switch-Konstruktion die Alternative, eine Aktion zu ergreifen, wenn der Werd der Schleifenvariablen mit keiner case-Konstanten übereinstimmt.


21