/
/
·
·
/
/
·
·
  • Einführung
  • if und else
  • Mehrere Bedingungen mit else if
  • Vergleichsoperatoren
  • Logik-Operatoren im Detail
  • Verschachtelte Bedingungen und else-if-Ketten
  • Operator-Priorität (Auswertungsreihenfolge)
ThemenProgrammiergrundlagenBedingungen
Programmiergrundlagen·4Lerneinheiten·45min·Stand02.08.2026

Bedingungen.

Bedingungen (if / else)

Bedingungen lassen dein Programm Entscheidungen treffen: "wenn die Bedingung wahr ist, mach X, sonst Y". Sie gehören in Java, Python und vielen anderen imperativen Sprachen zu den wichtigsten Kontrollstrukturen, ohne sie laufen Programme nur Schritt für Schritt ohne Auswahlentscheidung. Du lernst hier, wie du if/else/else if-Ketten korrekt schreibst, welche Vergleichs- und Logik-Operatoren in welcher Reihenfolge ausgewertet werden, wie Short-Circuit-Evaluation funktioniert und welche drei Stolperfallen in Klausuren regelmäßig Punkte kosten: Zuweisung statt Vergleich (= vs ==), String-Vergleich in Java mit == statt equals(), und falsche Reihenfolge in else-if-Ketten.

Schauen wir uns zunächst die Bausteine an, aus denen jede Bedingung zusammengesetzt ist. Eine Bedingung besteht typischerweise aus zwei Teilen: einem Vergleich (z.B. x > 5), der einen Wahrheitswert ergibt, und optional einer logischen Verknüpfung mehrerer Vergleiche (x > 5 && y < 10). Darum herum baust du die if/else-Struktur, die entscheidet, was passiert. Die wichtigsten Bausteine sind in diesen drei Kategorien:

Verzweigung:

  • if: führt einen Block nur aus wenn die Bedingung true ist
  • else: führt einen alternativen Block aus wenn die Bedingung false war
  • else if (Java) / elif (Python): mehrere Bedingungen nacheinander prüfen

Vergleich: ==, !=, <, >, <=, >=

Logik (Verknüpfung):

  • Java: && (logisches UND), || (logisches ODER), ! (logisches NICHT)
  • Python: and, or, not (gleiche Semantik, aber Python liefert bei Mischtypen den letzten ausgewerteten Operanden statt eines reinen Booleans zurück, z.B. 0 or "fallback" ergibt "fallback")

In Klausuren wirst du oft gefragt: welche Ausgabe produziert dieser Code?. Achte auf die Reihenfolge der Bedingungen, else-if-Ketten werden von oben nach unten geprüft, der erste Treffer gewinnt. Hinzu kommt die häufigste Falle: == ist Vergleich, = ist Zuweisung. In Java ist if (x = 5) bei int ein Compile-Fehler (kein boolean); in Python ist if x = 5: ein Syntaxfehler.

java// snippet
int note = 2;

if (note <= 4) {
  System.out.println("Bestanden");
} else {
  System.out.println("Durchgefallen");
}

Wenn note <= 4 wahr ist, wird der erste Block ausgeführt. Wenn nicht, der zweite. Nie beide.

java// snippet
if (note <= 1.5) {
  System.out.println("Sehr gut");
} else if (note <= 2.5) {
  System.out.println("Gut");
} else if (note <= 4.0) {
  System.out.println("Bestanden");
} else {
  System.out.println("Durchgefallen");
}

Bedingungen werden von oben nach unten geprüft. Sobald eine wahr ist, wird der zugehörige Block ausgeführt und alle weiteren else-if-Bedingungen werden übersprungen.

OperatorBedeutungJava / Python
==gleichbeide
!=ungleichbeide
< >kleiner / größerbeide
<= >=kleiner-gleich / größer-gleichbeide
&& / andUNDJava &&, Python and
|| / orODERJava ||, Python or
! / notNICHTJava !, Python not

Java == bei Objekten: == vergleicht bei primitiven Werten Gleichheit, bei Objekten aber Referenzgleichheit, also ob beide Variablen auf dasselbe Objekt zeigen. Für String-Inhaltsvergleich in Java s1.equals(s2) verwenden, niemals s1 == s2. Wenn s1 null sein kann: Objects.equals(s1, s2) oder "Konstante".equals(s1) (Reihenfolge umdrehen) nutzen, sonst NullPointerException.

