Übersicht

WHILE DO

Befehl aus der Gruppe: PASCAL-Sprachreferenz

Die WHILE-DO-Schleife führt eine Gruppe von <Anweisungen> nur aus, wenn die zwischen WHILE und DO angegebene <Bedingung> erfüllt ist.

Abgeschlossen wird die WHILE-DO-Schleife mit ENDWHILE;. Ist das Ende der Schleife erreicht, wird geprüft, ob die <Bedingung> noch erfüllt ist. Wenn ja, so wird die Schleife noch einmal durchlaufen.

Ist die <Bedingung> nicht mehr erfüllt, so wird mit der Abarbeitung der nächsten <Anweisung> nach dem ENDWHILE; fortgesetzt.


Ist die <Bedingung> zwischen WHILE und DO zum Zeitpunkt der Programmabarbeitung nicht erfüllt, so wird mit der nächsten Anweisung nach dem ENDWHILE; fortgesetzt.


Im Gegensatz zur FOR TO DO-Schleife benötigt die WHILE-DO-Schleife keine Zählvariable.

Syntax

WHILE <Bedingung> DO

<0..n Anweisungen>

ENDWHILE;

Parameter

<Bedingung> = BOOLscher Ausdruck (Wahr oder Falsch)

<0..n Anweisungen> = Gruppe von einzelnen Anweisungen, Verzweigungen oder weiteren bedingten Anweisungen

Beispiel


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
PROGRAM test_while_do;
 
DEVICE = mega1284P;
 
{$I mega1284_Register.INC}
 
VAR
  Kursor_Schleife : DWord;
 
BEGIN
 
  Kursor_Schleife:=5;
 
  while Kursor_Schleife<100 do
    Kursor_Schleife:=Kursor_Schleife+10;
  endwhile;
 
END test_while_do.

Die <Bedingung> für diese WHILE-DO-Schleife ist "Kursor_Schleife<100" (Zeile 14). Das bedeutet, solange das Ergebnis des Vergleichs wahr ist, wird die Schleife abgearbeitet.

Wichtig ist, dass die Bedingung beim Eintritt in die Schleife bereits erfüllt sein muß.

Daher wird in diesem Beispiel in Zeile 12 mit "Kursor_Schleife:=5;" die Eintrittsbedingung in die Schleife festgelegt.

Mit jedem Schleifendurchlauf wird der Wert der Variable "Kursor_Schleife" in Zeile 15 mit "Kursor_Schleife:=Kursor_Schleife+10;" verändert. Nach jedem Schleifendurchlauf ist er: 15, 25, 35..95.

Nach dem 10. Schleifendurchlauf ist er 105 und die <Bedingung> "Kursor_Schleife<100" ist nicht mehr erfüllt. Damit wird die Schleife nach dem 10. Schleifendurchlauf verlassen.

Hinweis: Wird die <Bedingung> nie unwahr (z.B. wenn die <Bedingung> "Kursor_Schleife<>100" heißen würde), dann wird die Schleife auch nie verlassen (Endlosschleife).


siehe auch

IF_THEN



Übersicht