Wiederholung ◦ Zusammenfassung ◦ ?

Ohne Wiederholungs- und Entscheidungsanweisungen wären viele Aufgaben nur umständlich oder überhaupt nicht programmierbar:

- Die Berechnung der Summe von 1 + 2 + ... + 1000 benötigt eine Wiederholungsanweisung
- Falls Quadrat(Seite) nur dann gezeichnet werden soll, falls die Quadratseiten auf den Bildschirm reichen, dann benötigen wird eine Entscheidungsanweisung (If ... Then ... Else ...)

Die Wiederholungsaufgabe liesse sich - allerdings umständlich - mit den Operatoren = und + programmieren (Summe = 1 + 2 + ... + 1000). Die Wiederholungsanweisung Do While ... Loop erleichtert die Aufgabe (engl. loop heisst Schleife):

>     Zahl = 1                  ‘ 1 (' beginnt einen Kommentar bis an das Ende der Zeile)
>     Summe = 0                 ‘ 2
>     Do While Zahl <= 1000     ‘ 3
>       Summe = Summe + Zahl    ‘ 4
>       Zahl = Zahl + 1         ‘ 5
>     Loop                      ‘ 6

Die Zeilen 1 und 2 weisen dem Wiederholungszähler Zahl und der Aggregationsvariablen Summe die Anfangswerte 1 und 0 zu. Solange Zahl kleiner oder gleich 1000 ist, wird die Schleife betreten (Zeile 3). In der Schleife wird jedesmal der laufende Wert von Zahl zur Summe addiert und dann Zahl um 1 erhöht (Zeilen 4 und 5). Gilt die Bedingung nach dem Schlüsselwort While nicht mehr, so springt das Programm nach dem Schlüsselwort Loop nicht mehr zur Zeile 3 zurück (Zeile 6), sondern fährt mit der nächsten Zeile fort.

Das Beispiel lässt sich verallgemeinern:

> <Initialisierung>
> Do While <Ausführungsbedingung>
> <Schleifenkörper>
> Loop

Nach der Initialisierung der Variablen, die in der Schleife geändert werden, wiederholt das Programm die Anweisungen in der Schleife so lange, bis die Ausführungsbedingung nicht mehr zutrifft. Fehler schleichen sich vor allem an den folgenden Positionen einer Wiederholungsanweisung ein:

a) Initialisierung

>     Zahl = 1
>     Summe = 1               ‘ Initialisierungsfehler!
>     Do While Zahl <= 1000
>       Summe = Summe + Zahl
>       Zahl = Zahl + 1
>     Loop

b) Schleifenbedingung

>     Zahl = 1
>     Summe = 0
>     Do While Zahl < 1000    ‘ Bedingungsfehler!
>       Summe = Summe + Zahl
>       Zahl = Zahl + 1
>     Loop

c) Schleifenkörper

>     Zahl = 1
>     Summe = 0
>     Do While Zahl <= 1000
>       Zahl = Zahl + 1       ‘ Zählfehler! (Reihenfolge)
>       Summe = Summe + Zahl  ‘ Aggregationsfehler! (Reihenfolge)
>     Loop

Jeder dieser Fehler lässt sich durch eine Korrektur der Initialisierungsphase, der Schleifenbedingung oder der Reihenfolge der Schleifenanweisungen beheben.

Korrigieren Sie die obigen Fehler, indem Sie die fehlerhafte Zeile belassen, aber den übrigen Code ändern.

Wiederholungs- und Entscheidungsanweisung
Entscheidungsanweisungen