Tückisch im Klausur-Kontext: Bei String-Literalen in deinem Quellcode (z.B. String a = "abc") speichert die JVM den Text in einem gemeinsamen Speicherbereich (dem String-Pool, der Vorgang heißt Interning). Wenn du String b = "abc" schreibst, zeigt b auf dieselbe Stelle wie a → a == b ist zufällig true. Sobald die Strings aber nicht aus Literalen entstehen, sondern z.B. via new String("abc"), durch String-Konkatenation zur Laufzeit ("a" + b mit variablem b) oder aus User-Eingaben mit scanner.next(), legt Java ein neues Objekt im Heap an (nicht im String-Pool). Dann sind es zwei verschiedene Objekte mit gleichem Inhalt → == liefert false. Genau deshalb ist == bei Strings besonders tückisch: es funktioniert zufällig solange du nur Literale verwendest, bis du Input-Strings vergleichst und plötzlich falsche Ergebnisse bekommst.

Die drei booleschen Verknüpfungen funktionieren in Java und Python gleich, nur die Notation unterscheidet sich. Was sie tatsächlich rechnen, zeigt die Wahrheitstabelle:

 A      B      A && B    A || B    !A
                (UND)     (ODER)    (NICHT)
 ───────────────────────────────────────
 false  false  false     false     true
 false  true   false     true      true
 true   false  false     true      false
 true   true   true      true      false

Merkregel: UND ist nur wahr wenn beide wahr sind, ODER ist schon wahr wenn mindestens einer wahr ist, NICHT dreht den Wert um.

Short-Circuit-Evaluation

Sowohl Java (&& und ||) als auch Python (and und or) werten kurzschlüssig aus: sobald das Endergebnis feststeht, wird der Rest übersprungen. Konkret:

  • false && X → X wird nicht ausgewertet (Ergebnis ist eh false)
  • true || X → X wird nicht ausgewertet (Ergebnis ist eh true)

Klausur-relevant wenn der zweite Operand Side-Effects hat oder zu Fehlern führen kann:

// Java: schützt vor NullPointerException
if (kunde != null && kunde.istVolljaehrig()) {
    // istVolljaehrig() wird nur gerufen wenn kunde != null
}

// Java: ohne Short-Circuit würde das crashen
if (kunde.istVolljaehrig() && kunde != null) {  // FALSCH herum!
    // istVolljaehrig() crasht bei kunde == null
}
# Python-Idiom: Default-Wert via or
name = eingabe or "Anonym"   # wenn eingabe falsy ist, nimm "Anonym"

# Python: Null-Check vor Methodenaufruf
if liste and len(liste) > 0:
    print(liste[0])   # liste kann None oder leer sein, Short-Circuit schützt

Du kannst Bedingungen ineinander verschachteln. Klausur-Tipp: eine else-if-Kette ist fast immer lesbarer als drei verschachtelte if-Blöcke.

// Verschachtelt, schwerer zu lesen
if (alter >= 18) {
    if (fuehrerschein) {
        if (fahrzeug != null) {
            System.out.println("Darf fahren");
        }
    }
}

// Flach mit &&, kompakter
if (alter >= 18 && fuehrerschein && fahrzeug != null) {
    System.out.println("Darf fahren");
}

Aber Achtung: mehrere unabhängige if hintereinander sind nicht dasselbe wie eine if/else if/else-Kette:

// Variante A: 3 unabhängige if's, können MEHRERE Ausgaben erzeugen
if (note <= 1.5) System.out.println("Sehr gut");
if (note <= 2.5) System.out.println("Gut");        // bei note=1.0 läuft das AUCH
if (note <= 4.0) System.out.println("Bestanden");  // und das AUCH

// Variante B: else-if-Kette, genau EINE Ausgabe
if (note <= 1.5)       System.out.println("Sehr gut");
else if (note <= 2.5)  System.out.println("Gut");
else if (note <= 4.0)  System.out.println("Bestanden");

Variante A bei note = 1.0 gibt drei Zeilen aus, Variante B genau eine. Beliebte Klausur-Falle.

Wenn ein Ausdruck mehrere Operatoren mischt, brauchst du die Priorität (welcher Operator bindet stärker). Die Reihenfolge ist in Java und Python leicht unterschiedlich für den NICHT-Operator:

JAVA (von hoch zu niedrig):                  PYTHON (von hoch zu niedrig):
1. Klammern         ()                        1. Klammern         ()
2. NICHT            !       (Unary, hoch)     2. Vergleich        ==  !=  <  >  <=  >=
3. Vergleich        ==  !=  <  >  <=  >=      3. NICHT            not    (NIEDRIGER!)
4. UND              &&                        4. UND              and
5. ODER             ||                        5. ODER             or

Wichtig: In Java ist ! ein Unary-Operator und bindet sehr stark (gleich nach Klammern). In Python ist not eine Boolean-Operation (so klassifiziert in den Python-Docs) und bindet schwächer als Vergleichsoperatoren.

