📘 Kapitel 2 · Unit 9 von 30

Verschachtelte
Bedingungen

if im if · Entscheidungsbäume · Wann vereinfachen?

9 / 30 Units
Ömer
Kapitel 2: Operatoren & Entscheidungen ~45 Min. Theorie + Simulator + Quiz + Spickzettel
Ömer
Ömer sagt:

Manchmal hängt eine Entscheidung von einer anderen ab. Dann brauchen wir Verschachtelung. Aber wie eine Zwiebel: zu viele Schichten machen den Code unleserlich!

Verschachtelung – if im if

verschachtelt.cC
if (alter >= 18) {           // äußere Bedingung
    if (fuehrerschein == 1) { // innere Bedingung
        printf("Darf fahren!\n");
    } else {
        printf("Kein Führerschein.\n");
    }
} else {
    printf("Zu jung!\n");
}

Wann vereinfachen?

❌ Pyramid of Doom

if (a) {
  if (b) {
    if (c) { ... }
  }
}

✅ Mit && vereinfachen

if (a && b && c) {
  ...
}

Faustregel

Mehr als 2–3 Verschachtelungsebenen sind ein Zeichen, dass der Code refaktoriert werden sollte. Verwende && und || statt Verschachtelung – wann immer möglich.

Verschachtelung vs. logische Operatoren

Oft lässt sich ein verschachteltes if durch einen einzigen &&-Ausdruck ersetzen. Die folgende Tabelle zeigt den direkten Vergleich:

SituationVerschachteltes ifMit &&
Beide Bedingungen müssen erfüllt seinif(a){ if(b){...} }if(a && b){...}
Reihenfolge der PrüfungÄußere Bedingung zuerstLinks nach rechts (Kurzschluss)
LesbarkeitUnübersichtlich bei 3+ EbenenKlar und kompakt
Eigener else-Zweig je Ebene möglich?Ja, für jede Ebene separatNur ein gemeinsamer else-Zweig

Wann Verschachtelung trotzdem nötig ist

Wenn die innere Bedingung nur bei positivem äußerem Ergebnis überhaupt Sinn ergibt – und jede Ebene einen eigenen else-Zweig benötigt – bleibt die Verschachtelung die klarere Wahl.

Praktisches Beispiel – Kreditwürdigkeit

Ein mehrstufiges Prüfschema: Der Antragsteller muss volljährig sein, ein ausreichendes Einkommen haben, und schuldenfrei sein. Jede Stufe liefert eine eigene Fehlermeldung.

kreditwuerdigkeit.cC
int alter        = 25;
int einkommen    = 2500;
int keine_schulden = 1;

if (alter >= 18) {
    if (einkommen >= 2000) {
        if (keine_schulden == 1) {
            printf("Kredit genehmigt!\n");
        } else {
            printf("Abgelehnt: offene Schulden.\n");
        }
    } else {
        printf("Abgelehnt: Einkommen zu gering.\n");
    }
} else {
    printf("Abgelehnt: minderjährig.\n");
}
▶ Ausgabe
Kredit genehmigt!

Gleiche Logik mit && – weniger Fehlermeldungen

KOMPAKT
if (alter>=18 && einkommen>=2000
           && keine_schulden==1) {
    printf("Genehmigt!\n");
} else {
    printf("Abgelehnt.\n");  // kein Detail
}

Verschachtelung erlaubt detaillierte Fehler

Wenn jede Prüfebene eine eigene Fehlermeldung braucht, ist die Verschachtelung klarer. Die kompakte &&-Variante kennt nur ein einziges "Abgelehnt".

⚡ Code-Simulator

Schreibe C-Code links und führe ihn aus – der Simulator zeigt printf-Ausgaben sofort:

C Simulator – Unit 9
▶ Ausgabe
– Klicke auf AUSFÜHREN –
Ömer
Ömer sagt:

Ändere die Werte und schau wie sich die Ausgabe verändert. Das beste Lernen ist Ausprobieren!

🎯 Wissens-Quiz

Frage 1
Wie viele Verschachtelungsebenen sollte man laut Faustregel maximal verwenden?
A1
B2-3
C5
DBeliebig viele
Frage 2
Was ist die 'Pyramid of Doom'?
AEin Spielkonzept
BZu viele verschachtelte if-Anweisungen
CEin Compilerfehler
DEine Design-Pattern
Frage 3
Was gibt das Programm aus bei x=10, y=3? (if x>5: if y>5: A else B, else C)
AA
BB
CC
DFehler
Frage 4
Wann sollte man Verschachtelung durch && ersetzen?
ANiemals
BWenn Bedingungen unabhängig sind
CWenn Bedingungen zusammen wahr sein müssen
DImmer
Frage 5
Was gibt if(a){if(b){printf("X");}} bei a=1, b=0 aus?
AX
BNichts
CFehler
DXY
Frage 6
Was bedeutet "Pyramid of Doom"?
AEin Designmuster für tiefe Klassen-Hierarchien
BEin Compilerfehler bei zu vielen Schleifen
CEine spezielle Art von Endlosschleife
DZu tief verschachtelte if-Blöcke, die den Code unleserlich machen
Frage 7
Wie kann man if(a){if(b){}} vereinfachen?
Aif(a || b){}
Bif(a && b){}
Cif(!a && !b){}
DDas geht nicht – Verschachtelung ist zwingend
Frage 8
Bis zu wie vielen Verschachtelungsebenen ist Code noch gut lesbar?
A1
B5–6
C2–3
DBeliebig viele

📋 Spickzettel

Verschachtelung
Max 2-3 EbenenLesbarkeit!
&& statt nestingVereinfachen
EinrückungZeigt Tiefe
outer/innerÄußeres/inneres if
Tipps
Early returnFrüh beenden
Guard clausesFehler zuerst prüfen
KommentareZweck erklären
RefaktorierenBei zu tiefer Verschachtelung

✅ Checkliste Unit 9

  • Ich kann verschachtelte if-Anweisungen schreiben und lesen
  • Ich weiß wann Verschachtelung durch && besser ersetzt wird
  • Ich kenne die 2-3-Ebenen-Faustregel