
Manchmal reicht ein einfaches if-else nicht. Wenn Bedingungen voneinander abhängen – z.B. erst prüfen ob jemand angemeldet ist, und dann ob er Admin ist – dann brauchen wir verschachtelte Bedingungen. Aber Vorsicht: zu viel Verschachtelung macht Code unleserlich! 🎭
🪆 Verschachtelte if-Anweisungen
Ein if kann eine weitere if-Anweisung im Inneren haben. Das nennt man Verschachtelung (englisch: nesting):
#include <stdio.h> int main() { int alter, fuehrerschein; printf("Alter: "); scanf("%d", &alter); if (alter >= 18) { printf("Hast du einen Führerschein? (1=Ja, 0=Nein): "); scanf("%d", &fuehrerschein); if (fuehrerschein == 1) { printf("Du darfst Auto fahren! "); } else { printf("Kein Führerschein – kein Auto. "); } } else { printf("Zu jung für einen Führerschein. "); } return 0; }
📐 Wann verschachteln – wann vereinfachen?
❌ Schlecht – zu tief verschachtelt
if (a) {
if (b) {
if (c) {
if (d) {
// Pyramid of doom!
✅ Besser – mit && kombinieren
if (a && b && c && d) {
// Klar und lesbar!
}
💻 Praxisbeispiel: Login-System
#include <stdio.h> int main() { int pin, ist_admin; printf("PIN: "); scanf("%d", &pin); if (pin == 1234) { printf("Login OK. Admin? (1=Ja): "); scanf("%d", &ist_admin); if (ist_admin == 1) { printf("Willkommen, Admin! "); } else { printf("Willkommen, Benutzer! "); } } else { printf("Falsche PIN! "); } return 0; }
✏️ Übungen
Ausgabe nachverfolgen
Was gibt das Programm aus für x = 10, y = 3?
int x = 10, y = 3;
if (x > 5) {
if (y > 5) {
printf("A
");
} else {
printf("B
");
}
} else {
printf("C
");
}Ausgabe:
Vereinfachen
Vereinfache diese verschachtelten if-Anweisungen zu einer einzigen Bedingung mit &&:
if (punkte >= 50) {
if (anwesenheit >= 80) {
printf("Bestanden!
");
}
}Vereinfachte Version:
Notenkalkulator
Schreibe ein Programm: Erst prüfen ob Punkte ≥ 50 (bestanden). Falls ja, prüfen ob Punkte ≥ 87 für „Auszeichnung". Falls nicht bestanden, ob Punkte ≥ 40 für „Wiederholungsprüfung möglich".
95, 65, 45, 30 – alle vier Fälle solltest du auslösen können!Dreieck klassifizieren
Lese drei Seitenlängen ein. Prüfe zuerst ob ein Dreieck überhaupt möglich ist (jede Seite muss kürzer als die Summe der anderen beiden). Falls ja: ist es gleichseitig, gleichschenklig oder ungleichseitig?
a == b kann bei Kommazahlen unzuverlässig sein. Für dieses Beispiel reicht es trotzdem!