2. Цикл while
Оператор циклу while має наступний вигляд:
while ( <умова>) { W; }
Тут <умова> – будь-який вираз, допустимий в мові С; W – послідовність операторів.
<умова> приймає значення ІСТИНА, якщо значення виразу не рівне нулю. Інакше <умова> приймає значення БРЕХНЯ. Тіло циклу виконується, якщо <умова> приймає значення ІСТИНА. Інакше програма виходить з циклу і виконує перший оператор, який слідує за тілом циклу.
Програма 8. Введення чисел з клавіатури в режимі діалогу.
void main()
{int k;
clrscr();
cout << "Введи число (Ctrl + z Enter – вихід з програми): ";
scanf("%d" &k);
while (!feof(stdin) ) // Початок циклу. Цикл виконується доти
// поки не буде введений символ Ctrl + z.
{ cout << "\n Ви ввели число " << k
<< "\nДля продовження введення натискуй Enter"; getch(); clrscr();
cout << "Введи число (Сtrl + z Enter – вихід з програми): ";
scanf("%d" &k);
} }
Програма моделює роботу в режимі діалогу з користувачем.
Зауваження. Функція feof(stdin) повертає значення 0, якщо з клавіатури вводиться число, і значення, не рівне 0, при введенні комбінації символів Ctrl + z.
Програма 9. Виводить цифри, які формують ціле число.
void main()
{ long а;
clrscr();
cout << " Введи число а = ";
cin >> а;
clrscr();
cout << “Число “ << а << “Складається з цифр:”;
while (а != 0 )
{cout << а % 10 << “\n”; // Виводить останню цифру числа.
а = а / 10; // Відкидає останню цифру числа.
}
getch(); }
Програма 10. Обчислює суму цифр заданого цілого числа.
void main()
{ long а;
int s = 0;
clrscr();
cout << "Введи число а = " ;
cin >> а;
while (а != 0 )
{
s = s + а % 10; // Обчислює і додає останню цифру числа до s.
а = а / 10; } // Відкидає останню цифру числа.
cout << "сума s= " << s << "\n";
getch(); }
Програма 11. Шаблон меню.
void main(void)
{ int iv = 0;
int до; while ( !iv )
{ clrscr();
cout << "\n\nКоманды меню:\n\n";
cout << "1 Команда\n";
cout << "2 Команда\n";
cout << "3 Команда\n";
cout << "4 Команда\n";
cout << "5 Вихід\n";
cout << "\nВведи команди меню: ";
scanf("%d",&k);
switch (k)
{
case 1 : cout << "Ви вибрали 1-у команду ";
getch();
break;
case 2 : cout << "Ви вибрали 2-у команду ";
getch();
break;
case 3 : cout << "Ви вибрали 3-у команду ";
getch();
break;
case 4 : cout << "Ви вибрали 4-у команду ";
getch();
break;
case 5 : cout << " \n\n Ви вийшли з програми!!!.\n ";
cout << " Тисни будь-кого клавишу\n ";
iv = 1;
break;
default : cout << "Команда меню з номером" << k
<< "отсутствует\n";
} }
getch(); }
3. Цикл do – while
Оператор циклу do – while має наступний вигляд:
do
{ W; }
while ( <умова>)
Тут <умова> – будь-який вираз, допустимий в мові С; W – послідовність операторів.
<умова> приймає значення ІСТИНА, якщо значення виразу не рівне нулю, БРЕХНЯ – інакше. Тіло циклу виконується, якщо <умова> приймає значення ІСТИНА.

ітерації.
Складати програму, яка обчислює значення змінної по деякій ітераційній формулі yk+l = f(yk), - достатньо проста задача. Для цього необхідно: оголосити змінну у; коректно задати початкове значення; в блоці операторів записати за правилами мови вираза y = f(у).
Тривалість обчислення в циклі виразу у = f(у) визначається заданою точністю . Точність обчислень контролюється за допомогою нерівності |yk+l-yk|≤. Тут уk, уk+1 - значення у, яке обчислюється на кроках ітерації k і k + 1. Загальний вид циклу, який обчислює вираз із заданою точністю, має наступний вигляд:
y = x;
do
{y1 = у; II В y1 засилає значення у з попереднього кроку.
…
y= f(у); // На поточному кроці у визначається по формулі.
} while (fabs(у - yl)> ер); II Виконувати цикл до заданої точності.
Тут х - початкове значення змінної у; y1 - значення змінної у, яке визначене на кроці k; у - значення змінної, яке обчислюється на кроці k + 1; ер - задана точність обчислення по ітераційній формулі.
Програма 12. Обчислює
корінь ступеня т
з дійсного числа

void main()
{
double x, ep, r, r1, rm;
double yn, yn1, m;
int i;
clrscr();
cout << "Введи показник кореня і підстава ступеня m, x = ";
cin >> m >> x;
cout << " \n Введи точність обчислення ep = ";
cin >> ep;
yn1 = x;
rm = (m - 1) / m;
r1 = x / m;
do { r = r1;
yn = yn1;
for (i = 1; i < m; i++) // В циклі
r = r / yn; // обчислюється значення кореня ступеня m
// з числа x.
yn1 = rm * yn + r ; // Обчислюється значення yn+1 .
}
while ( fabs(yn1 - yn)> ep );
cout << "Корінь " << m << "-й ступені з " << x
<< "= " << yn1 << "\n";
cout << "\n\n Перевірка:\n ";
yn = 1;
for (i=1; i<=m; i++)
yn = yn1* yn;
cout << yn1 << " в ступені " << m << "= " << yn << "\n";
getch();
}
Контрольні питання:
1. Оператор циклу for.
2. Оператор циклу while.
3. Оператор циклу do – while.
Література
