Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 70040.doc
Скачиваний:
5
Добавлен:
01.05.2022
Размер:
253.95 Кб
Скачать

1.2.1. Оператор цикла с предусловием while ... Do

Этот оператор организует так называемый цикл «ПОКА», или цикл с предусловием, так как проверка проводится перед началом очередной итера­ции (неизвестно количество повторений цикла):

WHILE < Условие > DO

< тело цикла >;

Оператор while позволяет многократно выполнять одни и те же действия в зависи­мости от некоторого < Условия >, которое записывается между ключевыми словами while и do и должно быть выражением бу­левского типа, т. е. принимать только зна­чения True или False.

Цикл выполняется, пока <Условие> истинно. Как только <Условие> наруша­ется, выполнение цикла завершается.

Если тело цикла состоит из одного оператора, то операторные скобки Begin - End можно не ставить:

while < Условие > do

Оператор;

Если тело цикла состоит из нескольких операторов, то опера­торные скобки Begin - End необходимо ставить:

while < Условие > do

begin

Оператор;

……..

Оператор;

end;

Опишем работу цикла while более подробно. Сначала, при входе в цикл, вычисляется < Условие >:

Если <Условие> равно False, то вход в цикл не выполняется, управление передается оператору, следующему непосредственно за операторами тела цикла. Так что при определенной ситуации цикл может ни разу не выполниться.

Если же <Условие> равно True, то происходит вход в цикл и одно­кратное выполнение операторов его тела. Как только достигнем конца тела цикла, управление снова передается на его заголовок, где снова вычисляется < Условие >. Если значение < Условия > все еще равно True (что зависит от изменения значений переменных во время предыдущего выполнения операторов цикла), то тело цикла выполняется еще один раз, и так далее. Как только оче­редное вычисление <Условия> цикла достигнет значения False, работа цик­ла завершается.

Например, рассмотрим программу с использованием оператора цикла с предуслови­ем, когда в качестве логического < Условия > стоит выражение 2*А < = 3*N +1.

Program 111;

Var N, A: integer;

Begin

A: = l;

N: = 2;

While 2*A< = 3*N+l Do

Begin

A: = A + 2;

N: = N+1;

End;

WriteLn ('A = ', A =, 'B = ',B =);

End.

Переменные А и N, а также логическое выражение 2*A<= 3*N+1b про­цессе выполнения программы принимают значения, представленные в таблице 1.

Таблица 1

Идентификаторы и выражение

Проходы цикла

Первый

Второй

Третий

Четвертый

А

1

3

5

7

N

1

2

3

4

2*A<=3*N+1

2< = 4

6< = 7

10<=10

14<=13

Условие True или False

True Истинно

True Истинно

True Истинно

False Ложно

Всего цикл проработает четыре раза. При А = 7 и N = 4 логическое выражение 2*A< = 3*N+1 становится ложным (False) и управление передается за пределы цикла.