Difference between revisions of "Infinite loop"

From Free Pascal wiki
Jump to navigationJump to search
 
Line 58: Line 58:
 
* [[While|<syntaxhighlight lang="pascal" inline>while</syntaxhighlight>]] [[Do|<syntaxhighlight lang="pascal" inline>do</syntaxhighlight>]]
 
* [[While|<syntaxhighlight lang="pascal" inline>while</syntaxhighlight>]] [[Do|<syntaxhighlight lang="pascal" inline>do</syntaxhighlight>]]
 
* [[Break|<syntaxhighlight lang="pascal" inline>break</syntaxhighlight>]]
 
* [[Break|<syntaxhighlight lang="pascal" inline>break</syntaxhighlight>]]
 +
* [[Continue|<syntaxhighlight lang="pascal" inline>continue</syntaxhighlight>]]

Latest revision as of 09:49, 4 January 2023

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

An infinite loop (also known as an endless loop or unproductive loop or a continuous loop) is a loop which never ends. Inside a loop, statements are repeated forever.

There are two implementations of an infinite loop:

while true do
begin
	// loop body repeated forever
end;
repeat
begin
	// loop body repeated forever
end
until false;

Break statement

While true do” or “repeat until false” loops look infinite at first glance, but there is a way to escape the loop through the break statement.

var
  i:integer;
begin
  i := 0;
  while true do
    begin
      i := i + 1;
      if i = 100 then break;
    end;
end;
var
  i:integer;
begin
  i := 0;
  repeat
    i := i + 1;
    if i = 100 then break;
  until false;
end;

Optimization

If you really need an infinite loop, it is better to use repeat  until false;, since it shifts all instructions of the body “less” to the right (at least, if there is more than one statement in the loop).

See also