Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика_лекции.doc
Скачиваний:
45
Добавлен:
25.11.2018
Размер:
5.13 Mб
Скачать

13.2. Оператор While. Вечные циклы

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

Типичными примерами использования цикла while являются вычисления с заданной точностью, поиск в массиве или в файле. В общем виде инструкция while записывается так:

while условие do

тело цикла; где условие - выражение логического типа, определяющее условие выпол­нения цикла.

Примечание.

Если между begin и end находится только одна инструкция, то begin и end можно не писать.

Инструкция while выполняется следующим образом: сначала проверяется ус­ловие (вычисляется значение выражения условие). Если условие не выполня­ется (значение выражения условие равно false), то инструкции цикла, рас­положенные между begin и end, не выполняются, и на этом выполнение ин­струкции while завершается. Если условие выполняется (значение выражения условие равно true), то выполняются следующие за do, расположенные меж­ду begin и end, инструкции цикла, и после этого снова проверяется выполне­ние условия. Если условие выполняется, то инструкции цикла выполняются еще раз. И так до тех пор, пока условие не станет ложным. Таким образом, инструкции цикла выполняются до тех пор, пока условие истинно (значение выражения условие равно true).

Пример использования:

x:=10;

while not x=0 do

x:=x-1;

Алгоритм, соответствующий инструкции while, представлен на рис. 13.1.

Рисунок 13.1 - Блок – схема, соответствующая инструкции while

Обратите внимание

Для того чтобы инструкции цикла while были выполнены хотя бы один раз, необходимо, чтобы перед выполнением инструкции while условие выполнения цикла было истинно.

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

13.3. Вечные циклы

Если в теле цикла выполняются действия, которые не могут привести к изменению значения условия, то получаем вечный цикл. Что во многих случаях приводит к зацикливанию приложения или зависанию компьютера.

Пример использования:

t:=true;

while t do

begin

x:=100;

if x<10 then t:=false;

end;

13.4. Оператор repeat. Процедуры inc и dec

Инструкция repeat, как и инструкция while, используется в программе если надо провести некоторые повторяющиеся вычисления (цикл), однако число повторов во время разработки программы неизвестно и может быть определено только во время работы программы, т. е. определяется ходом вычисления. В общем виде инструкция repeat записывается так:

Repeat

{инструкции}

until условие;

где условие – выражение логического типа, определяющее условие завершения цикла.

Инструкция repeat выполняется следующим образом: сначала выполняются инструкции, следующие за словом repeat. Затем проверяется условие (вычисляется значение выражения условие). Если условие ложно (значение выражения условие равно FALSE), то инструкции цикла (инструкции, находящиеся между repeat и until) выполняются еще раз. Если условие истинно (значение выражения условие равно TRUE), то выполнение цикла прекращается. Таким образом, инструкции, находящиеся между repeat и until выполняются до тех пор, пока условие ложно (значение выражения условие равно FALSE).

Пример использования:

x:=0;

repeat

x:=x+1;

until x=10;

Алгоритм, соответствующий инструкции repeat, представлен на рис.13.2.

Рисунок 13.2 - Блок-схема, соответствующая инструкции 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 - выражение типа целого числа.