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

4.5. Використання настанови безумовного переходу goto

Настанова goto – це С++-настанова безумовного переходу.

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

Настанова goto вимагає наявності у програмі мітки. Мітка – це дійсний у мові програмування C++ ідентифікатор, за яким поставлено двокрапку. У процесі виконання настанови goto керування програмою передається настанові, вказаній за допомогою мітки. Мітка повинна знаходитися в одній функції з настановою goto, яка посилається на цю мітку.

Мітка – це ідентифікатор, за яким знаходиться двокрапка.

Наприклад, за допомогою настанови goto і мітки можна організувати такий цикл на 100 ітерацій:

х = 1;

loop1:

x++;

if(x < 100) goto loopl;

Іноді настанову goto варто використовувати для виходу з глибоко вкладених настанов циклу. Для розуміння сказаного розглянемо такий фрагмент коду програми:

for(...) {

for(...) {

while(...){

if(...) goto stop;

...

}

}

}

stop:

cout << "Помилка у програмі.\n";

Щоб замінити настанову goto, довелося б виконати ряд додаткових перевірок. У цьому випадку настанова goto істотно спрощує програмний код. Простим застосуванням настанови break тут не обійшлося, оскільки вона забезпечила б вихід тільки з самого внутрішнього циклу.

Варто знати! Настанову goto необхідно застосовувати обмежено (як сильнодіючі ліки). Якщо без неї Ваш код програми буде менш читабельним або для Вас важлива швидкість виконання програми, то в таких випадках використання настанови goto допустиме.

4.6. Приклад використання настанов керування

Наведений нижче приклад є останньою версією програми "Вгадай магічне число". У ній використано багато засобів С++-програмування, представлених у цьому розділі. Пропонуємо, перш ніж переходити до наступного розділу, переконатися у тому, що добре розумієте всі розглянуті тут елементи мови програмування C++. Цей варіант програми дає змогу згенерувати нове число, зіграти в гру і вийти з програми.

Код програми 4.20. Демонстрація програми "Вгадай магічне число": остання версія

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

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

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

void play(int m);

int main()

{

int option;

int magic;

magic = rand();

do {

cout << "1. Отримати нове магічне число\n";

cout << "2. Зіграти\n";

cout << "3. Вийти з програми\n";

do {

cout << "Введіть свій варіант: ";

cin >> option;

} while(option<1 || option>3);

switch(option) {

case 1: magic = rand();

break;

case 2: play(magic);

break;

case 3: cout << "До побачення!\n";

break;

}

} while(option != 3);

getch(); return 0;

}

// Зіграємо в гру.

void play(int m)

{

int t, x;

for(t=0; t<100; t++) {

cout << "Вгадайте магічне число: ";

cin >> x;

if(x==m) {

cout << "** Правильно **\n";

return;

}

else

if(x<m) cout << "Замало.\n";

else cout << "Забагато.\n";

}

cout << "Ви використали всі шанси вгадати магічне число. "

<< "Спробуйте знову.\n";

}

Розділ 5. Масиви та рядки – засоби групування взаємопов'язаних між собою змінних

Масив (array) – це перелік змінних однакового типу, звернення до яких відбувається із застосуванням імені, загального для всіх його елементів. У мові програмування C++ масиви можуть бути одно-, дво- та багатовимірними, хоча в основному використовуються одновимірні масиви. Масиви є зручними засобами для групування взаємопов'язаних між собою змінних.

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

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