1. Einführung in die do-while Schleife
Lass uns mal kurz abschweifen und uns vorstellen: Du willst ein Programm schreiben, das eine vom Benutzer ausgedachte Zahl errät. Das Programm soll den Benutzer mindestens einmal nach einer Zahl fragen und immer wieder fragen, bis es richtig ist. Aber wenn die Bedingung beim ersten Mal schon nicht passt, geht eine normale while gar nicht erst in die Schleife rein.
Genau hier kommt die do-while Schleife ins Spiel. Im Gegensatz zur while wird der Schleifenkörper immer mindestens einmal ausgeführt – selbst wenn die Bedingung direkt falsch ist. Das ist so, als würdest du einen Kaugummi gratis bekommen, egal ob du was gekauft hast oder nicht.
do
{
// Schleifenkörper: Dieser Code läuft mindestens einmal
}
while (Bedingung);
Achte auf das Semikolon ; am Ende nach der Klammer der Bedingung! Bei der normalen while gibt's das nicht, aber hier schon. So ein kleiner Stolperstein für Einsteiger :)
Ablauf der do-while Schleife
- Einstieg in den Schleifenkörper (immer mindestens einmal).
- Bedingung prüfen.
- Wenn die Bedingung wahr ist – Schleifenkörper wiederholen.
- Wenn die Bedingung falsch ist – Schleife verlassen.
2. Unterschied zur normalen while
Erinnern wir uns an das Standard-Szenario der normalen while:
while (Bedingung)
{
// Schleifenkörper
}
Der Schleifenkörper wird kein einziges Mal ausgeführt, wenn die Bedingung von Anfang an falsch ist!
Jetzt ein Beispiel mit do-while:
do
{
// Schleifenkörper
}
while (Bedingung);
Der Schleifenkörper läuft mindestens einmal, selbst wenn die Bedingung sofort falsch ist!
Lass uns den Unterschied mal im Code zeigen:
// Normale while
int count = 0;
while (count > 0)
{
Console.WriteLine("anzahl = " + count);
count--;
}
// Es wird nichts ausgegeben
// do-while
int count2 = 0;
do
{
Console.WriteLine("anzahl2 = " + count2);
count2--;
}
while (count2 > 0);
// Gibt "anzahl2 = 0" aus, obwohl die Bedingung falsch ist!
Manchmal wirkt das wie ein "Kuriosum", aber genau dieses Verhalten rettet dir manchmal den Code (zum Beispiel bei Benutzereingaben und Datenvalidierung).
3. Praktische Einsatzszenarien für do-while
Wo taucht diese Schleife am häufigsten auf?
Datenvalidierung
Das beliebteste Szenario: Du willst, dass der User etwas Richtiges eingibt (zum Beispiel nur Zahlen oder ein Passwort mit mindestens 6 Zeichen) und fragst so lange nach, bis die Eingabe passt.
string passwort;
do
{
Console.Write("Gib ein neues Passwort ein (mindestens 6 Zeichen): ");
passwort = Console.ReadLine();
}
while (passwort.Length < 6);
Console.WriteLine("Passwort akzeptiert!");
In diesem Beispiel läuft der Schleifenkörper mindestens einmal – auch wenn der User direkt ein langes Passwort eingibt.
Menü in Konsolenanwendungen
Sehr oft und super praktisch: Menü anzeigen, auf User-Befehl warten und die Schleife nur mit einem speziellen Befehl beenden.
string befehl;
do
{
Console.WriteLine("Menü:");
Console.WriteLine("1. Begrüßung anzeigen");
Console.WriteLine("2. Beenden");
Console.Write("Wähle eine Aktion: ");
befehl = Console.ReadLine();
if (befehl == "1")
{
Console.WriteLine("Hallo, Welt!");
}
else if (befehl != "2")
{
Console.WriteLine("Unbekannter Befehl.");
}
}
while (befehl != "2");
Console.WriteLine("Tschüss!");
4. Vergleich von while und anderen Schleifen
| Schleifentyp | Bedingungsprüfung | Wie oft kann der Körper laufen | Wann sinnvoll |
|---|---|---|---|
| while | Vorher | 0 oder mehrmals | Wenn man die Anzahl der Wiederholungen nicht vorher kennt |
| do-while | Nachher | 1 oder mehrmals | Wenn mindestens einmal ausgeführt werden soll |
| for | Vorher | 0 oder mehrmals | Wenn die Anzahl der Durchläufe vorher klar ist |
GO TO FULL VERSION