Difference between revisions of "While"

From Free Pascal wiki
Jump to navigationJump to search
(Undo revision 140570 by Rfc1394 (talk): ensure reserved words are highlighted as such, remove incorrect information, ensure every sentence spans exactly one source code line for better diffs)
Tag: Undo
(undo revision 025DCC by Paskal (talk): this content is rather presented on Continue and, by the way, the example is imaginably poorly designed)
Tag: Undo
 
(3 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
{{while}}
 
{{while}}
  
<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" inline>while</syntaxhighlight> in conjunction with [[Do|<syntaxhighlight lang="pascal" inline>do</syntaxhighlight>]] repeats a statement as long as a condition evaluates to [[True|<syntaxhighlight lang="pascal" inline>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 [[statement]] is executed.
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.
+
This is the main difference to a [[Repeat|<syntaxhighlight lang="pascal" inline>repeat … until</syntaxhighlight>-loop]], where the [[Loops|loop]] body 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|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" inline>while</syntaxhighlight>-loops where, in contrast to [[For|<syntaxhighlight lang="pascal" inline>for</syntaxhighlight>-loops]], a running index [[Variable|variable]] is not required, the statement executed can't be deduced from an index that's incremented by one, or to avoid a [[Break|<syntaxhighlight lang="pascal" inline>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);

Latest revision as of 05:22, 25 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.

see also


Keywords: begindoelseendforifrepeatthenuntilwhile