Difference between revisions of "While"

From Free Pascal wiki
Jump to navigationJump to search
m (ordinal numbers in syntaxhighlight)
Line 3: Line 3:
 
<syntaxhighlight lang="pascal" enclose="none">while</syntaxhighlight> in conjunction with [[Do|<syntaxhighlight lang="pascal" enclose="none">do</syntaxhighlight>]] repeats a statement as long as a condition evaluates to [[True|<syntaxhighlight lang="pascal" enclose="none">true</syntaxhighlight>]].
 
<syntaxhighlight lang="pascal" enclose="none">while</syntaxhighlight> in conjunction with [[Do|<syntaxhighlight lang="pascal" enclose="none">do</syntaxhighlight>]] repeats a statement as long as a condition evaluates to [[True|<syntaxhighlight lang="pascal" enclose="none">true</syntaxhighlight>]].
 
The condition expression is evaluated prior each iteration, determining whether the following block (or single statement) is executed.
 
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|<syntaxhighlight lang="pascal" enclose="none">repeat … until</syntaxhighlight>-loop]], where the block is executed at any rate, but succeeding iterations do not necessarily happen, though.
+
This is the main difference to a [[Repeat|<syntaxhighlight lang="pascal" enclose="none">repeat … until</syntaxhighlight>-loop]], where the [[Block|block]] is executed at any rate, but succeeding iterations do not necessarily happen, though.
  
 
The following example contains unreachable code:
 
The following example contains unreachable code:
Line 17: Line 17:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
You usually use <syntaxhighlight lang="pascal" enclose="none">while</syntaxhighlight>-loops where, in contrast to [[For|<syntaxhighlight lang="pascal" enclose="none">for</syntaxhighlight>-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|<syntaxhighlight lang="pascal" enclose="none">break</syntaxhighlight>-statement]] (which usually indicates bad programming style).
+
You usually use <syntaxhighlight lang="pascal" enclose="none">while</syntaxhighlight>-loops where, in contrast to [[For|<syntaxhighlight lang="pascal" enclose="none">for</syntaxhighlight>-loops]], a running index [[Variable|variable]] is not required, the block executed can't be deduced from an index that's incremented by one, or to avoid a [[Break|<syntaxhighlight lang="pascal" enclose="none">break</syntaxhighlight>-statement]] (which usually indicates bad programming style).
 
<syntaxhighlight lang="pascal" line highlight="9">
 
<syntaxhighlight lang="pascal" line highlight="9">
 
program whileDemo(input, output, stderr);
 
program whileDemo(input, output, stderr);

Revision as of 20:35, 10 January 2019

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 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:

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 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).

 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.

see also


Keywords: begindoelseendforifrepeatthenuntilwhile