Verschachtelte Bedingungen
Ein Codeblock kann beliebigen Code enthalten, auch eine weitere if-Anweisung. Ein if im Block eines anderen if heißt verschachtelte Bedingung. Sie ist nützlich, wenn eine Frage erst nach einer anderen Sinn ergibt. Im Kino prüfen wir zum Beispiel zuerst, ob der Besucher eine Karte hat, und erst dann, wie alt er ist:
bool hatTicket = true;
int alter = 15;
if (hatTicket) {
if (alter >= 18) {
std::cout << "Viel Spaß beim Film" << std::endl;
} else {
std::cout << "Tut mir leid, dieser Film ist nur für Erwachsene" << std::endl;
}
} else {
std::cout << "Bitte kaufe zuerst eine Karte" << std::endl;
}Das gibt aus:
Tut mir leid, dieser Film ist nur für ErwachseneDie innere if-Anweisung wird nur ausgeführt, wenn hatTicket wahr ist. Jedes else gehört zu dem if, dessen Block mit der } direkt davor endet: das erste zu if (alter >= 18), das zweite zu if (hatTicket). Die Einrückung zeigt das auf einen Blick: Die inneren Blöcke sind um 4 weitere Leerzeichen eingerückt, insgesamt 8, und jedes else ist so weit eingerückt wie sein if.
Verschachtelte Bedingungen lassen sich oft mit && und else if umschreiben. Dieser Code tut dasselbe:
bool hatTicket = true;
int alter = 15;
if (hatTicket && alter >= 18) {
std::cout << "Viel Spaß beim Film" << std::endl;
} else if (hatTicket) {
std::cout << "Tut mir leid, dieser Film ist nur für Erwachsene" << std::endl;
} else {
std::cout << "Bitte kaufe zuerst eine Karte" << std::endl;
}Das Programm kommt nur zu else if (hatTicket), wenn die erste Bedingung falsch ist. Mit Karte bedeutet das, dass der Besucher unter 18 ist. Keine der beiden Arten ist falsch: Nimm die, die sich leichter lesen lässt.
Hat keine der beiden if-Anweisungen ein else, ist ein einzelnes if mit && fast immer übersichtlicher. Diese zwei Bedingungen:
if (hatTicket) {
if (alter >= 18) {
std::cout << "Viel Spaß beim Film" << std::endl;
}
}tun dasselbe wie eine einzelne Bedingung mit einer Einrückungsebene weniger:
if (hatTicket && alter >= 18) {
std::cout << "Viel Spaß beim Film" << std::endl;
}So schreibst du es:
Anweisungen
- 1
Nur wer mindestens 10 Jahre alt und gleichzeitig mindestens 140 cm groß ist, darf Achterbahn fahren. Schreibe die zwei verschachtelten
if-Anweisungen als eine einzigeif-Anweisung um, die beide Bedingungen mit&&verbindet. Das Programm gibt weiterhinDu darfst Achterbahn fahrenaus. - 2
Gib der neuen
if-Anweisung einenelse-Zweig, derDu darfst noch nicht Achterbahn fahrenausgibt, und änderealterin8. Das Programm gibtDu darfst noch nicht Achterbahn fahrenaus. Mit verschachtelten Bedingungen bräuchtest du zwei identischeelse-Zweige, einen für jedesif.