Do-while-Schleife

In den meisten Programmiersprachen gibt es eine Kontrollstruktur namens Do-while-Schleife, die es ermöglicht, dass abhängig von einer gegebenen Booleschen Bedingung ein Codeabschnitt wiederholt ausführt wird.

Das Do-while-Konstrukt besteht aus einem Codeblock (Rumpf) und einer Bedingung. Der Code innerhalb des Rumpfes wird zuerst ausgeführt, dann wird die Bedingung ausgewertet. Falls die Bedingung wahr ist, so wird der Code innerhalb des Rumpfes erneut ausgeführt. Dies wiederholt sich, bis die Bedingung falsch wird. Weil die Do-while-Schleife die Bedingung überprüft, nachdem der Rumpf bereits ausgeführt wurde, nennt man diese Kontrollstruktur häufig auch eine fußgesteuerte Schleife oder Schleife mit nachfolgender Prüfung. Betrachte zum Vergleich die While-Schleife, die zunächst die Bedingung prüft, bevor der Code innerhalb des Rumpfes ausgeführt wird.

Dabei ist es möglich und in manchen Fällen auch erwünscht, dass die Bedingung stets wahr bleibt, sodass eine Endlosschleife entsteht. Wenn eine solche Schleife absichtlich erzeugt wird, dann gibt es für gewöhnlich eine weitere Kontrollstruktur (wie z.B. eine Break-Anweisung), mit der man unabhängig von der Bedingung die Terminierung der Schleife steuern kann.

Betrachte folgendes Beispiel in der Sprache C:

x = 0;
 do {
    x = x + 1;
 } while (x < 3);
 

Dies führt zunächst die Instruktion x = x + 1 aus, prüft dann die Bedingung x < 3, die nicht erfüllt ist, also wird der Rumpf erneut ausgeführt. Dieser Prozess des Ausführens und Prüfens wird solange wiederholt, bis die Variable x den gewünschten Wert 3 hat.

Anwendungsbeispiele für Do-while-Schleifen

Diese Do-while-Schleifen berechnen die Fakultät einer Zahl:

In QBasic oder Visual Basic:

 Dim Zaehler as Byte, Fakultaet as Long
  Zaehler = 5 'Zahl, deren Fakultät berechnet wird.
  Fakultaet = 1
  Do
    Fakultaet = Fakultaet * Zaehler
    Zaehler = Zaehler - 1
  While (Zaehler > 0)
  Print Fakultaet 'Gibt das Ergebnis aus.
 

In C oder C++:

 int main() {
    unsigned int Zaehler = 5;
    unsigned long Fakultaet = 1;
    do {
      Fakultaet *= Zaehler--; /*Multipliziert und dekrementiert anschließend.*/
    } while (Zaehler > 0);
    printf("%i", Fakultaet);
    return 0;
  }
 

In Java:

 int Zaehler = 5;
  int Fakultaet = 1;
  do {
      Fakultaet *= Zaehler --;
  } while(Zaehler > 0);
  System.out.println(Fakultaet);
 

Siehe auch

For-Schleife, While-Schleife, Schleife

See also: Do-while-Schleife, Boolesche Variable, Break, C-Plusplus, C (Programmiersprache), Endlosschleife, Fakultät, Falsch, For-Schleife, Java (Programmiersprache)