Урок №69. Оператор goto

  Юрій  | 

  Оновл. 18 Чер 2020  | 

 115

Оператор goto — це оператор управління потоком виконання програм, який змушує центральний процесор виконати перехід з однієї ділянки коду в іншу (тобто здійснити стрибок). Інша ділянка коду ідентифікується за допомогою лейбла. Наприклад:

У цій програмі користувачеві пропонується ввести додатне число. Однак, якщо користувач введе від’ємне число, то програма, використовуючи оператор goto, виконає перехід назад до лейблу tryAgain. Потім користувачеві знову потрібно буде ввести число. Таким чином, ми можемо постійно просити користувача ввести число, поки він не зробить це коректно.

Раніше ми розглядали два типи області видимості: локальна (або ще “блокова”) і глобальна (або ще “файлова”). Лейбли використовують третій тип області видимості: область видимості функції. Оператор goto і відповідний лейбл повинні знаходитися в одній і тій же функції.

Існують деякі обмеження на використання операторів goto. Наприклад, ви не зможете перестрибнути вперед через змінну, яка ініціалізована в тому ж блоці, що і goto:

Загалом програмісти уникають використання оператора goto в C++ (і в більшості інших високорівневих мов програмування). Основна проблема з ним полягає в тому, що він дозволяє програмісту керувати виконанням коду так, що точка виконання може довільно переміщуватися в коді. А це, в свою чергу, створює те, що досвідчені програмісти називають «спагетті-кодом». Спагетті-код — це код, порядок виконання якого нагадує тарілку зі спагеті (все заплутано і закручено), що вкрай ускладнює слідування та розуміння логіки виконання такого коду.

Як казав один відомий фахівець в інформатиці та в програмуванні, Едсгер Дейкстра: «Якість програмістів — це функція щільності використання операторів goto в програмах, які вони пишуть».

Оператор goto часто використовується в деяких старих мовах програмування, таких як Basic чи Fortran, або навіть в C. Однак в C++ goto майже ніколи не використовується, оскільки будь-який код, написаний з ним, можна більш ефективно переписати з використанням інших об’єктів в C++, таких як цикли, обробники винятків або деструктори (це все ми розглянемо у відповідних уроках).

Правило: Уникайте використання операторів goto, якщо на це немає вагомої причини.

Оцінити статтю:

1 Зірка2 Зірки3 Зірки4 Зірки5 Зірок (1 оцінок, середня: 5,00 з 5)
Loading...

Залишити відповідь

Ваш E-mail не буде опублікований. Обов'язкові поля відмічені *