Konkret an einem Beispiel:

// Java: ! bindet vor ==
boolean ergebnis = !a == b;
// → ausgewertet als (!a) == b
// → erst Negation, dann Vergleich
# Python: not bindet NACH ==
ergebnis = not a == b
# → ausgewertet als not (a == b)
# → erst Vergleich, dann Negation

Ehrliche Anmerkung: Bei zwei einfachen booleans sind beide Ausdrücke semantisch gleich (a != b), nur der Auswertungspfad unterscheidet sich. Der Unterschied wird relevant wenn:

  • du Klausur-Tracing-Aufgaben machst und Zwischenschritte hinschreiben musst (mit falscher Priorität bekommst du falsche Zwischenwerte, auch wenn das Endergebnis zufällig stimmt)
  • der Ausdruck mit anderen Operatoren mischt (! vs && vs == in Java; not vs and vs == in Python) und Klammern fehlen
  • die Operanden Side-Effects haben (Reihenfolge bestimmt was zuerst läuft)

Faustregel: bei Unsicherheit IMMER Klammern setzen, dann sind beide Sprachen eindeutig: !(a == b) in Java, not (a == b) in Python.

Mini-Beispiel für die häufigste Klausur-Verwechslung:

// Java: x > 0 && y < 10 || admin
// wird ausgewertet als:
//   (x > 0 && y < 10) || admin
// NICHT als:
//   x > 0 && (y < 10 || admin)

int x = -5, y = 5;
boolean admin = true;

if (x > 0 && y < 10 || admin) {
    // ergibt: (false && true) || true  =  false || true  =  true
    System.out.println("Treffer");
}

Klausur-Tipp: wenn du dir bei einer Reihenfolge unsicher bist, Klammern setzen statt sich auf Priorität zu verlassen. Das macht den Code lesbar und vermeidet typische Bewertungsabzüge bei Tracing-Aufgaben.

Schieb den Regler hin und her und beobachte welcher Branch greift. Zur Laufzeit werden die Bedingungen von oben nach unten ausgewertet, der erste wahre Branch wird ausgeführt.

Lade Visualisierung...

Beobachte: Sobald eine Bedingung wahr ist, werden die folgenden gar nicht mehr geprüft, bei einer if/else-if-Kette gewinnt der erste passende Branch.

Wichtig zur Abgrenzung: Das ist ein anderes Konzept als die Short-Circuit-Evaluation (oben im Erklärungs-Tab erklärt). Die if-else-if-Kette wird sequenziell Branch für Branch geprüft. Short-Circuit dagegen passiert innerhalb eines einzelnen logischen Ausdrucks wie a && b oder a || b und überspringt den zweiten Operanden wenn das Ergebnis schon feststeht. Beide Mechanismen kürzen ab, aber auf unterschiedlichen Ebenen.


Vier interaktive Demos zu Bedingungen und Short-Circuit. Klick Step oder Auto und beobachte, wie Variablen sich ändern, welche Branches gewählt werden und wo Short-Circuit greift. Die Annotation unter dem Code erklärt jeden Schritt.

1. else-if-Kette: Noten-Bewertung (note = 2.3)

Lade Visualisierung...

2. Short-Circuit AND (&&): zweite Bedingung wird übersprungen

Setup: stell dir vor, im Hintergrund existiert eine Methode pruefe() die zwei Dinge tut: (1) sie erhöht eine globale Zähler-Variable counter um 1, und (2) sie gibt immer true zurück. So eine Methode mit Side-Effect ist typisch für Klausuren um zu prüfen, ob du Short-Circuit verstanden hast. Beobachte im Stepper: wenn die erste Bedingung schon false ist, wird pruefe() GAR NICHT aufgerufen, Counter bleibt bei 0.

Lade Visualisierung...

3. Short-Circuit OR (||): Default-Wert via Kurzschluss

Klassisches Python-Idiom: name = eingabe or "Anonym". Wenn eingabe truthy ist, wird "Anonym" gar nicht ausgewertet. Hier mit null-Check vor Methodenaufruf, schützt vor NullPointerException.

Lade Visualisierung...

4. Operator-Priorität: && bindet stärker als ||

In x > 0 && y < 10 || admin wird das Ergebnis bestimmt von der Bindungsstärke: && zuerst, || zuletzt. Effektiv: (x > 0 && y < 10) || admin. Hier mit x = -5, y = 5, admin = true.

Lade Visualisierung...

Schreibe ein Programm, das je nach Note (1.0 bis 5.0) den passenden Text ausgibt: "Sehr gut" für Noten bis 1.5, "Gut" bis 2.5, "Bestanden" bis 4.0, sonst "Durchgefallen".

