Вечные циклы
Если в теле цикла выполняются действия, которые не могут привести к изменению значения условия, то получаем вечный цикл. Что во многих случаях приводит к зацикливанию приложения или зависанию компьютера.
Пример использования:
…
t:=true;
while t do
begin
x:=100;
if x<10 then t:=false;
end;
Инструкция repeat, как и инструкция while, используется в программе если надо провести некоторые повторяющиеся вычисления (цикл), однако число повторов во время разработки программы неизвестно и может быть определено только во время работы программы, т. е. определяется ходом вычисления. В общем виде инструкция repeat записывается так:
Repeat
{инструкции}
until условие;
где условие – выражение логического типа, определяющее условие завершения цикла.
Инструкция repeat выполняется следующим образом: сначала выполняются инструкции, следующие за словом repeat. Затем проверяется условие (вычисляется значение выражения условие). Если условие ложно (значение выражения условие равно FALSE), то инструкции цикла (инструкции, находящиеся между repeat и until) выполняются еще раз. Если условие истинно (значение выражения условие равно TRUE), то выполнение цикла прекращается. Таким образом, инструкции, находящиеся между repeat и until выполняются до тех пор, пока условие ложно (значение выражения условие равно FALSE).
|
|
Пример использования:
…
x:=0;
repeat
x:=x+1;
until x=10;
Алгоритм, соответствующий инструкции repeat, представлен на Рисунок 18 - Блок-схема, соответствующая инструкции repeat.
Рисунок 18 - Блок-схема, соответствующая инструкции repeat
Обратите внимание.
Инструкции цикла, находящиеся между repeat и until, всегда будут выполнены хотя бы один раз.
Для того чтобы цикл завершился, необходимо, чтобы инструкции цикла, находящиеся между repeat и until, изменяли значения переменных, входящих в выражение условие
Процедура INC увеличивает порядок на 1 или N и соответствует утверждению X:=X+1 или X: = X + N.
procedure Inc(var X [; N: Longint ]),
где X - переменная порядкового типа, N - выражение типа целого числа.
Процедура DEC уменьшает на 1 или N от переменной и соответствует утверждению X: = X - 1, или X: = X - N.
procedure Dec(var X[; N: Longint]),
где X - переменная порядкового типа, N - выражение типа целого числа.