Синтаксис оператора for такий:
for ( вираз_1; вираз_2; вираз_3 ) оператор;
Вираз 1 встановлює початкові значення змінних циклу, його називають виразом ініціалізації. Вираз 2 задає умову виконання циклу, його називають виразом умови. Вираз 3 виконує зміну значень змінних циклу, його називають виразом ітерації. Оператор – довільний оператор мови, в тому числі блок, який задає дії, що мають виконуватись кількаразово, його називають тілом циклу.
Оператор працює наступним чином:
1) обчислюється вираз 1, який використовується для надання змінним циклу початкових значень;
2) обчислюється значення виразу 2, тобто перевіряється умова виконання циклу;
3) якщо значення виразу 2 дорівнює нулю (умова хибна), то виконання циклу завершується, управління передається оператору, наступному за for;
4) якщо значення виразу 2 ненульове (умова істинна), то виконується оператор тіла циклу;
5) обчислюється вираз 3, який застосовується для зміни значень параметрів циклу;
6) відбувається безумовний перехід до кроку 2.
Блок – схема роботи оператора for наведена на мал. 6.1. На цьому ж малюнку наведена блок – схема виконання такої програми:
#include <iostream>
using namespace std;
int main() {
for ( int i = 1; i <= 10; i++ )
cout << "i = " << i << endl;
}
Параметром циклу є змінна і, значення якої змінюються при виконанні оператора циклу і виводяться на екран. Початковим значенням змінної є одиниця (задається виразом 1), останнім – десять (задається виразом 2). На кожному кроці виконання оператора for (ще кажуть, при кожному проході тіла циклу, на кожній ітерації) значення змінної збільшується на одиницю (задається виразом 3).
Змінна і оголошена всередині оператора for. Такі змінні є локальними змінними циклу, їх можна використовувати тільки в межах даного оператора for.
Початкову частину оператора циклу for ( вираз_1; вираз_2; вираз_3 ) називають заголовком циклу. Після заголовка знак ; не ставлять, крім випадків порожнього оператора. Всередині заголовка знак ; застосовують для відокремлення між собою трьох складових виразів. Кожен з виразів, або всі вони, можуть бути відсутні, але знаки ; ставити обов’язково. Тобто, попередню програму можна переписати так:
#include <iostream>
using namespace std;
int main(){
int i;
i = 1;
for ( ; i <= 10; ) {
cout << "i = " << i << endl;
i++;
}
}

