
Einleitung
Bedingungen sind das Fundament jeder Programmlogik. Sie ermöglichen es, Entscheidungen im Programmablauf zu treffen und unterschiedliche Ausführungswege zu definieren. Die bekanntesten bedingten Anweisungen sind if
, else if
, else
sowie switch
bzw. match
in moderneren Sprachen. In diesem Beitrag analysieren wir die Unterschiede zwischen diesen Konstrukten in verschiedenen Programmiersprachen wie Python, JavaScript, Java und C#. Zudem werden Best Practices vorgestellt, um verständlichen und wartbaren Code zu schreiben.
Inhalt
1. Grundlegende Struktur von Bedingungen (if/else)
Die if
-Anweisung ermöglicht es, einen Codeblock nur unter bestimmten Bedingungen auszuführen. Dabei wird ein boolescher Ausdruck ausgewertet, und bei Wahrheitswert true
erfolgt die Ausführung.
Beispiel in Python:
x = 10
if x > 5:
print("x ist größer als 5")
elif x == 5:
print("x ist genau 5")
else:
print("x ist kleiner als 5")
Beispiel in Java:
int x = 10;
if (x > 5) {
System.out.println("x ist größer als 5");
} else if (x == 5) {
System.out.println("x ist genau 5");
} else {
System.out.println("x ist kleiner als 5");
}
Beispiel in JavaScript:
let x = 10;
if (x > 5) {
console.log("x ist größer als 5");
} else if (x === 5) {
console.log("x ist genau 5");
} else {
console.log("x ist kleiner als 5");
}
Beispiel in C#:
int x = 10;
if (x > 5)
{
Console.WriteLine("x ist größer als 5");
}
else if (x == 5)
{
Console.WriteLine("x ist genau 5");
}
else
{
Console.WriteLine("x ist kleiner als 5");
}
2. Unterschiede bei Wahrheitswerten (Truthy/Falsy)
Ein wichtiger Aspekt beim Arbeiten mit Bedingungen ist die Definition von Wahrheit. Während Sprachen wie Java und C# strikte Typisierung verlangen (boolesche Ausdrücke sind Pflicht), akzeptieren JavaScript und Python auch sogenannte „truthy“ und „falsy“ Werte.
Beispiel in JavaScript:
if ("") {
console.log("Dieser Code wird nicht ausgeführt");
}
Leere Strings, die Zahl 0
, null
, undefined
und NaN
sind in JavaScript falsy
.
Beispiel in Python:
if []:
print("Nicht wahr")
else:
print("Leer, daher falsch")
Leere Listen, leere Strings, 0
, None
usw. sind False
-äquivalent in Python.
Java und C# hingegen akzeptieren ausschließlich boolesche Werte im if
:
// Fehler in Java:
if (1) { ... } // Kompilierfehler
3. Best Practices für lesbare Bedingungen
- Bedingungen nicht verschachteln, wenn es vermeidbar ist
- Bedingungen mit sprechenden Variablennamen kombinieren
- Negationen vermeiden, wenn sie die Lesbarkeit verschlechtern
- Bei mehr als 3 Bedingungen: Strukturieren oder
switch
verwenden
Beispiel schlecht lesbar:
if not (user.is_active and not user.is_admin):
...
Besser:
if user.is_admin or not user.is_active:
...
4. Übungen mit Lösungen
Aufgabe 1: Schreibe eine Bedingung in JavaScript, die prüft, ob eine Variable input
weder leer noch undefined
ist.
Lösung
if (input !== undefined && input !== "") {
console.log("Gültiger Input");
}
Aufgabe 2: In Python: Prüfe, ob ein Benutzer eingeloggt und Administrator ist.
Lösung
if user.is_authenticated and user.is_admin:
print("Adminbereich sichtbar")
Aufgabe 3: Was ist das Ergebnis?
let x = 0;
if (x) {
console.log("x ist wahr");
} else {
console.log("x ist falsch");
}
Antwort:
x ist falsch
, da 0
in JavaScript falsy
ist.
Fazit
Die Beherrschung bedingter Anweisungen in verschiedenen Programmiersprachen ist eine Kernkompetenz für professionelle Softwareentwicklung. Der richtige Umgang mit if
, else
und elif
sowie ein fundiertes Verständnis der typischen Sprachunterschiede – insbesondere bei Truthy/Falsy-Werten – verbessert die Wartbarkeit und Robustheit von Code erheblich. In den nächsten Kursbeiträgen werden wir tiefer in switch
-Statements, Ternäroperatoren und komplexe Bedingungslogik einsteigen.
Quellen und weiterführende Literatur
- Python-Dokumentation: https://docs.python.org/3/reference/compound_stmts.html#if
- MDN Web Docs (JavaScript): https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Statements/if…else
- Java Language Specification: https://docs.oracle.com/javase/specs/
- C# Dokumentation von Microsoft: https://learn.microsoft.com/de-de/dotnet/csharp/language-reference/statements/selection-statements