do-while-Schleife
Bild: Taylor, CC BY-SA 4.0, Wikimedia Commons
Kurz: Die klassische Syntaxform der fußgesteuerten Schleife — führt den Codeblock aus und prüft erst danach, ob er erneut durchlaufen werden soll.
Genauer: Der Aufbau do { ... } while (Bedingung); dreht das Prinzip der While-Schleife um: statt “prüfen, dann ausführen” gilt “ausführen, dann prüfen”. Dadurch läuft der Block immer mindestens einmal — praktisch für Eingabevalidierung, bei der der Nutzer erst einmal etwas eingeben muss, bevor geprüft werden kann, ob die Eingabe gültig war.
Im Detail
do {
eingabe = frage_nutzer("Zahl zwischen 1 und 10: ")
} while (eingabe < 1 ODER eingabe > 10)Dieses Beispiel zeigt den klassischen Anwendungsfall: Man KANN die Bedingung (ist die Eingabe gültig?) erst prüfen, NACHDEM überhaupt eine Eingabe vorliegt — bei einer normalen While-Schleife müsste man deshalb die Eingabe künstlerisch “vor” die Schleife duplizieren, damit beim ersten Bedingungscheck bereits ein Wert existiert:
// Äquivalent mit while, aber mit duplizierter Eingabe-Logik:
eingabe = frage_nutzer(...)
while (eingabe < 1 ODER eingabe > 10):
eingabe = frage_nutzer(...)Die do-while-Variante vermeidet diese Code-Duplizierung, weil die Garantie “läuft mindestens einmal” bereits in der Struktur selbst steckt. Genau das ist der einzige, aber entscheidende Unterschied zur normalen while-Schleife: Bei while kann es sein, dass der Codeblock NULL Mal ausgeführt wird (wenn die Bedingung von Anfang an falsch ist), bei do-while läuft er garantiert mindestens EINMAL, egal wie die Bedingung zu Beginn aussieht — weil sie ja erst am Ende geprüft wird.
Nicht jede Sprache bietet do-while als eigenes Sprachkonstrukt an (Python zum Beispiel nicht) — dort emuliert man das Verhalten meist mit einer Endlosschleife plus explizitem break am Ende:
while True:
eingabe = frage_nutzer(...)
if 1 <= eingabe <= 10:
breakIn der Praxis ist do-while seltener anzutreffen als while oder for, weil der Anwendungsfall (“Block muss mindestens einmal laufen, bevor die Bedingung überhaupt geprüft werden kann”) spezieller ist — trotzdem lohnt es sich, das Muster zu kennen, weil es genau in diesem Fall lesbareren Code ohne Duplizierung ermöglicht.
Siehe auch: Fußgesteuerte Schleife, While-Schleife, Schleifen