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

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) помилковим із самого початку. Тому навіть одна ітерація цього циклу не буде виконана.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]