EMZETT.
Login

Fußgesteuerte Schleife

Fußgesteuerte Schleife Bild: Taylor, CC BY-SA 4.0, Wikimedia Commons

Kurz: Eine Schleife, deren Abbruchbedingung erst NACH dem ersten Durchlauf geprüft wird — der Schleifenkörper läuft also immer mindestens einmal.

Genauer: In Java ist do...while die einzige fußgesteuerte Schleifenform. Sinnvoll, wenn eine Aktion garantiert mindestens einmal passieren soll, bevor überhaupt geprüft wird, ob sie wiederholt werden muss — klassisches Beispiel: eine Menüabfrage, die mindestens einmal angezeigt wird.

Im Detail

Der Unterschied zwischen kopf- und fußgesteuert lässt sich am besten an einem Extremfall zeigen — einer Bedingung, die von Anfang an false ist:

int n = 0;
 
// Kopfgesteuert: Bedingung zuerst geprüft -> läuft 0 Mal
while (n > 0) {
    System.out.println("läuft nie");
}
 
// Fußgesteuert: Körper zuerst ausgeführt, DANN geprüft -> läuft genau 1 Mal
do {
    System.out.println("läuft trotzdem einmal");
} while (n > 0);

Diese Garantie “mindestens ein Durchlauf” macht die fußgesteuerte Schleife zur richtigen Wahl, wann immer eine Aktion zwingend passieren muss, BEVOR überhaupt geprüft werden kann, ob eine Wiederholung nötig ist — klassisch bei Nutzereingaben, die erst nach der Eingabe validiert werden können. In der Praxis ist do-while in Java-Code trotzdem deutlich seltener als kopfgesteuerte Formen, weil sich viele Fälle auch mit einer Endlosschleife plus break lösen lassen, die manche Entwickler:innen als expliziter und lesbarer empfinden.

Klassisches Praxisbeispiel: Menüabfrage

Scanner scanner = new Scanner(System.in);
int auswahl;
 
do {
    System.out.println("1) Neu starten  2) Speichern  3) Beenden");
    auswahl = scanner.nextInt();
 
    switch (auswahl) {
        case 1 -> System.out.println("Neustart...");
        case 2 -> System.out.println("Gespeichert.");
        case 3 -> System.out.println("Beende...");
        default -> System.out.println("Ungültige Auswahl, bitte erneut.");
    }
} while (auswahl != 3);

Das Menü MUSS mindestens einmal angezeigt werden, damit der Nutzer überhaupt eine Eingabe treffen kann — eine kopfgesteuerte Schleife bräuchte hier eine künstliche Vorab-Initialisierung der Abbruchvariable, um denselben Effekt zu erzielen, was den Code umständlicher macht.

Äquivalente Umsetzung ohne do-while

Dieselbe Logik lässt sich immer auch mit einer Endlosschleife (while (true)) plus explizitem break an der gewünschten Stelle nachbilden — dieser Stil erlaubt es, die Abbruchbedingung mitten im Schleifenkörper zu platzieren, statt nur am Anfang oder Ende, was manchmal flexibler ist als das starre “erst Körper, dann Bedingung”-Muster von do-while:

while (true) {
    // Aktion
    if (bedingungErfuellt) break;
}

Terminologie in anderen Sprachen

Der Begriff “fußgesteuert” ist im deutschsprachigen Informatikunterricht gebräuchlich, in englischsprachiger Literatur spricht man meist von einer “post-condition loop” oder schlicht “do-while loop”, nach der Java-Schreibweise. Nicht jede Programmiersprache bietet diese Form nativ an: Python zum Beispiel verzichtet komplett auf eine eigene fußgesteuerte Schleifenkonstruktion und bildet dasselbe Verhalten über eine Endlosschleife mit break nach, während C, C++, C# und JavaScript wie Java eine echte do-while-Syntax mitbringen.

Siehe auch: do-while-Schleife, Kopfgesteuerte Schleife, Schleifen