# Infinite loop

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