- •1. Краткие теоретические сведения
- •1.1. Понятие ицвп
- •1.2. Алгоритмы вычисления сумм и произведений в цикле
- •А) суммы; б) произведения
- •1.3. Выбор типа общего члена суммы (произведения) при вычислении сумм и произведений в цикле
- •1.4. Вывод рекуррентных формул
- •А) вариант 1; б) вариант 2
- •1.4. Оператор цикла со спецификацией итерационного типа (типа условия)
- •А) выполнения оператора while ; б) функции примера 8.6
- •1.5. Уточнение корней уравнений
- •1.6. Использование оператора цикла do … while в ицвп
- •1.7. Использование операторов break и continue в ицвп
- •2. Задание
- •2.4.1.2. Пример
- •2.4.1.3. Программа
- •2.4.2.4. Тестирование
- •2.4.3. Задание 3. Использование рекуррентных формул в цикле
- •2.4.3.1. Условие задания
- •Варианты заданий
- •Варианты заданий
- •2.4.3.2. Пример
- •2.4.3.3. Программа
- •Варианты заданий
- •2.4.4.2. Пример
- •2.4.4.3. Программа
- •2.5.1.2. Пример программы
- •2.5.1.3. Программа
- •2.5.1.4. Тестирование
- •2.5.1.5. Типичные ошибки при выполнении работы
- •2.5.2. Задание 2. Накопление произведений в цикле
- •2.5.2.2. Пример 8.4
- •2.5.2.3. Программа
- •2.5.3.2. Пример для варианта 30
- •2.5.3.3. Программа
- •2.5.3.4. Тестирование
- •2.5.4. Задание 4. Вычисление значения функции с помощью разложения в ряд
- •2.5.4.1. Условие задания
- •Варианты заданий
- •2.5.4.2. Пример для варианта 30
- •2.5.4.3. Программа
- •2.5.4.4. Тестирование
- •3. Выводы
- •4. Требование к отчету
- •4. Краткие теоретические сведения.
- •Вопросы для самоконтроля
- •Литература
- •1. Краткие теоретические сведения 2
- •1.1. Понятие ицвп 2
1.4. Оператор цикла со спецификацией итерационного типа (типа условия)
В С++ для организации ИЦВП предусмотрены специальный оператор цикла while со спецификацией итерационного типа (типа условия). Указанный оператор получил название оператора цикла с предусловием и был рассмотрен в предыдущей работе. В предыдущей работе оператор while (условие) использовался для организации циклов типа арифметической прогрессии, в данной работе рассмотрим работу данного оператора с позиций использования для организации ИЦВП.
Конструкция оператора этого типа имеет вид:
while (условие Е)
{
операторы тела цикла;
}
Условие Е – скалярное или логическое выражение.
Оператор while выполняется таким образом: вычисляется значение выражения Е и если значение Е истинно, выполняются операторы, составляющие тело цикла, после чего снова вычисляется значение выражения Е после слова while; если же значение Е ложно, осуществляется переход к оператору, стоящему за оператором цикла while. Таким образом, операторы тела цикла выполняются до тех пор, пока значение выражения Е истинно.
Если значение выражения Е с самого начала оказывается равным ложным, операторы в теле цикла совсем не выполняются.
При использовании оператора while программисту необходимо позаботиться, чтобы значение хотя бы одного из операндов, входящих в выражение Е, изменялось операторами {группы} (тела цикла), иначе повторение выполнения операторов группы может быть бесконечным.
Рассматриваемая форма оператора while удобна для программирования широкого класса итерационных вычислительных процессов и задач, в которых повторение заданной группы операторов зависит от истинности некоторого логического условия.
Пусть, например, значение переменной х равно 10, а значение у равно 4. Тогда при выполнении оператора
while (x > y) { x = x - 1; у = у + 1;}
тело цикла – операторы x = x - 1; у = у + 1; выполняется трижды, и в момент выхода из цикла x и у обе будут иметь значение 7.
Действия рассматриваемого оператора цикла наиболее легко описываются с помощью дополнительных операторов языка следующим образом:
START: if (!E) goto FINISH;
S1;
S2;
….
Sn;
goto START;
FINISH: S;
Здесь S – является преемником оператора цикла. Схема выполнения оператора цикла с предусловием while представлена на рис. 8.6,а.
Применение рассмотренной формы оператора while для реализации ИЦВП рассмотрим на конкретных примерах.
Пример 8.9
Вычислить значение кубического корня из числа методом Ньютона по рекуррентной формуле
где Yk, Yk-1 – последовательность итераций, k = 1, 2, 3 .... Точность вычислений определяется неравенством
|Yk – Yk-1| ≤ ,
при его выполнении вычисления должны прекратиться.
Расчет произвести для х = 21 и = 110-3. Блок-схема алгоритма вычисления кубического корня приведена на рис. 8.6,б. Фрагмент программы, реализующей указанные вычисления с использованием оператора цикла while может иметь вид:
y0=0;
y = 2;
x = 21;
eps = 1e-03;
while (fabs(y – y0) > eps)
{
y0 = y;
y = (2*y0 + x/(y0*y0))\3.0;
}
cout <<"Значение кубического корня = "; << y;
В приведенном фрагменте программы y0 соответствует переменной Yk-1, y соответствует переменкой Yk , eps – .
|
|
а) |
б) |
Рис. 8.6. Блок-схемы алгоритмов: