Академический Документы
Профессиональный Документы
Культура Документы
while (i<=N)
{
s +=i; // увеличение значения s на i
i +=2; //
}
//Вывод на экран s.
printf("s= %7ld ", s);
Рис.2. Алгоритм
вычисления суммы
четных науральных чисел
Оператор цикла с параметром for
Операторы цикла с условием обладают значительной гибкостью, но не слишком удобны
для организации «строгих» циклов, которые должны быть выполнены заданное число раз.
Оператор цикла с параметромfor используется именно в таких случаях:
for (выражение 1; выражение 2; выражение 3 ) оператор;
где оператор – любой оператор языка, выражение 1 - выражение задающее начальное
значение параметра цикла, выражение 2 - выражение задающее условие окончания цикла,
выражение 3 - выражение задающее закон изменения параметра цикла.
В случае если тело цикла состоит более чем из одного оператора, необходимо
использовать составной оператор:
for (i= in;i<ik ; i+=dx)
{
оператор_1;
оператор_2;
...........
оператор_n;
}
Переменную i называют параметром цикла. Переменные in и ik — диапазон изменения
параметра цикла: in — начальное значение, а ik — конечное значение параметра цикла.
Шаг изменения цикла for всегда постоянен и равен интервалу между двумя ближайшими
значениями типа параметра цикла.
Опишем (рис.3) алгоритм работы цикла for:
1. Параметру цикла i присваивается начальное значение in.
2. Если значение параметра цикла превосходит конечное значение (i>ik), то цикл
завершает свою работу. В противном случае выполняется пункт 3.
3. Выполняется оператортела цикла.
4. Значение параметра цикла i изменяется на соответствующий шаг dx и осуществляется
переход к п.2 и т. д.
Понятно, что этот алгоритм представляет собой цикл с предусловием.
Рисунок 3. Алгоритм работы цикла for
В дальнейшем, чтобы избежать создания слишком громоздких алгоритмов, в блок-схемах
цикл for будем изображать так, как показано на рис. 4.
Фрагмент программы, приведенный далее, демонстрирует применение цикла for:
Если шаг изменения параметра цикла равен единице, его в блок-схемах можно не
указывать.
//Вывод на экран чисел от 1 до 10.
for (int i=1; i<=10; i++) cout<<i<<"\n";
//Вывод на экран чисел от 10 до -10.
for (int i=10 ; i<=-10;i--)cout<<i<<"\n";
//Вывод на экран символов от a до r.
for (char c='a' ; c<= 'r';c++) cout<<c<<"\n";
Вернемся к задаче вывода значений функции y= e sin x cos xна отрезке [0;π] с шагом 0.1.
Как видим, здесь количество повторений цикла явно не задано. Однако это значение,
можно легко вычислить. Предположим, что параметр цикла х принимает значения в
диапазоне от xn до xk, изменяясь с шагом h, тогда количество повторений тела цикла
можно определить по формуле:
n= (xk-xn)/h
округлив результат деления до целого числа. Следовательно, фрагмент программы вывода
значений функции y= e sin x cos xна отрезке [0;π] с шагом 0.1 будет иметь вид:
int i,n;
float x, xk, xn, y;
//Количество повторений цикла:
xk=pi, xn=0, h=0.1;
n=(xk-xn)/h;
n=round(n)+1; // для использования функции округления round надо подключить
библиотеку stdlib.h
x=0; //Начальное значение аргумента.
//Цикл с известным числом повторений,
//i – параметр цикла, изменяется от 1 до n с шагом 1.
for (i=1; p<=n; i++ ) //Начало цикла.
{
//Вычисление значения функции
y=exp(sin(x))*cos(x); //для соответствующего значения аргумента.
cout<<"x= ">>x<<" y= "<<y<<"\n";
x+=h; //Вычисление нового значения аргумента.
}
Задачу из примера 2 можно решить иначе, используя цикл for. Блок-схема решения этой
задачи представлена на рис. 5.
Отрывок программы приведен ниже.
{ long int s=0;
начало int N;
printf("введите целое число N \n");
N scanf("%i",&N);
for (int i=2; i<=N; i +=2)
i=2,N,2 s +=i; // увеличение значения s на i
printf("s= %7ld ", s);//Вывод на экран s.
s=s+i }
Результат:
конец
1. y = ∏ ( j ∑ ( j +k ))
j= 1 k= 1
( )
3
2. ∏ ( j2+i2 )
y =∑ 1i +
3
j=1
i=1 i
3
∑ (k+ j)
3. y=∏
3
k =1
2
j=1 j
( )
3
i+ ∑ ( i + j )
4. 3
y =∏ j =1
i =1 i2
( )
3 3
5. y =∑ i⋅∏ ( i+3 j )
i =1 i =1
( )
3
i
y =∑ i−
6. i =1
3
∏ ( k +2)
k =1
( )
3 3
7. y =∏ 2+ a ∑ ( i +2 j )
j =1 i=1
( )
3
i
y =∏ 5+ 3
8. i =1
4 ∑ (i+ j)
j =1
№ Задание
варианта
( )
4
1+i
y =∑
9.
3
∏ ( i2 +2 j )
j=1
i =1
3
a
y =∏
10. j =1
3
∑ ( i2+ j2 )
i =1
( )
3
c
y =∑ i 2 +
11. i =1
3
∏ (i + ja )
j=1
( )
3
1+ m
y=∑
12. 3
∏ ( j +m )
m=1
j=1
3
1 i
y= ∑
13. a i=1
∏(
3
j+
i
)
j =1 b
3
1
y =∑ (i + )
14. i =1
3
∏ ( i+ j 2)
j =1
( )
3
a2 +i 2
y =∏
15. i =1
3
∑ ( j +i )
j =1
( )
3
a+ ∑ ( i + j )
16. 3
y =∏ j =1
i =1 a+b
( )
3
1
y =∑ +i 2
17.
3
i =1
∏ ( i2+ j )
j=1
( )
3 4
18. y= 1 ∏ 1 +c∑(i+ j)
a j=1 b i =1
( )
3
j +∏ ( i + j )
19. 1
4
y=
b
∑ i=1
j +5
j =1
1+с
y=
20.
( )
4 3
∏ j +2 ∑ ( k + j )
j=1 k =1
( )
3
j +1
y =∏
21. j =1
3
∑ ( i2+ j2 )
i =1
( )
3
1+i
y =∏ i 2 +
22.
3
i =1
∑ ( i+ j )
j=1
( )
3
a 2 + ∑ (i + j 2 )
23 3
y =a ∏ i −1
j =1 b+a
( )
3
24. 3
1
∏ ( a+i + j )
y =∑ + j=1
i =1 i b2
№ Задание
варианта
3
i + ∏ ( j 2 +i )
25. y =∑
3
j =1
j=1 5i
26.
У=
27.
У=
28.
У=
29.
У=
30.
У=
31.
У=
32.
У=
33.
У=
34.
У=
35.
36.
37.
38.
№ Задание
варианта
39.
40.