Entscheidungen mit if und switch
If Anweisungen
Verzweigungen ermöglichen in Abhängigkeit einer Bedingung eine unterschiedliche Code-Ausführung. Verzweigungen werden in C++ mit Hilfe des Schlüsselwortes if erstellt.
Der grundsätzliche Aufbau einer if-Kontrollstruktur sieht wie folgt aus.
- if (BEDINGUNG)
- {
- ANWEISUNGSBLOCK
- }
Die Bedingung muss true zurück liefern, damit der Codeblock ausgeführt werden kann. Die Struktur kann noch erweitert werden.
- if (BEDINGUNG)
- {
- ANWEISUNGSBLOCK
- }
- else
- {
- ANWEISUNGSBLOCK
- }
Es kann auch nach mehreren Bedingungen geprüft werden. Je nachdem, welche zutrifft wird dann der entsprechende Anweisungsblock ausgeführt.
- if (BEDINGUNG)
- {
- ANWEISUNGSBLOCK
- }
- else if (ANDERE_BEDINGUNG)
- {
- ANWEISUNGSBLOCK
- }
- else
- {
- ANWEISUNGSBLOCK
- }
Ein Bespiel wie sowas im Programm aussehen könnte:
Datei:
Quelldateien/main.cpp- #include <iostream> // std::cout, std::endl, std::cin
- #include <stdlib.h> // EXIT_SUCCESS
-
- int main(void)
- {
- int num;
- std::cout << "Bitte eine Zahl eingeben: " << std::endl;
- std::cin >> num;
-
- if (num == 1)
- {
- std::cout << "Eins" << std::endl;
- }
- else if (num == 2)
- {
- std::cout << "Zwei" << std::endl;
- }
- else
- {
- std::cout << "Andere Zahl" << std::endl;
- }
-
- std::cin.get();
- return EXIT_SUCCESS;
- }
Es gibt noch den Ternären Operator der mit if(....){....}else{....} gleichzusetzen ist. Mann kann ihn gut verwenden, wenn in den Anweisungsblöcken von if und else nur ein Befehl drin steht. Bespiel für if else Variante:
Datei:
Quelldateien/main.cpp- #include <iostream> // std::cout, std::endl, std::cin
- #include <stdlib.h> // EXIT_SUCCESS
-
- int main(void)
- {
- int num = 1;
- if (num == 1)
- {
- std::cout << "Eins" << std::endl;
- }
- else
- {
- std::cout << "Andere Zahl" << std::endl;
- }
-
- std::cin.get();
- return EXIT_SUCCESS;
- }
Beispiel für Ternäre Schreibweise:
Datei:
Quelldateien/main.cpp- #include <iostream> // std::cout, std::endl, std::cin
- #include <stdlib.h> // EXIT_SUCCESS
-
- int main(void)
- {
- int num = 1;
- (num == 1) ? std::cout << "Eins" << std::endl : std::cout << "Andere Zahl" << std::endl;
- // (BEDINGUNG) ? BEFEHL_FUER_WAHR : BEFEHL_FUER_FALSCH ;
-
- std::cin.get();
- return EXIT_SUCCESS;
- }
Switch case Anweisungen
Eine besondere Form der if-else if-else-Kontrollstruktur ist die switch-case-Anweisung.
Datei:
Quelldateien/main.cpp- #include <iostream> // std::cout, std::endl, std::cin
- #include <stdlib.h> // EXIT_SUCCESS
-
- int main(void)
- {
- int num;
- std::cout << "Gebe eine Zahl zwischen 1 und 3 ein:";
- std::cin >> num;
-
- switch (num)
- {
- case 1:
- case 3:
- {
- std::cout << "Ungerade Zahl eingegeben." << std::endl;
- break;
- }
- case 2:
- {
- std::cout << "Gerade Zahl eingegeben." << std::endl;
- break;
- }
- default:
- {
- std::cout << "Keine Zahl von 1 bis 3 eingegeben." << std::endl;
- break;
- }
- }
-
- std::cin.get();
- return EXIT_SUCCESS;
- }
Die Meldung, dass eine ungerade Zahl eingegeben wurde, wird nun ausgegeben, wenn die Zahl 1 oder die Zahl 3 vom Anwender eingegeben wurde. Indem hinter case 1: nämlich kein break angegeben wird, wird der darauffolgende Anweisungsblock hinter case 3: ausgeführt - bis die Programmausführung auf ein break trifft und die Kontrollstruktur abbricht.