Übung · java
Ausführung kommt vor Launch
Aufgabe

Vervollständige das Programm. note ist bereits gesetzt, du musst nur die if-else-Kette ergänzen.

Editor wird geladen...

Anmelden, um den Fortschritt zu speichern.

Nächster Schritt

Wenn du fertig bist: jetzt üben.

Aktives Abrufen festigt Wissen schneller als nochmal lesen.

War das hilfreich?

Verwandte Themen

  • Funktionen
  • Rekursion
  • Arrays und Listen
  • Klassen und Objekte
  • Vererbung & Polymorphie

Folgt

  • Schleifen

Tools

Bald: Karteikarten · Spaced-Repetition · Mind-Map-Export

Fachliche Qualität
S-Tier · GoldstandardZuletzt geprüft am 17.05.2026

Diese Lerneinheit wurde für typische Bachelor-Klausuren konzipiert. So prüfen wir · Fehler entdeckt? Melde ihn uns oder markiere die fragliche Stelle direkt im Text oben.

Klausur-ÜbersichtKomplette Übersicht: alle Tabs als linearer Text zum Lernen
▾

Alle Tabs der Lerneinheit (Erklärung · Interaktiv · Übung · Quiz) als durchgehender Text. Ideal zum Wiederholen vor der Klausur, und für Suchmaschinen wie Google, Bing und KI-Suche (ChatGPT, Perplexity).

Inhalt dieser Übersicht

  1. Erklärung(Erklärung)
  2. Interaktiv(Visualisierung / Interaktiv)
  3. Übung(Code-Übung)
  4. Quiz(Quiz / Klausurfragen)
Teil 1·Erklärung

Erklärung

Bedingungen (if / else)

Bedingungen lassen dein Programm Entscheidungen treffen: "wenn die Bedingung wahr ist, mach X, sonst Y". Sie gehören in Java, Python und vielen anderen imperativen Sprachen zu den wichtigsten Kontrollstrukturen, ohne sie laufen Programme nur Schritt für Schritt ohne Auswahlentscheidung. Du lernst hier, wie du if/else/else if-Ketten korrekt schreibst, welche Vergleichs- und Logik-Operatoren in welcher Reihenfolge ausgewertet werden, wie Short-Circuit-Evaluation funktioniert und welche drei Stolperfallen in Klausuren regelmäßig Punkte kosten: Zuweisung statt Vergleich (= vs ==), String-Vergleich in Java mit == statt equals(), und falsche Reihenfolge in else-if-Ketten.

Schauen wir uns zunächst die Bausteine an, aus denen jede Bedingung zusammengesetzt ist. Eine Bedingung besteht typischerweise aus zwei Teilen: einem Vergleich (z.B. x > 5), der einen Wahrheitswert ergibt, und optional einer logischen Verknüpfung mehrerer Vergleiche (x > 5 && y < 10). Darum herum baust du die if/else-Struktur, die entscheidet, was passiert. Die wichtigsten Bausteine sind in diesen drei Kategorien:

Verzweigung:

  • if: führt einen Block nur aus wenn die Bedingung true ist
  • else: führt einen alternativen Block aus wenn die Bedingung false war
  • else if (Java) / elif (Python): mehrere Bedingungen nacheinander prüfen

Vergleich: ==, !=, <, >, <=, >=

Logik (Verknüpfung):

  • Java: && (logisches UND), || (logisches ODER), ! (logisches NICHT)
  • Python: and, or, not (gleiche Semantik, aber Python liefert bei Mischtypen den letzten ausgewerteten Operanden statt eines reinen Booleans zurück, z.B. 0 or "fallback" ergibt "fallback")

In Klausuren wirst du oft gefragt: welche Ausgabe produziert dieser Code?. Achte auf die Reihenfolge der Bedingungen, else-if-Ketten werden von oben nach unten geprüft, der erste Treffer gewinnt. Hinzu kommt die häufigste Falle: == ist Vergleich, = ist Zuweisung. In Java ist if (x = 5) bei int ein Compile-Fehler (kein boolean); in Python ist if x = 5: ein Syntaxfehler.

if und else

Beispiel-CodeJava
int note = 2;

if (note <= 4) {
  System.out.println("Bestanden");
} else {
  System.out.println("Durchgefallen");
}
Beispiel-CodePython
note = 2

if note <= 4:
    print("Bestanden")
else:
    print("Durchgefallen")

Wenn note <= 4 wahr ist, wird der erste Block ausgeführt. Wenn nicht, der zweite. Nie beide.

Mehrere Bedingungen mit else if

