Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Yazyk_Turbo-Paskal.doc
Скачиваний:
17
Добавлен:
15.04.2015
Размер:
754.69 Кб
Скачать

Операторы итеративных циклов

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

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

Организация итеративного цикла может быть выполнена одним из трех способов:

- используя операторы условного (и безусловного) перехода;

- используя оператор итеративного цикла с предусловием;

- используя оператор итеративного цикла с постусловием.

Организация цикла с помощью условного перехода

Цикл можно реализовать либо с помощью условного и безусловного переходов, либо с помощью только условного перехода.

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

В программе при такой организации цикла требуется иметь две метки:

Start:

. . .

if A=Priznak then goto Finish;

. . .

goto Start;

Finish: . . .

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

Start:

. . .

if A<>Priznak then goto Start;

. . .

Тело итеративного цикла при таких способах построения в скобки begin ... end заключать не требуется.

Оператор итеративного цикла с предусловием

Вид оператора:

While <логическое выражение> do

<простой или составной оператор тела цикла>;

Логическое выражение – это условие продолжения цикла (выполнения тела цикла). Само тело цикла это один оператор или группа операторов (в операторных скобках begin .. end). Если в момент входа в заголовок цикла логическое выражение ложно, цикл не выполнится ни разу. На это следует обращать внимание при программировании с завершением цикла по вводу признака конца. Если ввод данных выполняется целиком в цикле, перед его началом значение вводимой в дальнейшем величины следует сделать искусственно неравным признаку конца. Например:

. . .

WriteLn(' Какое число будет обозначать слово «Конец» ?');

ReadLn(Pr);

A:=Pr+1;

While A<>Pr do

begin

WriteLn(' Введите очередное число ');

ReadLn(A);

if A<>Pr then

. . .

end;

. . .

Этому оператору в блок-схеме соответствует структура, изображенная на рисунке

Рисунок 10. Структура оператора цикла “While”

Оператор итеративного цикла с постусловием

Вид оператора:

Repeat

< операторы тела цикла>;

until <логическое выражение>;

Логическое выражение – это условие окончания цикла.

Тело цикла выполнится не менее одного раза, предварительные фиктивные значения для данных не требуются. Отметим, что тело цикла и при наличии нескольких операторов, в скобки begin .. end заключать не надо, так как Repeat и until сами выполняют роль скобок.

Как и в случаях с циклами For и While, в теле цикла можно использовать операторы continue и break, например, для работы с числами, пропуская отрицательные, можно использовать такой фрагмент программы:

. . .

WriteLn(' Какое число будет обозначать слово «Конец» ?');

ReadLn(Pr);

Repeat

WriteLn(' Введите очередное число ');

ReadLn(A);

if (A<>Pr) and (A<0) then

continue; { возврат на начало тела цикла }

. . .

until A = Pr;

. . .

Этому оператору в блок-схеме соответствует структура, изображенная на рисунке

Рисунок 11. Структура оператора цикла “ Repeat ”

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]