EMZETT.
Login

Fußgesteuerte Schleife

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

Kurz: Eine Schleife, bei der die Abbruchbedingung erst NACH dem Schleifenkörper geprüft wird — der Codeblock läuft dadurch garantiert mindestens einmal, egal ob die Bedingung überhaupt jemals wahr war.

Genauer: Klassisches Beispiel ist do...while. Nützlich für Fälle, in denen eine Aktion immer mindestens einmal passieren muss, bevor überhaupt geprüft werden kann, ob sie wiederholt werden soll — etwa eine Menüabfrage, die erst nach der ersten Anzeige entscheidet, ob sie erneut gezeigt wird. Im Gegensatz dazu prüft die kopfgesteuerte Schleife die Bedingung vorab und kann den Körper komplett überspringen.

Im Detail

Der Name beschreibt die Position der Bedingungsprüfung im Schleifenaufbau: “Fuß” steht für das Ende des Schleifenkörpers, wo die Bedingung geprüft wird (“do { … } while (…)”), im Gegensatz zum “Kopf” am Anfang bei der kopfgesteuerten Schleife.

mache {
    zeige_menue()
    auswahl = frage_nutzer()
} solange auswahl != "beenden"

Der entscheidende praktische Unterschied: Bei einer fußgesteuerten Schleife läuft der Körper garantiert mindestens einmal, weil die Bedingung erst nach dem ersten Durchlauf überhaupt zum ersten Mal geprüft wird. Das eignet sich immer dann, wenn man die Bedingung logisch gar nicht VOR dem ersten Durchlauf auswerten kann — etwa weil die dafür nötigen Daten (eine Nutzereingabe, ein Menü-Auswahlwert) erst durch den Schleifenkörper selbst entstehen.

Bei einer normalen, kopfgesteuerten Schleife müsste man diesen “garantierten ersten Durchlauf” künstlich erzwingen, entweder durch eine duplizierte Vorab-Ausführung des Codes vor der Schleife, oder durch eine Bedingungsvariable, die man extra so initialisiert, dass die erste Prüfung immer wahr ausfällt — beides fügt unnötige Komplexität hinzu, die eine fußgesteuerte Schleife von Natur aus vermeidet.

Fußgesteuerte Schleifen sind insgesamt seltener als kopfgesteuerte, weil der Anwendungsfall (“Körper muss mindestens einmal laufen”) spezieller ist als der Standardfall (“Körper soll null- bis beliebig-oft laufen, abhängig von einer vorab prüfbaren Bedingung”). Typische Einsatzgebiete: interaktive Menüs, Eingabevalidierung (siehe do-while-Schleife), oder Netzwerkprotokolle, bei denen mindestens ein Versuch unternommen werden muss, bevor überhaupt ein Ergebnis zur Auswertung vorliegt.

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