Difference between revisions of "While"

From Free Pascal wiki
Jump to navigationJump to search
(resolve language imprecision)
Line 33: Line 33:
 
end;
 
end;
 
end.
 
end.
 +
</syntaxhighlight>
 +
 +
 +
 +
You can use <syntaxhighlight lang="pascal" inline>Continue</syntaxhighlight> to jump to the end of the loop.
 +
In the example below all values from 1 to 10 are printed, except 5.
 +
<syntaxhighlight lang="pascal" line highlight="9">
 +
program whileDemo(input, output, stderr);
 +
var
 +
  i:integer=0;
 +
begin
 +
  while true do
 +
  begin
 +
    inc(i);
 +
    if i>10 then break;
 +
    if i=5 then continue;
 +
    writeLn(i);
 +
  end;
 +
end; 
 
</syntaxhighlight>
 
</syntaxhighlight>
  

Revision as of 09:54, 4 January 2023

Deutsch (de) English (en) suomi (fi) français (fr) русский (ru)

while in conjunction with do repeats a statement as long as a condition evaluates to true. The condition expression is evaluated prior each iteration, determining whether the following statement is executed. This is the main difference to a repeat  until-loop, where the loop body is executed at any rate, but succeeding iterations do not necessarily happen, though.

The following example contains unreachable code:

1program whileFalse(input, output, stderr);
2
3begin
4	while false do
5	begin
6		writeLn('never gets printed');
7	end;
8end.

You usually use while-loops where, in contrast to for-loops, a running index variable is not required, the statement 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).

 1program whileDemo(input, output, stderr);
 2
 3var
 4	x: integer;
 5begin
 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;
14end.


You can use Continue to jump to the end of the loop. In the example below all values from 1 to 10 are printed, except 5.

 1program whileDemo(input, output, stderr);
 2var
 3  i:integer=0;
 4begin
 5  while true do
 6  begin
 7    inc(i);
 8    if i>10 then break;
 9    if i=5 then continue;
10    writeLn(i);
11  end;
12end;

see also


Keywords: begindoelseendforifrepeatthenuntilwhile