Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы программирования на языке Pascal.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
1.91 Mб
Скачать

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

Оператор цикла с предусловием имеет следующий вид:

WHILE В DO S

где WHILE (пока), DO (выполнить) - служебные слова;

В - условие (логическое выражение)

S - тело цикла, содержащие один или несколько операторов.

Работа оператора цикла WHILE заключается в следующем – пока условие истинно, то выполняются операторы, входящие в тело цикла. Как только условие станет ложным, выполнение операторов цикла прекращается. Если условие ложно с самого начала, то оператор цикла не выполняются ни разу. Условие вычисляется и анализируется перед каждым выполнением цикла, отсюда и термин “предусловие”. Значения переменных, входящих в условие, должны изменяться в теле цикла, иначе, цикл никогда не завершится.

Оператор цикла WHILE позволяет организовать цикл с неизвестным числом повторений, т.к. оно зависит от вычислений в операторе.

Пример: Составить программу для определения K, при котором функция Xk/K становится меньше A , где K =1,2,3…

Программа задачи имеет вид:

PROGRAM ITER;

VAR

X, A, P: REAL;

K: INTEGER;

BEGIN

READ (X, A);

K: =1;

P: =X;

WHILE P/K<A DO

BEGIN

K: =K+1;

P: =P*X;

END;

WRITE (‘K= ‘, K);

END.

Пример: Составить программу для вычисления суммы членов бесконечного ряда с точностью до члена ряда, меньшего е: Z=1+X+X2/2!+X3/3!+…+Xn/n!…

Так как в данном случае при суммировании заранее не известно число членов ряда, то воспользоваться оператором цикла FOR невозможно. Задача вычисления суммы членов бесконечного ряда требует организации итерационного цикла, окончание которого определяется условием у<е,

где у – значение члена ряда.

Начальное значение суммы необязательно равно нулю, если значение первого члена ряда вычислять нет необходимости.

Программа имеет следующий вид:

PROGRAM RYD;

VAR

X, EPS, Y, Z: REAL;

N: INTEGER;

BEGIN

READ (X, EPS);

N: =0;

Y: =1;

Z: =1

WHILE Y>=EPS DO

BEGIN

N: =N+1;

Y: =Y*X/N;

Z: =Z+Y;

END;

WRITE (‘Z= ‘, Z);

END.

1.4. Оператор цикла с постусловием.

Оператор цикла с постусловием имеет следующий вид:

REPEAT

S1;

S2;

. . .

UNTIL B

Где REPEAT (повторять), UNTIL (до тех пор, пока) – служебные слова;

S1, S2 . . . любые операторы языка, входящие в тело цикла;

B – условие (логическое выражение).

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

При составлении условны циклов (с предусловием или постусловием – циклы типа ПОКА) необходимо принимать во внимание следующие моменты:

  1. перед каждым выполнением цикла условие его окончания (или продолжения) должно быть определено (иметь конкретное значение);

  2. тело цикла должно содержать хотя бы один оператор, влияющий на условие окончания (продолжения), иначе цикл будет продолжаться бесконечно;

  3. условие окончания цикла должно быть в конце концов удовлетворено;

  4. условие вычисляется при каждом выполнении цикла и поэтому должно быть насколько можно простым.

Пример: Составить блок – схему и программу решения задачи, приведённой в последнем примере пункта 1.3, использовав оператор цикла с постусловием REPEAT .

Программа имеет вид:

PROGRAM RYD;

VAR

X, EPS, Y, Z: REAL;

N: INTEGER;

BEGIN

READ (X, EPS);

N: =0;

Y: =1;

Z: =1

REPEAT

N: =N+1;

Y: =Y*X/N;

Z: = Z+Y;

UNTIL Y<EPS;

WRITELN (‘Z=’, Z);

END.