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

7.1.2. Оголошення змінних в ітераційних настановах і настановах вибору

Змінну можна оголосити в розділі ініціалізації циклу for або умовних виразах таких настанов як if, switch або while. Змінна, оголошена в одній з цих настанов, має область видимості, яка обмежена блоком коду програми, керованим цією настановою. Наприклад, змінна, оголошена в настанові циклу for, буде локальною для цього циклу, як це показано в наведеному нижче прикладі:

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

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

int main()

{

// Змінна i локальна для циклу for.

for(int i=0; i<10; i++) {

cout << i << " ";

cout << "у квадраті дорівнює " << i * i << "\n";

}

// i = 10; // *** Помилка *** -- i тут невідома!

getch(); return 0;

}

У цій програмі змінну i оголошують в розділі ініціалізації циклу for і використовують для керування цим циклом. А за межами циклу змінна i невідома.

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

Необхідно пам'ятати! Твердження про те, що змінна, оголошена в розділі ініціалізації циклу for, є локальною стосовно цього циклу або не є такою, змінилося з часом (йдеться про час, протягом якого розвивалася мова C++). Спочатку така змінна була доступна після виходу з циклу for. Проте стандарт C++ обмежує область видимості цієї змінної рамками циклу for. Але необхідно мати на увазі, що різні компілятори і тепер по-різному "дивляться" на цю ситуацію.

Якщо Ваш компілятор повністю дотримується стандарту мови програмування C++, то Ви можете також оголосити змінну в умовному виразі настанов if, switch або while. Наприклад, у наведеному нижче коді програми

if(int x = 20) {

cout << "Це значення змінної х: ";

cout << х;

}

визначається змінна х, якій присвоюється число 20. Оскільки цей вираз оцінюється як істинний, настанова cout буде виконана. Область видимості змінних, оголошених в умовному виразі настанови, обмежується блоком коду програми, керованим цією настановою. Отже, у цьому випадку змінна х невідома за межами настанови if. Правду кажучи, далеко не всі програмісти вважають оголошення змінних в умовному виразі настанов ознакою хорошого стилю програмування, і тому такий прийом у цьому навчальному посібнику більше не повториться.

7.1.3. Формальні параметри

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

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