Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
+ООП_Навч_посібник.doc
Скачиваний:
8
Добавлен:
01.07.2025
Размер:
6.58 Mб
Скачать

4.3.1. Варіанти використання настанови організації циклу for

Цикл for – одна з найбільш гнучких настанов у мові програмування С++, оскільки вона дає змогу отримати широкий діапазон варіантів її використання. Наприклад, для керування циклом for можна використовувати декілька змінних. Для розуміння сказаного розглянемо такий фрагмент коду програми:

for(x=0, y=10; х<=10; ++х, --y) cout << х << " " << y << "\n";

У цьому записі комами відокремлюються дві настанови ініціалізації та два інкрементні вирази. Це робиться для того, щоб компілятор "розумів", що існує дві настанови ініціалізації та дві настанови інкремента (декремента). У мові програмування C++ кома є оператором, який, по суті, означає "зроби це і те". Інші застосування оператора "кома" ми розглянемо нижче у цьому навчальному посібнику, але найчастіше він використовується в циклі for. Під час входу у цей цикл ініціалізувалися обидві змінні – х і y. Після виконання кожної ітерації циклу змінна х інкрементується, а змінна y декрементується. Використання декількох керівних змінних у циклі іноді дає змогу спростити алгоритми. У розділах ініціалізації та інкремента циклу for можна використовувати будь-яку кількість настанов, але зазвичай їх кількість не перевищує двох.

Умовним виразом, який керує циклом for, може бути будь-який допустимий С++-вираз. При цьому він не обов'язково повинен містити керівну змінну циклу. У наведеному нижче прикладі цикл виконуватиметься доти, доки користувач не натисне на клавішу клавіатури. У цій програмі представлена ще одна (дуже важлива) бібліотечна функція: kbhit(). Вона повертає значення ФАЛЬШ, якщо жодна клавіша не була натиснута на клавіатурі, і значення ІСТИНА – в іншому випадку. Функція чекає натиснення клавіші, даючи змогу тим самим циклу виконуватися доти, доки натискання не відбудеться. Функція kbhit() не визначається стандартом мови програмування C++, але включена в розширення мови програмування C++, яке підтримується більшістю компіляторів. Для її використання у програму необхідно внести заголовок <conio>.

Код програми 4.10. Демонстрація механізму використання у циклі for функції, яка реагує на натискання клавіші

#include <vcl>

#include <iostream> // Для потокового введення-виведення

#include <conio> // Для консольного режиму роботи

using namespace std; // Використання стандартного простору імен

int main()

{

int i;

// Виведення чисел на екран до натиснення будь-якої клавіші.

for(i=0;!kbhit(); i++) cout << i << " ";

getch(); return 0;

}

На кожній ітерації циклу викликається функція kbhit(). Якщо після запуску програми натиснути на будь-яку клавішу, то ця функція поверне значення ІСТИНА, внаслідок чого вираз !kbhit() дасть значення ФАЛЬШ, і цикл зупиниться. Але, якщо не натискати на клавішу, то функція поверне значення ФАЛЬШ, а вираз !kbhit() дасть значення ІСТИНА, що дасть змогу циклу продовжувати "крутитися".

Варто знати! Функція kbhit() не входить до складу стандартної бібліотеки мови програмування C++. Йдеться про те, що стандартна бібліотека визначає тільки мінімальний набір функцій, який повинні мати всі С++-компілятори. Функція kbhit() не включена в цей мінімальний набір, оскільки не всі середовища можуть підтримувати взаємодію з клавіатурою. Проте функцію kbhit() підтримують практично всі серійно випущені C++-компілятори. Виробники компіляторів можуть забезпечити підтримку більшої кількості функцій, ніж це необхідно для дотримання мінімальних вимог стосовно стандартної бібліотеки мови програмування C++. Додаткові ж функції дають змогу ширше використовувати можливості середовища програмування. Якщо для Вас не проблематичне питання переносності коду програми в інше середовище виконання, то Ви можете вільно використовувати всі функції, які підтримуються Вашим компілятором.