while in conjunction with
do repeats a statement as long as a condition evaluates to
The condition expression is evaluated prior each iteration, determining whether the following block (or single statement) is executed.
This is the main difference to a
repeat … until-loop, where the block is executed at any rate, but succeeding iterations do not necessarily happen, though.
The following example contains unreachable code:
1 program whileFalse(input, output, stderr); 2 3 begin 4 while false do 5 begin 6 writeLn('never gets printed'); 7 end; 8 end.
You usually use
while-loops where, in contrast to
for-loops, a running index variable is not required, the block executed can't be deduced from an index that's incremented by one, or to avoid a
break-statement (which usually indicates bad programming style).
1 program whileDemo(input, output, stderr); 2 3 var 4 x: integer; 5 begin 6 x := 1; 7 8 // prints non-negative integer powers of two 9 while x < high(x) div 2 do 10 begin 11 writeLn(x); 12 inc(x, x); // x := x + x 13 end; 14 end.