1. Der if else Operator
Programme wären ziemlich nutzlos, wenn sie immer das Gleiche machen würden, egal wie sich die äußeren Umstände ändern. Ein Programm muss sich an verschiedene Situationen anpassen können und in manchen Fällen das eine, in anderen das andere tun.
In C# wird das mit dem bedingten Operator umgesetzt – einem speziellen Schlüsselwort, das es erlaubt, verschiedene Befehlsblöcke abhängig von der Wahrheit einer Bedingung auszuführen.
Der bedingte Operator besteht aus drei Teilen: Bedingung, Befehl 1 und Befehl 2. Wenn die Bedingung wahr ist, wird Befehl 1 ausgeführt, sonst Befehl 2. Die Befehle werden niemals gleichzeitig ausgeführt. Allgemein sieht das so aus:
if (Bedingung)
Befehl1;
else
Befehl2;
if-else
if heißt auf Deutsch „wenn“, und else heißt „sonst“. In Alltagssprache könnte man das so schreiben:
Wenn Bedingung wahr, dann
führe aus Befehl1;
sonst
führe aus Befehl2;
if-else in Alltagssprache
Beispiele:
//Auf dem Bildschirm wird ausgegeben: Du bist noch ein Kind
int age = 17;
if (age < 18)
Console.WriteLine("Du bist noch ein Kind");
else
Console.WriteLine("Du bist schon erwachsen");
//Auf dem Bildschirm wird ausgegeben: Warm
int temperature = 5;
if (temperature < 0)
Console.WriteLine("Draußen ist Frost");
else
Console.WriteLine("Warm");
//Auf dem Bildschirm wird ausgegeben: Du darfst den Führerschein machen
int age = 18;
if (age == 18)
Console.WriteLine("Du darfst den Führerschein machen");
else
Console.WriteLine("Du kannst für ein Auto sparen");
2. Befehlsblock
Wenn du beim Eintreten (oder Nicht-Eintreten) einer Bedingung möchtest, dass dein Programm mehrere Befehle ausführt, kannst du sie zu einem Befehlsblock zusammenfassen.
Um Befehle zu einem Block zusammenzufassen, musst du sie in geschweifte Klammern setzen. So sieht das allgemein aus:
{
Befehl1;
Befehl2;
Befehl3;
}
Es können beliebig viele Befehle im Block stehen. Sogar null.
Beispiele für die Kombination von if-else und Befehlsblock:
//Auf dem Bildschirm wird ausgegeben: Du bist noch ein Kind. Widersprich den Erwachsenen nicht
int age = 17;
if (age < 18)
{
Console.WriteLine("Du bist noch ein Kind");
Console.WriteLine("Widersprich den Erwachsenen nicht");
}
else
{
Console.WriteLine("Du bist schon erwachsen");
Console.WriteLine("Na, diese Jugend heutzutage");
}
//Auf dem Bildschirm wird ausgegeben: Warm
int temperature = 5;
if (temperature < 0)
{
Console.WriteLine("Draußen ist Frost");
Console.WriteLine("Zieh eine Mütze an");
}
else
Console.WriteLine("Warm");
//Es wird ein leerer Befehlsblock ausgeführt. Es wird nichts ausgegeben.
int age = 21;
if (age == 18)
Console.WriteLine("Melde dich beim Kreiswehrersatzamt");
else
{
}
3. Kurzsyntax des if-Operators
Wenn im else-Block kein Code steht, kannst du ihn weglassen. Dann sieht der if-Operator so aus:
if (Bedingung)
Befehl1;
if
Beispiel:
int age = 19;
if (age >= 18)
{
Console.WriteLine("Du bist volljährig!");
}
Wie funktioniert das?
Wenn die Bedingung wahr ist, wird der Codeblock ausgeführt. Wenn sie falsch ist, passiert nichts – das Programm läuft einfach weiter.
Der else-Block ist im Programm da, aber leer (zwischen den geschweiften Klammern stehen keine Befehle). Du kannst ihn einfach weglassen: Im Programm ändert sich dadurch nichts.
4. Bedingungen kombinieren: else if
Manchmal muss man nicht nur "ja/nein" prüfen, sondern aus mehreren Varianten wählen. Hier hilft die Kombination else if:
if (Bedingung1)
{
// Wird ausgeführt, wenn Bedingung1 wahr ist
}
else if (Bedingung2)
{
// Wird ausgeführt, wenn Bedingung2 wahr ist und Bedingung1 falsch
}
else
{
// Wird ausgeführt, wenn keine der obigen Bedingungen passt
}
Beispiel:
int hour = 13;
if (hour < 12)
{
Console.WriteLine("Guten Morgen!");
}
else if (hour < 18)
{
Console.WriteLine("Guten Tag!");
}
else
{
Console.WriteLine("Guten Abend!");
}
Was passiert hier?
- Wenn die Zeit vor 12 ist – Morgen.
- Wenn zwischen 12 und 18 – Tag.
- Wenn mehr – Abend.
- Das Programm wählt nur EINE der Varianten! Sobald eine Bedingung passt, werden die anderen nicht mehr geprüft.
5. Schematische Illustration: Flussdiagramm der Verzweigung
So sieht das als Flussdiagramm aus:
Und wenn es mehrere Bedingungen gibt:
Das erinnert sehr an Abzweigungen in Pen-&-Paper-Rollenspielen: gehst du nach links – das eine, nach rechts – das andere, geradeaus – noch was anderes!
6. Welche Bedingungen kann man prüfen?
In den runden Klammern nach if muss ein LOGISCHER Ausdruck stehen – dessen Ergebnis true oder false ist.
Die wichtigsten Vergleichsoperatoren:
| Operator | Bedeutung | Beispiel |
|---|---|---|
| == | Gleich | x == 5 |
| != | Ungleich | x != 10 |
| > | Größer | x > 0 |
| < | Kleiner | age < 18 |
| >= | Größer oder gleich | score >= 100 |
| <= | Kleiner oder gleich | count <= 50 |
Beispiele für Bedingungen:
if (number == 10)
if (age != 18)
if (temperature > 36)
if (balance <= 0)
Beachte: = (ein Zeichen) – ist Zuweisung. == (zwei Zeichen) – ist Vergleich. Das ist einer der häufigsten Fehler bei Anfängern! Wenn du versehentlich schreibst:
if (x = 5) // FEHLER!
– der Compiler wird dich anschreien, und das ist auch gut so.
7. Arbeiten mit Strings in Bedingungen
Du kannst nicht nur Zahlen, sondern auch Strings vergleichen:
string password = Console.ReadLine();
if (password == "qwerty")
{
Console.WriteLine("Du bist eingeloggt!");
}
Achtung: Der Vergleich von Strings mit == funktioniert in C# in normalen Fällen korrekt, weil der Inhalt der Strings verglichen wird (und nicht nur die Referenzen auf die Objekte). Mehr zu den Feinheiten beim String-Vergleich besprechen wir noch, wenn es um String-Methoden und Lokalisierung geht.
8. Besonderheiten und Feinheiten:
Geschweifte Klammern: nötig oder nicht?
Wenn nach if oder else nur ein Befehl steht, kannst du die geschweiften Klammern weglassen:
if (age > 18)
Console.WriteLine("Du bist über 18!");
// Aber sicherer ist es, IMMER Klammern zu schreiben:
if (age > 18)
{
Console.WriteLine("Du bist über 18!");
}
Tipp: Schreib immer mit Klammern. Das schützt dich vor vielen Fehlern, besonders wenn du den Code später erweiterst.
Logische Fehler: Sei aufmerksam bei Bedingungen!
Wenn du so schreibst:
if (age > 18)
Console.WriteLine("Du bist über 18!");
Console.WriteLine("Willkommen!");
Dann liest der Compiler das so:
if (age > 18)
{
Console.WriteLine("Du bist über 18!");
}
Console.WriteLine("Willkommen!");
Die zweite Zeile wird immer ausgeführt – Klammern sind nötig, damit beide Zeilen im "Zweig" sind.
GO TO FULL VERSION