Зацикливание

Зацикливание

В прошлой статье мы кратко коснулись случая, когда цикл повторялся бесконечно т.е происходило зацикливание. Теперь подробнее о зацикливании в каждом цикле.

Итак зацикливание в программировании — это ситуация, когда цикл написан таким образом, что условия выхода из него не выполняется. Рассмотрим зацикливание в операторах цикла for,while и repeat. Справедливости ради все варианты будут рассмотрены в Turbo Pascal и PascalABC. Также будет добавлен оператор write для вывода результатов.

Зацикливание в for

Вообще идея зацикливания проста: необходимо всего-то в каждом шаге цикла уменьшать оператор шага на 1 (i:=i-1;). Однако именно такая реализация возможна не везде. Рассмотрим простой пример.

for i:=1 to 5 do begin
i:=i-1;
write(i);
end.

Казалось бы все просто,да не тут то было.В то время как в Turbo Pascal все проходит на ура,в PascalABC такое не возможно и для зацикливания необходимо использовать оператор goto.

label m;
var i:integer;
begin
m:
for i:=1 to 5 do begin
write(i);
if i=2 then goto m;
end;
end.

Зацикливание в while

Напомню, что в операторе while шаг цикла необходимо добавлять самостоятельно. Поэтому произвести зацикливание проще всего: нужно только убрать шаг цикла

var i:integer;
begin
i:=0;
while i<>1 do
write(i);
end.

Оба компилятора адекватно реагируют на пропуск шага.

Зацикливание в repeat

Для создание бесконечного цикла в этом случае, как и предыдущем, достаточно не указывать шаг цикла

var i:integer;
begin
i:=0;
repeat
write(i);
until i=1;
end.

В данной статье приведены различные варианты для создание бесконечного цикла. Однако запомните, что зацикливание создает нагрузку и вообще редко используется. Гораздо чаще применяют неполное зацикливание при котором выход из цикла все же совершается.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *