Лекции по проге / 4_Управл операторы - циклы (2)
.pdf
Оператор цикла с параметром for
Условие применения: переменная цикла меняется в заданном интервале или цикл выполняется известное кол-во раз
for( <опер. инициал.>; <условие>; <опер. мод.> ) <оператор>
11
Оператор цикла с параметром for
Сначала выполняется <оператор инициализации> и
проверяется <условие>. Если <условие> истинно, то выполняется <оператор>
Затем выполняется <оператор модификации> и снова проверяется <условие>. Если <условие> истинно, то выполняется <оператор> и т.д.
Цикл завершается, когда <условие> становится ложным
12
Оператор цикла с параметром for
<Оператор> – это тело цикла (повторяющееся действие + действие для выхода из цикла)
<Условие> - условие продолжения цикла, проверяется до выполнения тела цикла
Цикл for как и цикл while может не выполниться ни разу
Оператор for рекомендуется использовать только тогда, когда все три его компоненты определены и
переменная цикла не изменяется в теле цикла
13
Частные случаи оператора цикла с параметром for
Цикл для Цикл n раз
|
for( i = a; i <= b; i += c ) |
for( i = 1; i <= n; i ++ ) |
14 |
<оператор> |
<оператор> |
Задание
Число π может быть вычислено с помощью ряда
π = 4*(1 — 1/3 + 1/5 +...+ (-1)i-1/(2i-1))
Вычислить приближенное число π, используя k слагаемых ряда
15
Использование оператора цикла с параметром for
double S; /*сумма ряда (то, что в скобках)*/
double Pi; // расчетное значение Пи int i;// порядковый номер слагаемого
//Вычислить сумму S = 0;
for(i = 1; i <= k; i++)
{
S += pow(-1, i-1) / (2*i - 1);
}
//Вычислить Pi
Pi = 4 * S;
16
Критерии выбора оператора цикла
|
|
|
|
Оператор цикла |
Критерии |
|
Оператор |
Кол-во повторений заранее не известно. |
|
Условие проверяется раньше действия (опе- |
|
|
while |
ратора). Действие может не выполниться ни |
|
|
разу |
|
Оператор |
Кол-во повторений заранее не известно. |
|
Прежде чем проверить условие необходимо |
|
|
do...while |
выполнить действие (оператор). Действие |
|
|
обязательно выполнится один раз |
|
|
Кол-во повторений известно заранее или |
|
Оператор for |
известен диапазон и шаг изменения пере- |
|
менной цикла. Действие (оператор) может |
|
17 |
|
|
|
не выполниться ни разу |
Задание
Число π может быть вычислено с помощью ряда
π = 4*(1 — 1/3 + 1/5 +...+ (-1)i-1/(2i-1))
Определить, сколько слагаемых необходимо взять, чтобы достичь заданной точности вычислений - Eps.
В качестве эталонного значения использовать функцию pi(). Результат поместить в переменную n.
18
Выбор оператора цикла
Количество слагаемых ряда не известно, следовательно не известно количество итераций цикла, следовательно for не подходит
Повторяющимся действияем является рассчет слагаемого ряда и добавление его к текущей сумме ряда. Первичное (приближенное) значение числа π становится известным по окончанию первой итерации, поэтому проверка на точность должна выполняться после повторяющегося действия,
19 следовательно используем оператор do...while
Выбор оператора цикла
double S; |
/* сумма ряда (то, что в |
скобках) */ |
|
int n; |
// кол-во слагаемых ряда |
// Вычислить кол-во слагаемых S = 0; n = 0;
do
{
n++;
S += pow(-1, n-1) / (2*n – 1);
}
while( abs(4*S – pi()) > Eps );
20
