Wie steuern Verzweigungen den Programmablauf?
Verzweigungen als Weggabelungen im Code
Normalerweise führt ein Computer ein Programm stur Zeile für Zeile von oben nach unten aus. Verzweigungen (Branching) durchbrechen diese starre Reihenfolge: Sie ermöglichen es dem Programm, an bestimmten Punkten eigenständige Entscheidungen zu treffen und je nach Situation unterschiedliche Code-Pfade einzuschlagen.
Stell dir eine automatische Schiebetür im Supermarkt vor. Das Programm prüft kontinuierlich: "Steht eine Person vor der Tür?". Wenn die Antwort "Ja" lautet, wird der Code zum Öffnen der Tür ausgeführt. Lautet sie "Nein", bleibt die Tür geschlossen. Wie du in der zugehörigen Grafik an der Raute (dem Entscheidungsknoten) erkennen kannst, spaltet sich der Kontrollfluss an dieser Stelle auf. Verzweigungen wirken also wie Weggabelungen, die den Programmfluss dynamisch anhand von Bedingungen steuern.
Bedingungen mit Vergleichsoperatoren formulieren
Um dem Computer eine Entscheidung zu ermöglichen, formulierst du eine Bedingung. Aus deinem Vorwissen zu primitiven Datentypen weißt du bereits, was ein Boolean ist. Eine Bedingung ist ein Ausdruck, der vom Computer ausgewertet wird und als Ergebnis immer genau einen solchen Wahrheitswert liefert: entweder wahr (True) oder falsch (False).
Dafür nutzt du Vergleichsoperatoren, um Variablenwerte zu prüfen:
==(prüft auf exakte Gleichheit, z. B.passwort == "geheim")!=(prüft auf Ungleichheit)<und>(kleiner als / größer als)<=und>=(kleiner gleich / größer gleich)
aktuelle_temperatur = 25
# Die Bedingung (aktuelle_temperatur > 20) wird zu 'True' ausgewertet
if aktuelle_temperatur > 20:
print("Es ist warm genug für ein T-Shirt.")Komplexe Kriterien mit logischen Operatoren
Oft reicht eine einzelne Prüfung in der Praxis nicht aus. Mit logischen Operatoren kannst du mehrere einfache Bedingungen miteinander verknüpfen, um komplexe Entscheidungskriterien zu erstellen:
and(UND): Der gesamte Ausdruck ist nur dannTrue, wenn alle verknüpften EinzelbedingungenTruesind.or(ODER): Der Ausdruck ist bereitsTrue, wenn mindestens eine der BedingungenTrueist.not(NICHT): Kehrt den Wahrheitswert um (ausTruewirdFalseund umgekehrt).
temperatur = 25
ist_sonnig = True
# Beide Bedingungen müssen zwingend erfüllt sein (AND-Verknüpfung)
if temperatur > 20 and ist_sonnig:
print("Perfektes Wetter für einen Ausflug ins Freie!")Welche Verzweigungsstrukturen wählst du für dein Problem?
Die einfache if-Anweisung: Optionale Ausführung
Die if-Anweisung ist die simpelste Form der Verzweigung. Du nutzt sie immer dann, wenn ein bestimmter Codeblock nur unter einer bestimmten Bedingung ausgeführt werden soll und es keine direkte Alternative gibt. Ist die Bedingung falsch (False), passiert einfach gar nichts und das Programm läuft im regulären Textfluss weiter.
Anwendungsfall: Eine Aktion ist rein optional.
akkustand = 15 # in Prozent
# Das Warn-Licht soll ausschließlich bei niedrigem Akku angehen
if akkustand <= 20:
print("Warnung: Akku fast leer. Bitte aufladen!")
print("Das Programm läuft regulär weiter...")Die if-else-Anweisung: Die Entweder-Oder-Entscheidung
Wenn du exakt zwei mögliche Szenarien hast, die sich gegenseitig ausschließen, wählst du die if-else-Struktur. Ist die if-Bedingung wahr, wird der erste Block ausgeführt. Ist sie falsch, wird automatisch und garantiert der else-Block ausgeführt. Es wird also immer genau einer der beiden Pfade durchlaufen.
Anwendungsfall: Eine strikte Entweder-Oder-Entscheidung.
eingegebener_code = "RABATT20"
gueltiger_code = "SOMMER24"
if eingegebener_code == gueltiger_code:
print("Code akzeptiert. 20% Rabatt werden abgezogen.")
else:
print("Fehler: Ungültiger Gutscheincode.")Die if-elif-else-Struktur: Mehrere exklusive Alternativen
Gibt es mehr als zwei mögliche Zustände, nutzt du eine if-elif-else-Kette (elif steht für "else if"). Das Programm prüft die Bedingungen streng von oben nach unten. Sobald die erste wahre Bedingung gefunden wird, führt das Programm den zugehörigen Block aus und überspringt danach alle restlichen Prüfungen dieser Kette.
In vielen Programmiersprachen (wie Java oder C#) gibt es für die Prüfung einer einzelnen Variable gegen viele feste Werte auch die switch-Anweisung (in Python ab Version 3.10 als match-case bekannt). Sie ist oft übersichtlicher als eine lange elif-Kette.
Anwendungsfall: Kategorisierungen, bei denen ein Wert nur in genau eine Kategorie fallen darf.
bestellwert = 75 # in Euro
if bestellwert >= 100:
print("Versandkostenfrei!")
elif bestellwert >= 50:
print("Versandkosten: 2,99 Euro")
elif bestellwert >= 20:
print("Versandkosten: 4,99 Euro")
else:
print("Versandkosten: 6,99 Euro")Exklusive vs. nicht-exklusive Ausführung
Die Wahl der richtigen Struktur hängt entscheidend davon ab, ob deine Bedingungen exklusiv oder nicht-exklusiv sind. Dies ist eine häufige Fehlerquelle in der Programmierung.
- Exklusive Ausführung (
if-elifoderswitch): Ein Zustand schließt die anderen aus. Eine Ampel kann nicht gleichzeitig rot und grün sein. Hier darf nur der erste zutreffende Block ausgeführt werden. - Nicht-exklusive Ausführung (Mehrere einzelne
ifs): Nutze dies, wenn Eigenschaften völlig unabhängig voneinander sind. Jede Bedingung wird separat geprüft, und es können theoretisch mehrere Blöcke nacheinander ausgeführt werden.
# Nicht-exklusiv: Ein Laptop kann BEIDES haben
hat_wlan = True
hat_bluetooth = True
if hat_wlan:
print("WLAN-Modul wird aktiviert.")
if hat_bluetooth:
print("Bluetooth-Modul wird aktiviert.")Teste dein Wissen
Du programmierst eine Smart-Home-Steuerung. Die Heizung soll nur angehen, wenn die Temperatur unter 18 Grad fällt. Welches Programmierkonzept setzt dieses Verhalten um?