Beispiel-CodeJava
if (note <= 1.5) {
  System.out.println("Sehr gut");
} else if (note <= 2.5) {
  System.out.println("Gut");
} else if (note <= 4.0) {
  System.out.println("Bestanden");
} else {
  System.out.println("Durchgefallen");
}
Beispiel-CodePython
if note <= 1.5:
    print("Sehr gut")
elif note <= 2.5:
    print("Gut")
elif note <= 4.0:
    print("Bestanden")
else:
    print("Durchgefallen")

Bedingungen werden von oben nach unten geprüft. Sobald eine wahr ist, wird der zugehörige Block ausgeführt und alle weiteren else-if-Bedingungen werden übersprungen.

Vergleichsoperatoren

OperatorBedeutungJava / Python
==gleichbeide
!=ungleichbeide
< >kleiner / größerbeide
<= >=kleiner-gleich / größer-gleichbeide
&& / andUNDJava &&, Python and
|| / orODERJava ||, Python or
! / notNICHTJava !, Python not

Java == bei Objekten: == vergleicht bei primitiven Werten Gleichheit, bei Objekten aber Referenzgleichheit, also ob beide Variablen auf dasselbe Objekt zeigen. Für String-Inhaltsvergleich in Java s1.equals(s2) verwenden, niemals s1 == s2. Wenn s1 null sein kann: Objects.equals(s1, s2) oder "Konstante".equals(s1) (Reihenfolge umdrehen) nutzen, sonst NullPointerException.

Tückisch im Klausur-Kontext: Bei String-Literalen in deinem Quellcode (z.B. String a = "abc") speichert die JVM den Text in einem gemeinsamen Speicherbereich (dem String-Pool, der Vorgang heißt Interning). Wenn du String b = "abc" schreibst, zeigt b auf dieselbe Stelle wie a → a == b ist zufällig true. Sobald die Strings aber nicht aus Literalen entstehen, sondern z.B. via new String("abc"), durch String-Konkatenation zur Laufzeit ("a" + b mit variablem b) oder aus User-Eingaben mit scanner.next(), legt Java ein neues Objekt im Heap an (nicht im String-Pool). Dann sind es zwei verschiedene Objekte mit gleichem Inhalt → == liefert false. Genau deshalb ist == bei Strings besonders tückisch: es funktioniert zufällig solange du nur Literale verwendest, bis du Input-Strings vergleichst und plötzlich falsche Ergebnisse bekommst.

Logik-Operatoren im Detail

Die drei booleschen Verknüpfungen funktionieren in Java und Python gleich, nur die Notation unterscheidet sich. Was sie tatsächlich rechnen, zeigt die Wahrheitstabelle:

 A      B      A && B    A || B    !A
                (UND)     (ODER)    (NICHT)
 ───────────────────────────────────────
 false  false  false     false     true
 false  true   false     true      true
 true   false  false     true      false
 true   true   true      true      false

Merkregel: UND ist nur wahr wenn beide wahr sind, ODER ist schon wahr wenn mindestens einer wahr ist, NICHT dreht den Wert um.

Short-Circuit-Evaluation

Sowohl Java (&& und ||) als auch Python (and und or) werten kurzschlüssig aus: sobald das Endergebnis feststeht, wird der Rest übersprungen. Konkret:

  • false && X → X wird nicht ausgewertet (Ergebnis ist eh false)
  • true || X → X wird nicht ausgewertet (Ergebnis ist eh true)

Klausur-relevant wenn der zweite Operand Side-Effects hat oder zu Fehlern führen kann:

// Java: schützt vor NullPointerException
if (kunde != null && kunde.istVolljaehrig()) {
    // istVolljaehrig() wird nur gerufen wenn kunde != null
}

// Java: ohne Short-Circuit würde das crashen
if (kunde.istVolljaehrig() && kunde != null) {  // FALSCH herum!
    // istVolljaehrig() crasht bei kunde == null
}
# Python-Idiom: Default-Wert via or
name = eingabe or "Anonym"   # wenn eingabe falsy ist, nimm "Anonym"

# Python: Null-Check vor Methodenaufruf
if liste and len(liste) > 0:
    print(liste[0])   # liste kann None oder leer sein, Short-Circuit schützt

Verschachtelte Bedingungen und else-if-Ketten

Du kannst Bedingungen ineinander verschachteln. Klausur-Tipp: eine else-if-Kette ist fast immer lesbarer als drei verschachtelte if-Blöcke.

// Verschachtelt, schwerer zu lesen
if (alter >= 18) {
    if (fuehrerschein) {
        if (fahrzeug != null) {
            System.out.println("Darf fahren");
        }
    }
}

// Flach mit &&, kompakter
if (alter >= 18 && fuehrerschein && fahrzeug != null) {
    System.out.println("Darf fahren");
}

