Оператор циклу з параметром.
Для організації циклу з відомим числом повторень використовується оператор циклу з параметром, котрий формально записується таким чином:
for (вираз 1; логічний вираз 2; вираз 3) команда 1;
У виразах 1,2,3 використовується спеціальна змінна, котра називається керуючою або параметром циклу. За її значенням встановлюється необхідність повторення циклу чи виходу з нього. Вираз 1 використовується для присвоєння початкового значення керуючої змінної, вираз 2 - для перевірки умови продовження циклу, вираз 3 - для зміни значень керуючої змінної.
Дія команди.
1.Обчислюється значення виразів 1 та 2.
2.Якщо значення виразу 2 істине виконується тіло циклу, а потім знаходиться значення виразу 3.
3.Потім повторно визначається значення виразу 2 і пункт 2 повторюється до тих пір, поки значення виразу 2 істине. Як тільки значення виразу 2 стане хибне, відбувається вихід з тіла циклу.
Будь-який з трьох виразів може бути відсутній, але крапка з комою повинна залишатись. Якщо відсутні вирази 1 або 3, то керуюча змінна не використовується. Якщо ж пропущено вираз 2, то вважається, що умова істина і цикл не закінчується. Таким чином,
for (;;) { ... }
є нескінчений цикл, вихід з якого треба забезпечити іншими засобами.
Приклад .Протабулювати функцію y = 2sinx на проміжку [0; 1.5] з кроком h = 0.1 та обчислити середнє арифметичне значень функції більших 0.5, але менших 1.5.
#include <iostream.h>
#include <conio.h>
#include <math.h>
void main()
{
clrscr();
cout<<"--------------\n"
<<"x\t2sin(x)\n"
<<"----------------\n";
float sum=0, h=0.1; int n=0;
for (float x=0.0,y=2*sin(x);x<=1.5+h/2;y=2*sin(x),x+=h)
{
cout<<x<<"\t"<<y<<endl;
if ((y>=0.5)&&(y<=1.5),sum+=y,n++);
}
sum/=n;
cout<<"Середне = "<<sum<<endl;
getch();
}
В циклі замість логічного виразу x<=1.5 ми записали умову x<=1.5+h/2. Це пов’язано з специфікою комп’ютерної арифметики. Справа в тому, що значення дійсних змінних співпроцесором комп’ютера хоч обчислюються і з великою точністю, але все ж наближено. Тому щоб не втратити останнього значення х = 1.5 ми і записали умову у вигляді x<=1.5+h/2 – додали зміщення h/2.Взагалі кажучи в логічних виразах бажано уникати порівнянь змінних дійсних типів. Але якщо все ж таки порівняння дійсних типів неминуче, то необхідно додавати деяке зміщення.
Приклад. Знаходження кількісті та добутку лише парних чисел з діапазону 4..11
void main()
{
for (int n=4,prod=1,k=0;n<=11;n+=2)
{
prod*=n; k++;
}
}
Дата добавления: 2015-08-26; просмотров: 599;