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 hat_karte = true;
int alter = 15;
if (hat_karte) {
if (alter >= 18) {
printf("Viel Spaß beim Film\n");
} else {
printf("Tut mir leid, dieser Film ist nur für Erwachsene\n");
}
} else {
printf("Bitte kaufe zuerst eine Karte\n");
}Das gibt Folgendes aus:
Tut mir leid, dieser Film ist nur für ErwachseneDie innere if-Anweisung wird nur ausgeführt, wenn hat_karte wahr ist. Jedes else gehört zu dem if, dessen Block mit dem } direkt davor endet: das erste zu if (alter >= 18), das zweite zu if (hat_karte). 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. Mit denselben Variablen macht dieser Code dasselbe:
if (hat_karte && alter >= 18) {
printf("Viel Spaß beim Film\n");
} else if (hat_karte) {
printf("Tut mir leid, dieser Film ist nur für Erwachsene\n");
} else {
printf("Bitte kaufe zuerst eine Karte\n");
}Das Programm kommt nur zu else if (hat_karte), wenn die erste Bedingung falsch ist. Mit Karte bedeutet das, dass der Besucher unter 18 ist. Keine der beiden Schreibweisen ist falsch: Nimm die, die leichter zu lesen ist.
Wenn keine der beiden if-Anweisungen ein else hat, ist ein einzelnes if mit && fast immer klarer. Diese beiden Bedingungen:
if (hat_karte) {
if (alter >= 18) {
printf("Viel Spaß beim Film\n");
}
}machen dasselbe wie eine einzelne Bedingung mit einer Einrückungsebene weniger:
if (hat_karte && alter >= 18) {
printf("Viel Spaß beim Film\n");
}So schreibst du es:
Anweisungen
- 1
Um Achterbahn zu fahren, musst du mindestens 10 Jahre alt und mindestens 140 cm groß sein. Füge im
if-Block unter seinemprintfeine verschachtelteif-Anweisung hinzu: Wenngroessemindestens140ist, gibViel Spaß bei der Fahrt!aus, sonstDu musst mindestens 140 cm groß sein. Das Programm gibt Folgendes aus:Alter: 12, Größe: 135 cm Du bist alt genug Du musst mindestens 140 cm groß sein - 2
Ändere
groessein150und führe das Programm aus. Jetzt sind beide Bedingungen wahr, also gibt das ProgrammDu bist alt genugundViel Spaß bei der Fahrt!aus.