Aber Achtung: mehrere unabhängige if hintereinander sind nicht dasselbe wie eine if/else if/else-Kette:

// Variante A: 3 unabhängige if's, können MEHRERE Ausgaben erzeugen
if (note <= 1.5) System.out.println("Sehr gut");
if (note <= 2.5) System.out.println("Gut");        // bei note=1.0 läuft das AUCH
if (note <= 4.0) System.out.println("Bestanden");  // und das AUCH

// Variante B: else-if-Kette, genau EINE Ausgabe
if (note <= 1.5)       System.out.println("Sehr gut");
else if (note <= 2.5)  System.out.println("Gut");
else if (note <= 4.0)  System.out.println("Bestanden");

Variante A bei note = 1.0 gibt drei Zeilen aus, Variante B genau eine. Beliebte Klausur-Falle.

Operator-Priorität (Auswertungsreihenfolge)

Wenn ein Ausdruck mehrere Operatoren mischt, brauchst du die Priorität (welcher Operator bindet stärker). Die Reihenfolge ist in Java und Python leicht unterschiedlich für den NICHT-Operator:

JAVA (von hoch zu niedrig):                  PYTHON (von hoch zu niedrig):
1. Klammern         ()                        1. Klammern         ()
2. NICHT            !       (Unary, hoch)     2. Vergleich        ==  !=  <  >  <=  >=
3. Vergleich        ==  !=  <  >  <=  >=      3. NICHT            not    (NIEDRIGER!)
4. UND              &&                        4. UND              and
5. ODER             ||                        5. ODER             or

Wichtig: In Java ist ! ein Unary-Operator und bindet sehr stark (gleich nach Klammern). In Python ist not eine Boolean-Operation (so klassifiziert in den Python-Docs) und bindet schwächer als Vergleichsoperatoren.

Konkret an einem Beispiel:

// Java: ! bindet vor ==
boolean ergebnis = !a == b;
// → ausgewertet als (!a) == b
// → erst Negation, dann Vergleich
# Python: not bindet NACH ==
ergebnis = not a == b
# → ausgewertet als not (a == b)
# → erst Vergleich, dann Negation

Ehrliche Anmerkung: Bei zwei einfachen booleans sind beide Ausdrücke semantisch gleich (a != b), nur der Auswertungspfad unterscheidet sich. Der Unterschied wird relevant wenn:

  • du Klausur-Tracing-Aufgaben machst und Zwischenschritte hinschreiben musst (mit falscher Priorität bekommst du falsche Zwischenwerte, auch wenn das Endergebnis zufällig stimmt)
  • der Ausdruck mit anderen Operatoren mischt (! vs && vs == in Java; not vs and vs == in Python) und Klammern fehlen
  • die Operanden Side-Effects haben (Reihenfolge bestimmt was zuerst läuft)

Faustregel: bei Unsicherheit IMMER Klammern setzen, dann sind beide Sprachen eindeutig: !(a == b) in Java, not (a == b) in Python.

Mini-Beispiel für die häufigste Klausur-Verwechslung:

// Java: x > 0 && y < 10 || admin
// wird ausgewertet als:
//   (x > 0 && y < 10) || admin
// NICHT als:
//   x > 0 && (y < 10 || admin)

int x = -5, y = 5;
boolean admin = true;

if (x > 0 && y < 10 || admin) {
    // ergibt: (false && true) || true  =  false || true  =  true
    System.out.println("Treffer");
}

Klausur-Tipp: wenn du dir bei einer Reihenfolge unsicher bist, Klammern setzen statt sich auf Priorität zu verlassen. Das macht den Code lesbar und vermeidet typische Bewertungsabzüge bei Tracing-Aufgaben.

Teil 2·Visualisierung / Interaktiv

Interaktiv

if-else-Kette in Bewegung

Schieb den Regler hin und her und beobachte welcher Branch greift. Zur Laufzeit werden die Bedingungen von oben nach unten ausgewertet, der erste wahre Branch wird ausgeführt.

Interaktive Visualisierung

Visualisiert if/else-Entscheidungen mit Live-Bedingung und gewähltem Pfad.

Beobachte: Sobald eine Bedingung wahr ist, werden die folgenden gar nicht mehr geprüft, bei einer if/else-if-Kette gewinnt der erste passende Branch.

Wichtig zur Abgrenzung: Das ist ein anderes Konzept als die Short-Circuit-Evaluation (oben im Erklärungs-Tab erklärt). Die if-else-if-Kette wird sequenziell Branch für Branch geprüft. Short-Circuit dagegen passiert innerhalb eines einzelnen logischen Ausdrucks wie a && b oder a || b und überspringt den zweiten Operanden wenn das Ergebnis schon feststeht. Beide Mechanismen kürzen ab, aber auf unterschiedlichen Ebenen.


