Difference between revisions of "Basic Pascal Tutorial/Chapter 3/REPEAT..UNTIL"
(Use pascal highlighter) |
m (extended with example suggested by sieben) |
||
(One intermediate revision by the same user not shown) | |||
Line 2: | Line 2: | ||
{{TYNavigator|WHILE..DO|FOR..IN}} | {{TYNavigator|WHILE..DO|FOR..IN}} | ||
− | REPEAT..UNTIL | + | REPEAT...UNTIL |
− | The | + | The repeat .. until construct is termed a ''post''-test loop, because the controlling condition is tested ''after'' each iteration of the loop. |
+ | |||
+ | It has the following syntax: | ||
<syntaxhighlight lang=pascal> | <syntaxhighlight lang=pascal> | ||
repeat | repeat | ||
statement1; | statement1; | ||
− | statement2 | + | // statement2; |
+ | // further statements... | ||
until BooleanExpression; | until BooleanExpression; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | A <tt>repeat</tt> loop encloses its executed statements, which means they do not need to be further enclosed in a <tt>begin ... end<tt> block. Note that a repeat loop continues until its controlling Boolean expression is <tt>True</tt>; whereas the <tt>while</tt> loop continues until its Boolean expression is <tt>False</tt>. | |
+ | |||
+ | For instance, the following <tt>repeat</tt> loop executes at least once: | ||
+ | <syntaxhighlight lang=pascal> | ||
+ | repeat | ||
+ | WriteLn(Node.Text); | ||
+ | Node := GetNextNode; | ||
+ | until not Assigned(Node); | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | It assumes that Node is not Nil at the outset. If this assumption is incorrect, the code will fail, and the program may crash. | ||
+ | |||
+ | A <tt>while</tt> loop is more defensive, since the needed check is performed before any loop statements are executed: | ||
+ | <syntaxhighlight lang=pascal> | ||
+ | while Assigned(Node) do | ||
+ | begin | ||
+ | WriteLn(Node.Text); | ||
+ | Node := GetNextNode; | ||
+ | end; | ||
+ | </syntaxhighlight> | ||
− | + | Use a <tt>repeat</tt> loop when the looping statement(s) must execute at least once, whatever the initial value of the controlling Boolean condition. | |
{{TYNavigator|WHILE..DO|FOR..IN}} | {{TYNavigator|WHILE..DO|FOR..IN}} |
Revision as of 22:49, 20 November 2020
│
български (bg) │
English (en) │
français (fr) │
日本語 (ja) │
中文(中国大陆) (zh_CN) │
REPEAT...UNTIL
The repeat .. until construct is termed a post-test loop, because the controlling condition is tested after each iteration of the loop.
It has the following syntax:
repeat
statement1;
// statement2;
// further statements...
until BooleanExpression;
A repeat loop encloses its executed statements, which means they do not need to be further enclosed in a begin ... end block. Note that a repeat loop continues until its controlling Boolean expression is True; whereas the while loop continues until its Boolean expression is False.
For instance, the following repeat loop executes at least once:
repeat
WriteLn(Node.Text);
Node := GetNextNode;
until not Assigned(Node);
It assumes that Node is not Nil at the outset. If this assumption is incorrect, the code will fail, and the program may crash.
A while loop is more defensive, since the needed check is performed before any loop statements are executed:
while Assigned(Node) do
begin
WriteLn(Node.Text);
Node := GetNextNode;
end;
Use a repeat loop when the looping statement(s) must execute at least once, whatever the initial value of the controlling Boolean condition.