Мал. 6.1. Блок – схема роботи і приклад використання оператора for
Якщо вираз 2 відсутній, то умова вважається істиною. Для виходу з такого циклу можна застосовувати оператор break, який перериває виконання найближчого оточуючого оператора циклу. Тобто, попередню програму можна переписати так:
#include <iostream>
using namespace std;
int main(){
int i;
i = 1;
for ( ; ; ) {
cout << "i = " << i << endl;
if ( ++i > 10 )
break;
}
}
Приклад програми: знаходження суми ряду 1/1+1/2+1/3+… Суму будемо знаходити двома способами: з заданою точністю і підсумовуванням певної кількості елементів ряду.
#include <iostream>
using namespace std;
int main(){
double s, t, e;
int i;
s = 0;
e = 1e-5;
i = 1;
for ( t = 1 / i; t >= e; t = 1. / i ) {
s += t;
i++;
}
cout << s << endl;
s = 0;
t = 1;
for ( i = 1; i <= 100000; i++ ) {
t = 1. / i;
s += t;
}
cout << s << endl;
}
Недоліком цієї програми можна вважати ініціалізацію змінних в різних місцях програми, так само, як і збільшення параметрів циклу. В таких випадках зручно використовувати операцію «кома». Вона має найнижчий пріоритет серед операцій мови С++ і призначена для об’єднання декількох послідовно записаних виразів в один загальний вираз. Вирази, об’єднані з допомогою операції кома, виконуються зліва на право, значенням загального виразу стає значення самого правого під виразу. Приклад використання операції кома:
#include <iostream>
using namespace std;
int main(){
int a = 1, b = 2, c = 3, t;
t = a + b, --c, a + c; // t = a + c
cout << t << endl;
}
Використаємо операцію кома при організації циклу. Знайдемо суму ряду 1/1+1/2+1/4+1/8+… Як і у попередньому прикладі, суму будемо знаходити двома способами: з заданою точністю і підсумовуванням певної кількості елементів ряду.
#include <iostream>
using namespace std;
int main(){
double s, t, e;
int i;
for ( i = 0, s = 0, t = 1, e = 1e-5; t >= e; ++i,
t = 1 / pow( 2., i ) )
s += t;
cout << s << endl;
for ( i = 0, s = 0, t = 1 ; i <= 100000; ++i,
t = 1 / pow( 2., i ) )
s += t;
cout << s << endl;
}
Знайдемо значення факторіалу з допомогою оператора for.
#include <iostream>
using namespace std;
int main(){
int f, i, n;
cin >> n;
for ( f = 1, i = 2; i <= n; ++i )
f *= i;
cout << f << endl;
}
Знайдемо суму ряду 1/1!+1/2!+1/3!+1/4!+1/5!+…
#include <iostream>
using namespace std;
int main(){
int f, i, n, j;
double s;
cin >> n; // кількість елементів ряду
for ( s = 0, i = 1; i <= n; ++i ) {
for ( f = 1, j = 2; j <= i; ++j )
f *= j;
cout << s << " + 1 / " << f << endl;
s += 1. / f;
}
cout << s << endl;
}
Внутрішнього циклу для обчислення факторіала можна позбавитись, якщо зберігати значення факторіалу, знайдене для попереднього елементу ряду.
#include <iostream>
using namespace std;
int main() {
int f, i, n, j;
double s;
cin >> n; // кількість елементів ряду
for ( s = 0, i = 1, f = 1; i <= n; ++i, f *= i ) {
cout << s << " + 1 / " << f << endl;
s += 1. / f;
}
cout << s << endl;
}
Схожий метод можна використовувати для програм, в яких необхідно отримати послідовність виду 1, -1, 1, -1, 1, … Зробимо це двома способами: з допомогою піднесення до степеня n числа -1 і з допомогою множення попереднього значення на -1.
#include <iostream>
using namespace std;
int main(){
int i, n = 10, t;
for ( i = 0; i < n; i++ )
cout << i << " : " << pow( -1., i ) << endl;
for ( i = 0, t = 1; i < n; i++, t *= -1 )
cout << i << " : " << t << endl;
}
Знайти максимальне значення функції
на інтервалі від 0 до Пі. Графік функції представлений на мал. 6.2. Вивести на екран таблицю значень цієї функції з заданим користувачем кроком зміни х.

Мал. 6.2. Графік функції 
#include <iostream>
using namespace std;
int main(){
const double PI = 3.14159;
const double X1 = 0.;
const double X2 = PI;
double xmax, fmax, d, t, f;
cin >> d;
xmax = X1;
fmax = sin( pow( X1, 2 ) ) + pow( cos( X1 ), 2 );
for ( t = X1; t <= X2; t += d ) {
f = sin( pow( t, 2 ) ) + pow( cos( t ), 2 );
cout << t << "\t" << f << endl;
if ( fmax < f ) {
xmax = t;
fmax = f;
}
}
cout << xmax << " : " << fmax << endl;
}
Знайти перше нульове значення функції
для значень х більше нуля.
#include <iostream>
using namespace std;
int main() {
double f; // Значення функції
double d = 1e-5; // Крок зміни х
double x = 0.; // Поточне значення х
double e = 1e-5; // Допустима помилка розрахунків
int n = 10000000; // Максимально допустима кількість ітерацій
int i;
f = sin( pow( 0, 2. ) ) + pow( cos( 0. ), 2. );
for ( x = d, i = 1; ! ( -e < f && f < e ); x += d, ++i ) {
f = sin( pow( x, 2. ) ) + pow( cos( x ), 2. );
if ( i >= n ) {
cout << "Not found" << endl;
break;
}
}
cout << "x = " << x << endl; // 1.78519
cout << "f = " << f << endl; // 1.02908e-006
}