Code-Stepper: Schritt für Schritt durchspielen

Vier interaktive Demos zu Bedingungen und Short-Circuit. Klick Step oder Auto und beobachte, wie Variablen sich ändern, welche Branches gewählt werden und wo Short-Circuit greift. Die Annotation unter dem Code erklärt jeden Schritt.

1. else-if-Kette: Noten-Bewertung (note = 2.3)

Interaktive Visualisierung

Interaktive Komponente: probiere sie im Topic-Player oben aus.

2. Short-Circuit AND (&&): zweite Bedingung wird übersprungen

Setup: stell dir vor, im Hintergrund existiert eine Methode pruefe() die zwei Dinge tut: (1) sie erhöht eine globale Zähler-Variable counter um 1, und (2) sie gibt immer true zurück. So eine Methode mit Side-Effect ist typisch für Klausuren um zu prüfen, ob du Short-Circuit verstanden hast. Beobachte im Stepper: wenn die erste Bedingung schon false ist, wird pruefe() GAR NICHT aufgerufen, Counter bleibt bei 0.

Interaktive Visualisierung

Interaktive Komponente: probiere sie im Topic-Player oben aus.

3. Short-Circuit OR (||): Default-Wert via Kurzschluss

Klassisches Python-Idiom: name = eingabe or "Anonym". Wenn eingabe truthy ist, wird "Anonym" gar nicht ausgewertet. Hier mit null-Check vor Methodenaufruf, schützt vor NullPointerException.

Interaktive Visualisierung

Interaktive Komponente: probiere sie im Topic-Player oben aus.

4. Operator-Priorität: && bindet stärker als ||

In x > 0 && y < 10 || admin wird das Ergebnis bestimmt von der Bindungsstärke: && zuerst, || zuletzt. Effektiv: (x > 0 && y < 10) || admin. Hier mit x = -5, y = 5, admin = true.

Interaktive Visualisierung

Interaktive Komponente: probiere sie im Topic-Player oben aus.

Teil 3·Code-Übung

Übung

Aufgabe: Notenbewerter

Schreibe ein Programm, das je nach Note (1.0 bis 5.0) den passenden Text ausgibt: "Sehr gut" für Noten bis 1.5, "Gut" bis 2.5, "Bestanden" bis 4.0, sonst "Durchgefallen".

Aufgabe / Code-Übung

Vervollständige das Programm. note ist bereits gesetzt, du musst nur die if-else-Kette ergänzen.

Starter-CodePython
note = 2.3

# TODO: if-elif-else-Kette mit allen 4 Fällen

Erwartete Ausgabe

Gut
Hinweise anzeigen (3)
  • Reihenfolge ist wichtig: erst die strengste Bedingung (note <= 1.5), dann die nächste, usw.
  • Bei note = 2.3 wird die zweite Bedingung (note <= 2.5) wahr.
  • In Python: if ... : / elif ... : / else:, beachte den Doppelpunkt und die Einrückung.

Aufgabe / Code-Übung

Vervollständige das Programm. note ist bereits gesetzt, du musst nur die if-else-Kette ergänzen.

Starter-CodeJava
public class Main {
    public static void main(String[] args) {
        double note = 2.3;

        // TODO: if-else-Kette mit allen 4 Fällen

    }
}

Erwartete Ausgabe

Gut
Hinweise anzeigen (2)
  • Reihenfolge ist wichtig: erst die strengste Bedingung (note <= 1.5), dann die nächste, usw.
  • Bei note = 2.3 wird die zweite Bedingung (note <= 2.5) wahr.
Teil 4·Quiz / Klausurfragen

Quiz

Quiz: Bedingungen

Sieben Fragen zu if/else, Vergleichs- und Logik-Operatoren, klausur-typisch.

Klausurfragen mit Lösungen (7)

F1.Welche Ausgabe produziert dieser Code?
int x = 5;
if (x > 10) {
  System.out.println("A");
} else if (x > 3) {
  System.out.println("B");
} else {
  System.out.println("C");
}

Antwort: B

Erklärung: Bedingungen werden von oben nach unten geprüft. `x > 10` ist false (5 ist nicht > 10). `x > 3` ist true → 'B' wird ausgegeben. Sobald eine Bedingung wahr ist, werden die folgenden übersprungen, daher NIE 'B und C'.

F2.Welcher Operator vergleicht in Java zwei primitive Werte auf Gleichheit?

Antwort: ==

