Lektion 19:

switch

 Oft kommt es vor, daß in einer else-if-Orgie immer nur die gleiche Variable auf verschiedene Werte geprüft wird. Speziell für diese Anwendung gibt es das Schlüsselwort switch. Die Werte, auf die geprüft wird, müssen aber Konstanten sein.

#include <iostream.h>

void main()
{
   double zahl1;
   double zahl2;
   int operation;
   cout<<"Volkards primitives Taschenrechner-Programm"<<endl;
   cout<<"Zahl1: ";
   cin>>zahl1;
   cout<<"Zahl2: ";
   cin>>zahl2;
   cout<<"Operation (1=+,2=-,3=*,4=/): ";
   cin>>operation;
   switch(operation)
   {
   case 1:
      cout<<zahl1+zahl2<<endl;
      break;
   case 2:
      cout<<zahl1-zahl2<<endl;
      break;
   case 3:
      cout<<zahl1*zahl2<<endl;
      break;
   case 4:
      cout<<zahl1/zahl2<<endl;
      break;
   };
};

 Die break-Befehle sind notwendig, damit der Computer die Abarbeitung der Befehle im switch-Block beendet und hinter die schließende geschweifte Klammer springt. Mit dem Weglassen dieser break-Befehle kann man dafür sorgen, daß für mehrere Konstanten derselbe Code ausgeführt wird.

   switch(operation)
   {
   case 1:
      cout<<zahl1+zahl2<<endl;
      break;
   case 2:
      cout<<zahl1-zahl2<<endl;
      break;
   case 3:
      cout<<zahl1*zahl2<<endl;
      break;
   case 4:
      cout<<zahl1/zahl2<<endl;
      break;
   case 5:
   case 6:
   case 7:
   case 8:
   case 9:
   case 0:
      cout<<"Diese Ziffer ist nicht belegt.\n";
   };

Hier ist das letzte break weggelassen worden. Das ist nicht schlimm, denn ganz am Ende gibt es keine weiteren Befehle im switch-Block, die übersprungen werden müßten.

Es ist auch möglich, einen Zweig anzugeben, der durchlaufen werden soll, wenn keiner der Werte zutrifft. Das Schlüsselwort hierfür heißt default.

   case 8:
   case 9:
   case 0:
      cout<<"Diese Ziffer ist nicht belegt."<<endl;
      break;
   default:
      cout<<"Das war noch nicht einmal eine Ziffer."<<endl;
   };


Falls Ihnen Fehler im Text auffallen oder Sie Verbesserungsvorschläge haben, dann schicken Sie mir bitte eine Mail. Ich werde mich dann sofort darum kümmern.
[aktuelle Version] [inhalt] [index]      [Fehlerkorrektur, Verbesserungsvorschlag]

© Volkard Henkel <volkard@normannia.de>, last update: 08/25/00