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

4.2.2. Організація вкладених настанов багатовибірного розгалуження

Настанова багатовибірного розгалуження switch може бути використана як частина case-послідовності зовнішньої настанови switch. У цьому випадку вона називається вкладеною настановою switch. Необхідно відзначити, що case-константи внутрішніх і зовнішніх настанов switch можуть мати однакові значення, при цьому жодних конфліктів не виникне. Наприклад, такий фрагмент коду програми є цілком допустимим:

switch(ch1) {

case 'А1: cout << "Ця константа А – частина"

<< " зовнішньої настанови switch";

switch(ch2) {

case 'A': cout << "Ця константа А – частина"

<< " внутрішньої настанови switch";

break;

case 'В1: //...

}

break;

case 'B1: //...

}

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

Цикл for – найуніверсальніший цикл мови програмування C++.

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

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

for(ініціалізація; вираз; інкремент) настанова;

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

for(ініціалізація; вираз; інкремент) {

послідовність настанов

}

Елемент ініціалізація зазвичай є настановою присвоєння, яка встановлює керівній змінній циклу початкове значення, що дорівнює нулю. Ця змінна діє як лічильник, який керує роботою циклу. Елемент вираз є умовним виразом, у якому тестується значення керівної змінної циклу. Результат цього тестування визначає, виконається цикл for ще раз чи ні. Елемент інкрементце вираз, який визначає, як змінюється значення керівної змінної циклу після кожної ітерації. Звернемо Вашу увагу на те, що всі ці елементи циклу for повинні відділятися крапкою з комою. Цикл for виконуватиметься доти, доки обчислення елемента вираз дає істинний результат. Як тільки цей умовний вираз стане помилковим, цикл завершиться, а виконання програми продовжиться з настанови, що є наступною за циклом for.

У наведеному нижче коді програми цикл for використовують для виведення значень квадратного кореня з чисел від 1 до 99. Звернемо Вашу увагу на те, що у наведеному прикладі керівна змінна називається num.

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

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

#include <cmath> // Для використання математичних функцій

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

int main()

{

int num;

double sq_root;

for(num=1; num < 100; num++) {

sq_root = sqrt((double) num);

cout << num << " " << sq_root << "\n";

}

getch(); return 0;

}

Ось як виглядають перші рядки результатів, що виводяться цією програмою:

1 1

2 1.41421

3 1.73205

4 2

5 2.23607

6 2.44949

7 2.64575

8 2.82843

9 3

10 3.16228

11 3.31662

У цій програмі використано ще одну стандартну функцію мови програмування C++: sqrt(). Ця функція повертає значення квадратного кореня зі свого аргументу. Аргумент повинен мати тип double, і саме тому під час виклику функції sqrt() параметр num приводиться до типу double. Сама функція також повертає значення типу double. Звернемо Вашу увагу на те, що у програму внесено заголовок <cmath>, оскільки цей заголовний файл забезпечує підтримку функції sqrt().

Варто знати! Окрім функції sqrt(), мова програмування C++ підтримує широкий набір інших математичних функцій, наприклад sin(), cos(), tan(), log(), ceil() і floor(). Необхідно також пам'ятати, що всі математичні функції вимагають приєднання до програми заголовка <cmath>.

Керівна змінна циклу for може змінюватися як з позитивним, так і з негативним приростом, причому величина цього приросту також може бути будь-якою. Наприклад, наведений нижче код програми виводить числа в діапазоні від 100 до -100 з декрементом, що дорівнює 5.

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

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

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

int main()

{

int i;

for(i=100; i>=-100; i=i-5) cout << i << " ";

getch(); return 0;

}

Важливо розуміти, що умовний вираз завжди тестується на початку виконання циклу for. Це означає, що коли перша ж перевірка умови дасть значення ФАЛЬШ, програмний код тіла циклу не виконається жодного разу. Ось приклад:

for(pm=10; pm < 5; pm++)

cout << pm; // Ця настанова не виконається.

Цей цикл ніколи не виконається, оскільки вже під час входу в нього значення його керівної змінної pm більше п'яти. Це робить умовний вираз (pm < 5) помилковим із самого початку. Тому навіть одна ітерація цього циклу не буде виконана.