Erklärung: `==` ist der Vergleichs-Operator (Equality) für primitive Werte. **Bei Objekten** (z. B. Strings) prüft `==` aber nur Referenzgleichheit, für String-Inhaltsvergleich immer `s1.equals(s2)` nutzen. `=` ist Zuweisung, Klausur-Falle: `if (x = 5)` bei `int` ist in Java Compile-Fehler (int liefert kein boolean), in Python ist `if x = 5:` ein Syntaxfehler.

F3.Wenn die Bedingung in einem if-Block wahr wird, wird der else-Block trotzdem auch ausgeführt.

Antwort: Falsch

Erklärung: Falsch. if und else schließen sich gegenseitig aus, entweder if-Block oder else-Block, NIE beide. Genau das macht die Verzweigung aus.

Typ: Wahr/Falsch

F4.Welche der folgenden Ausdrücke sind in Java/Python wahr, wenn a = 5 und b = 10?

Richtige Antworten: a < b; a != b; a >= 5

Erklärung: `a < b` (5 < 10) ✓, `a != b` (5 ≠ 10) ✓, `a >= 5` (5 ≥ 5, gleich zählt!) ✓. Falsch sind: `a == b` (5 ≠ 10) und `b < a` (10 nicht < 5). Klassische Falle bei `>=`: gleich zählt mit.

Typ: Multi-Select

F5.Was bedeutet das Logik-Symbol && in Java (bzw. and in Python)?

Antwort: Beide Bedingungen müssen wahr sein (UND)

Erklärung: `&&` (Java) / `and` (Python) ist der logische UND-Operator: das Gesamtergebnis ist nur dann true, wenn BEIDE Operanden true sind. Tabelle: T&&T=T, T&&F=F, F&&T=F, F&&F=F.

F6.Was passiert beim sogenannten Short-Circuit-Verhalten von &&?

Antwort: Wenn der erste Operand false ist, wird der zweite nicht mehr geprüft

Erklärung: Short-Circuit (Kurzschluss-Auswertung): bei `false && X` ist das Ergebnis bereits false, also wird X gar nicht mehr geprüft, Performance-Optimierung. Bei `||` analog: wenn erster Operand true ist, wird zweiter übersprungen. Wichtig wenn der zweite Operand teure Berechnungen oder Side-Effects hat.

F7.Tracing-Aufgabe (Short-Circuit + else-if): Gegeben ist eine Methode pruefe(), die immer true zurückgibt und als Seiteneffekt counter um 1 erhöht. Was wird ausgegeben? Format: <Buchstabe> + counter=<N>
int counter = 0;
boolean a = false;
boolean b = true;

if (a && pruefe()) {
  System.out.println("A");
} else if (b || pruefe()) {
  System.out.println("B");
} else if (!a && pruefe()) {
  System.out.println("C");
}
System.out.println("counter=" + counter);

Antwort: B + counter=0

Erklärung: Drei Effekte zusammen: (1) `a && pruefe()`: `a` ist false → Short-Circuit, `pruefe()` wird NICHT aufgerufen, Ergebnis false. (2) `b || pruefe()`: `b` ist true → Short-Circuit, `pruefe()` wird NICHT aufgerufen, Ergebnis true → 'B' wird ausgegeben. (3) Sobald ein else-if-Branch wahr ist, werden die folgenden nicht mehr geprüft → der dritte `pruefe()`-Aufruf passiert auch nicht. → counter bleibt **0**. Beliebte Klausur-Falle: Studierende zählen Operanden statt tatsächliche Auswertungen.

Zur KategorieProgrammiergrundlagen.Mehr Themen entdeckenZum Themen-Hub.

UniProMax ist eine themenbasierte Lernplattform für Studierende an deutschen Unis.

Wir glauben, dass Verstehen besser ist als Auswendiglernen. Wir bauen Lerneinheiten die zeigen statt erzählen. Code, Visualisierung, Quiz. Auf Deutsch.

Marke

UniProMaxUniProMax

Themenbasiert, visuell, interaktiv.

Inhalte

  • Alle Themen (Hub)
  • Programmiergrundlagen
  • Algorithmen
  • Mathematik
  • Statistik
  • Datenbanken
  • Rechnungswesen
  • VWL

Studiengang-Filter

  • Informatik
  • Wirtschaftsinformatik
  • BWL
  • Data Science
  • VWL
  • Wirtschaftsingenieurwesen
  • Mathe
  • Psychologie
  • weitere Studiengänge folgen

Plattform

  • Mein Fortschritt
  • Impressum
  • Datenschutz
© 2026 UniProMaxAlle Systeme onlinev0.2 / Sommersemester 2026
UniProMaxUniProMaxUniProMaxUniProMax