Организация циклических вычислений

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

Виды задач, программируемых с помощью циклических конструкций:

· табулирование функции (построение таблиц значений функции при различных значениях аргумента);

· вычисление суммы ряда;

· нахождение предела последовательности;

· отделение и уточнение корней уравнения;

· вычисление значения интеграла и некоторые другие задачи.

Различают циклы с известным и неизвестным числом повторений.

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

Циклы с неизвестным числом повторений (итерационные циклы)

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

Цикл с предусловием while..do

Цикл с предусловием реализуется на языке Pascal с помощью оператора while..do. Количество повторений такого цикла заранее не определено и зависит от входных данных задачи. В данной циклической конструкции перед выполнением следующего повторения цикла проверяется значение логического выражения.

Формат оператора while..do:

while<условие>do<тело_цикла>;

где while,do– служебные слова (пока, выполнять);

<условие> – выражение логического типа (например, b <= 5);

<тело_цикла> – тело цикла, состоящее из оператора языка Pascal, который может быть простым, составным или структурированным.

Принцип действия оператораwhile..do.

1 Вычисляется значение логического выражения (проверяется условие).

2 Если результатом вычисления значения логического выражения (результатом проверки условия) является значение true (истина), то выполняется оператор, составляющий тело цикла и стоящий после служебного слова do. После этого происходит возврат к п. 1.

3 Если результатом вычисления значения логического выражения является значение false (ложь), то оператор while..do заканчивает свою работу и управление передается следующему в коде программы оператору.

Согласно описанному алгоритму повторение п. 1 и 2 продолжается до тех пор, пока результатом вычисления значения логического выражения (результатом проверки условия) не станет значение false (ложь). Заметим, что если значением логического выражения сразу является false, то тело цикла оператора while..do не выполняется ни разу.

Примечание − Тело цикла обязательно должно содержать оператор, действие которого влияет на значение логического выражения (изменяет значения входящих в него операндов). Иначе неизбежна ситуация «зацикливания», проявляющаяся как бесконечное повторение выполнения тела цикла.

Пример 5.Составить, используя оператор цикла с предусловием, программу для вычисления и вывода на экран значений функции

Организация циклических вычислений - student2.ru (5)

при значениях переменной х, изменяющихся в диапазоне от –3 до 6 с шагом 0,3.

Решение.

Program prim_w;

Var x, y: real;

Begin

x:=-3; {левая граница диапазона изменения переменной}

while x<=6 do {условием выхода из цикла ставится

достижение переменной x правой границы диапазона}

Begin

y:=cos(exp(x*ln(5))/abs(x+2));

writeln('x=',x:5:2,' y=',y:7:3);

x:=x+0.3 {увеличение значения переменной x на величину шага}

end;

End.

Цикл с постусловием repeat..until

Цикл с постусловием, в котором сначала выполняется оператор или группа операторов, а затем проверяется условие, реализуется на языке Pascal с помощью структурированного оператораrepeat..until.

Формат оператора:

Repeat

<операторы>

until <условие>;

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

<операторы> – последовательность операторов (тело цикла). Использовать в качестве тела цикла операторные скобкиbeginиendнецелесообразно, т. к. роль скобок в данном случае играют зарезервированные словаrepeatиuntil;

<условие> – выражение логического типа.

Принцип действия оператораrepeat..until.

1 Выполняются операторы, расположенные между операторамиrepeat..until, составляющие тело цикла.

2 Вычисляется значение логического выражения – проверяется условие. Если результатом вычисления значения логического выражения является значение false (ложь), то операторы, составляющие тело цикла, выполняются вновь.

3 Если результатом вычисления значения логического выражения (результатом проверки условия) является значение true (истина), то операторrepeat..untilзаканчивает свою работу, и управление передается следующему в коде программы оператору.

Как следует из описанного алгоритма, повторение действий 1 и 2 продолжается до тех пор, пока результатом вычисления логического выражения не станет значение true (истина), т. е. пока не выполнится условие.

Примечания

1 Тело цикла repeat..untilобязательно должно содержать оператор, действие которого влияет на значение логического выражения (изменяет значения входящих в него операндов). Иначе неизбежна ситуация «зацикливания», при которой происходит бесконечное повторение выполнения тела цикла.

2 Тело цикла оператораrepeat..untilвыполняется хотя бы один раз независимо от начального значения логического выражения.

Пример 6.Составить, используя оператор цикла с постусловием, программу для вычисления и вывода на экран значений функции

Организация циклических вычислений - student2.ru (6)

при значениях х, изменяющихся в диапазоне от –3 до 6 с шагом 0,3.

Решение.

Programprim_r;

Varx, y: real;

Begin

x:=-3; {левая граница диапазона изменения переменной}

Repeat

y:=cos(exp(x*ln(5))/abs(x+2));

writeln('x=',x:5:2,' y=',y:7:3);

x:=x+0.3 {увеличение значения переменной x на шаг}

until x>6 {условием выхода из цикла является превышение

переменной x значения правой границы диапазона}

End.

Наши рекомендации