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

4.4. Використання інших ітераційних настанов

4.4.1. Ітераційна настанова while

Настанова while – один із способів організації ітераційних циклів у мові програмування C++.

Загальна форма організації циклу while має такий вигляд:

while(вираз) настанова;

У цьому записі під елементом настанова розуміють або одиночну настанову, або блок настанов. Роботою циклу керує елемент вираз, який є будь-яким допустимим С++-виразом. Елемент настанова виконується доти, доки умовний вираз повертає значення ІСТИНА. Як тільки цей вираз стає помилковим, то керування передається настанові, яка знаходиться за цим циклом.

Використання циклу while можна продемонструвати на прикладі такої невеликої програми. Практично всі компілятори підтримують розширений набір символів, який не обмежується символами ASCII. У розширеному наборі часто містяться спеціальні символи і деякі букви з алфавітів іноземних мов. ASCII-символи використовують значення, що не перевищують число 127, а розширений набір символів – значення з діапазону 128-255. У процесі виконання цієї програми виводяться всі символи, значення яких лежать в діапазоні 32-255 (32 – це код пропуску). Виконавши цю програму, програміст повинен побачити ряд дуже цікавих символів.

Код програми 4.12. Демонстрація виведення усіх друкованих символів, в т.ч. розширений набір символів, якщо такі існують

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

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

int main()

{

unsigned char ch;

ch = 32;

while(ch) {

cout << ch;

ch++;

}

getch(); return 0;

}

Розглянемо while-вираз з попередньої програми. Можливо, Вас здивувало, що він складається всього тільки з однієї змінної ch. Але "скринька" тут відкривається просто. Оскільки змінна ch має тут тип unsigned char, то вона може містити значення від 0 до 255. Якщо її значення дорівнює 255, то після інкрементування воно "скидається" в нуль. Отже, факт рівності значення змінної ch нулю слугує зручним способом завершити while-цикл.

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

Код програми 4.13. Демонстрація виведення рядка, що складається з крапок

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

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

int main()

{

int len;

cout << "Введіть довжину рядка (від 1 до 79): ";

cin >> len;

while(len>0 && len<80) {

cout << '.';

len--;

}

getch(); return 0;

}

Тіло while-циклу може взагалі не містити жодної настанови. Ось приклад:

while(rand()!= 100);

Цей цикл виконується доти, доки випадкове число, що генерується функцією rand(), не виявиться таким, що дорівнює числу 100.