Урок 66. Оператор goto

   ⁄ 

 Обновлено 26 Июн 2017

  ⁄   

Оператор goto — это оператор управления порядком выполнения кода, который заставляет ЦП сделать переход из одного участка кода на другой, осуществить так называемый прыжок. Другой участок кода идентифицируется с помощью statement label. Ниже приведен пример с использованием goto и statement label:

В этой программе пользователю предлагается ввести неотрицательное число. Однако, если пользователь введет отрицательное число, то программа, используя оператор goto, сделает переход назад к строчке tryAgain. Затем пользователю снова нужно будет ввести число. Таким образом, мы можем постоянно запрашивать у пользователя ввод числа, пока он или она не введут корректные числа.

В главе 4 мы рассмотрели два типа области видимости: локальная (блочная) и глобальная (файловая). Statement labels используют третий тип области видимости: область видимости функции. Оператор goto и соответствующий statement label должны находиться в одной и той же функции.

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

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

Как говорил один известный специалист в информатике и программировании, Эдсгер Дейкстра: «Качество программистов — это уменьшающаяся функция плотности использования операторов goto в программах, которые они пишут».

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

Правило: Избегайте использования операторов goto, если на то нет крайней необходимости.

Оценить статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (5 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в:
Подписаться на обновления:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *