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

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

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; просмотров: 1080;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.