Оператор цикла с предусловием.
Оператор цикла с предусловием имеет следующий вид:
WHILE В DO S
где WHILE (пока), DO (выполнить) - служебные слова;
В - условие (логическое выражение)
S - тело цикла, содержащие один или несколько операторов.
Работа оператора цикла WHILE заключается в следующем.
Если условие истинно, то выполняются операторы, входящие в тело цикла. Как только условие станет ложным, выполнение операторов цикла прекращается. Если условие ложно с самого начала, то оператор цикла не выполняются ни разу. Условие вычисляется и анализируется перед каждым выполнением цикла, отсюда и термин “предусловие”. Значения переменных, входящих в условие, должны изменяться в теле цикла, иначе, цикл никогда не завершится.
Оператор цикла WHILE позволяет организовать цикл с неизвестным числом повторений, т.к. оно зависит от вычислений в операторе.
Пример: Составить программу для определения K, при котором функция Xk/K становится меньше A , где K =1,2,3…
Блок-схема алгоритма для данного примера приведена на рис.4.
Программа задачи имеет вид:
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.
В блоке 2 осуществляется ввод произвольного значения X и A. В блоке 3 переменная К получает начальное значение равное 1. В блоке 4 задается начальное значение равное P=X. В блоке 5 происходит сравнение значения P/K с переменной A, т. е. проверка условия. Если условие истинно, то управление передается в тело цикла к блокам 6 и 7, где происходит вычисления очередных значений переменных К и P, входящих в условие. После этого управление передается блоку 5, как только условие станет ложным, т. е. P/K>=A, выполнение операторов цикла прекращается и управление передается блоку 8, где происходит вывод на экран значения переменной К. После этого выполняется блок 9.
Пример: Составить программу для вычисления суммы
членов бесконечного ряда с точностью до
члена ряда , меньшего е:
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.
Задается начальное значение произведения y=1, начальное значение суммы, равное первому члену ряда z=1. Далее происходит проверка условия. Если условие истинно, то управление передаётся в тело цикла, где происходит вычисление очередных значений переменной n, члена ряда y и суммы z . После этого управление переходит к проверке условия. Как только условие станет ложным, управление будет передано оператору вывода значения суммы ряда z на экран.
Дата добавления: 2015-04-05; просмотров: 1066;