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

4.3.2. Відсутність елементів у визначенні циклу

У мові програмування C++ дозволено опустити будь-який елемент заголовка циклу (ініціалізація, умовний вираз, інкремент) або навіть все відразу. Наприклад, ми хочемо написати цикл, який повинен виконуватися доти, доки з клавіатури не буде введене число 123. Ось як виглядає така програма.

Код програми 4.11. Демонстрація відсутності елементів у визначенні циклу for

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

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

int main()

{

int x;

for(x=0; x != 123;) {

cout << "Введіть число: ";

cin >> x;

}

getch(); return 0;

}

У цій програмі в заголовку циклу for відсутній вираз інкремента. Це означає, що під час кожного повторення циклу виконується тільки одна дія: значення змінної х порівнюється з числом 123. Але, якщо ввести з клавіатури число 123, умовний вираз, що перевіряється в циклі, стане помилковим, і цикл завершиться. Оскільки вираз інкремента в заголовку циклу for відсутній, то керівна змінна циклу не модифікується.

Наведемо ще один варіант організації циклу for, в заголовку якого, як це показує такий фрагмент коду програми, відсутній розділ ініціалізації:

cout << "Введіть номер позиції: ";

cin >> х;

for(; х < limit; x++) cout << " ";

У цьому записі порожній розділ ініціалізації, а керована змінна х ініціалізується значенням, що вводиться користувачем, з клавіатури до входу в цикл.

До розміщення виразу ініціалізації за межами циклу, як правило, вдаються тільки у тому випадку, коли початкове значення генерується складним процесом, який незручно помістити у визначення циклу. Окрім того, розділ ініціалізації залишають порожнім і у разі, коли керування циклом здійснюється за допомогою параметра певної функції, а як початкове значення керівної змінної циклу використовується значення, яке отримує параметр під час виклику функції.

4.3.3. Нескінченний цикл

Нескінченний цикл – це цикл, який ніколи не закінчується.

Залишивши порожнім умовний вираз циклу for, можна створити нескінченний цикл (цикл, який ніколи не закінчується). Спосіб запису такого циклу показаний на прикладі такої конструкції циклу for.

for(;;)

{

//...

}

Цей цикл працюватиме без кінця. Незважаючи на наявність деяких задач програмування (наприклад, командних процесорів операційних систем), які вимагають наявність нескінченного циклу, більшість "нескінченних циклів" – це просто цикли із спеціальними вимогами до завершення. Ближче до кінця цього розділу буде показано, як завершити цикл такого типу. (Підказка: за допомогою настанови break.)

4.3.4. Цикли часової затримки

У програмах часто використовують так звані цикли часової затримки. Їх завдання – просто "убити час". Для запису таких циклів достатньо залишити порожнім тіло циклу, тобто опустити ті настанови, які повторює цикл на кожній ітерації. Ось приклад:

for(x=0; x<1000; x++);

Цей цикл тільки інкрементує значення змінної х і не робить нічого більше. Крапка з комою (в кінці рядка) необхідна внаслідок того, що цикл for чекає отримати настанову, яка може бути порожньою (як у цьому випадку).

Перш ніж рухатися далі, не завадило б проекспериментувати з власними варіаціями на тему циклу for. Це Вам допоможе переконатися в його гнучкості і потужності.