Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Tema_5_Osnovy_programmirovania_dopolnitelnyy.doc
Скачиваний:
0
Добавлен:
19.09.2019
Размер:
652.8 Кб
Скачать

1.Операторы организации циклов

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

Имеется три основных вида циклов: цикл WHILE, цикл REPEAT и цикл FOR.

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

Оператор цикла WHILE используется для проверки некоторого условия в начале цикла.

Формат:

While выражение do оператор;

где: выражение – это булевское выражение;

оператор – одиночный или составной оператор.

ВГруппа 354 цикле WHILE вычисляется выражение. Если оно имеет значение ТRUE, то оператор выполняется, и выражение вычисляется заново. Если выражение имеет значение FALSE, то цикл WHILE завершается, и выполнение программы продолжается.

Пример.

Определить сумму 10 чисел натурального ряда, начиная с 5.

PROGRAM CWhile;

VAR

K,S,Count : integer;

BEGIN

S:=0; Count := 1;

K:=5;

WHILE Count<=10 DO

BEGIN

S:=S+K;

K:=K+1;`

Count:=Count+1;

Writeln('K=',K:2,'_S=',S:3');

END;

Writeln('Сумма=',s)

END.

Первое, что произойдет при запуске этой программы, – это присваивание Count значения 1.

Затем следует цикл While. Сначала проверяется, не является ли значение Count меньшим или равным 10. Если да, то выполняется тело цикла (Begin..End), затем значение Count увеличивается на 1. Count проверяется заново, и тело цикла выполняется еще раз. Это продолжается до тех пор, пока значение Count при проверке меньше или равно 10.

Как только Count принимает значение 11, цикл завершается, и на экран выводится значение суммы.

Оператор цикла с постусловием repeat…until

Обобщенный формат имеет вид:

REPEAT

оператор;

оператор;

...

оператор

UNTIL выражение;

Заключенное между REPEATи UNTIL повторно выполняется до тех пор, пока выражение после UNTIL не примет значение ТRUE.

Имеются следующие основные различия между циклом WHILE и циклом REPEAT … UNTIL:

  • операторы в цикле REPEAT всегда выполняются хотя бы один раз, поскольку проверка выражения осуществляется не сразу после ключевого слова REPEAT; в цикле WHILE, если выражение изначально имеет значение FALSE, то пропускается все тело цикла;

  • цикл REPEAT выполняется до тех пор, пока выражение не примет значение ТRUE; в отличие от него цикл WHILE выполняется, пока выражение имеет значение ТRUE.

Это означает, что следует внимательно заменять один тип цикла на другой.

Пример.

PROGRAM CRepeat;

VAR

A,B: integer; Rez: real; Otvet : char;

BEGIN

REPEAT

Write('Введите два числа: '); Readln(A,B);

IF b=0 THEN writeln(' B=0 ')

ELSE BEGIN

Rez := A / B;

Writeln('Отношение равно ',Rez)

END;

Write('Повторить (Y/N) ');

Readln(Otvet)

UNTIL (Otvet = 'n') or (Otvet = 'N')

END.

Эта программа расчета частного от деления A на B повторно выполняется до тех пор, пока не будет получен ответ n или N на вопрос «Повторить?».

Пример.

PROGRAM CRep;

VAR

k,s,Count : integer;

BEGIN

K:=5; S:=0; Count:=1;

REPEAT

S:=S+K;

K:=K+1;

Count:=Count+1;

Writeln('K=',k:2,' S=',S:3')

UNTIL Count>10;

Writeln('Count=',Count,'сумма=',s)

END.

Следует отметить, что теперь проверяется, не является ли значение Count большим 10, в то время как в цикле WHILE проверялось, не является ли значение Count меньшим или равным 10.

Цикл REPEAT может содержать несколько операторов, не образующих составной оператор. Следует заметить, что в последней программе не используется BEGIN..END, в то время как в варианте с циклом WHILE это имело место.

Цикл REPEAT всегда выполняется, по крайней мере, один раз. Цикл WHILE может и не быть выполненным в зависимости от выражения.

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