Опубликовано: 2018-01-27 08:00:00
Оператор GOTO
Очень часто, в зависимости от некоторых условий, приходится изменять последовательность выполнения команд действия.
Команды управления ходом выполнения программы делятся на три группы:
- Команды безусловного перехода;
- Команды условного перехода;
- Команды организации циклов.
Сначала мы рассмотри первый пункт – про операторы (команды) безусловного перехода.
Бывают ситуации, когда в программе требуется передать управление в другое место программы независимо от каких-либо условий. Это осуществляется с помощью оператора безусловного перехода GOTO.
Формат (или синтаксис) оператора безусловного перехода GOTO:
GOTO <номер_строки_или_метка>
Где метка – это набор символов, начинающийся с буквы может содержать любое количество символов (букв и цифр) и заканчивающийся двоеточием.
Выполнение программы переходит на точку, определенную параметром метка. Метки предназначены для принудительного изменения процесса выполнения программы.
Рассмотреть оператор безусловного перехода можно на следующем примере:
- METKA:
- PRINT "PRIVET"
- GOTO METKA

Рисунок 1 – Простейший пример использования оператора GOTO

Рисунок 2 – Пример выполнения бесконечного цикла
Мы только что написали зацикленную (с бесконечным циклом) программу. Такая программа никогда не завершится сама по себе, О циклах мы поговорим позже. Чтобы выйти из неё необходимо нажать CTRL + BREAK.
Что же это за оператор такой GOTO? Давайте разберёмся ещё раз.
GOTO (англ. go to – «перейти к») – оператор безусловного перехода (перехода к определённой точке программы, обозначенной номером строки либо меткой).
Рассмотрим еще пример. Необходимо выводить на экран квадраты чисел, вводимых с клавиатуры. Чтобы не произошло зацикливания, необходимо оговорить условие, при котором ввод чисел прекращается. Пусть это будет ввод числа «0» с клавиатуры.
Оператор IF в предыдущих статьях не упоминался и о нем мы поговорим попозже подробнее. Дословно в данном примере он обозначает если переменная A не равна нулю, то вывести на экран квадрат этой переменной, иначе (переменная равна нулю) завершить работу программы.
- CLS
- PRINT "PRI VVODE CHISLA 0 PROGRAMMA ZAKONCHIT RABOTU."
- METKA:
- INPUT "VVEDITE CHISLO: "; A
- IF (A <> 0) THEN PRINT A ^ 2 ELSE END
- GOTO METKA

Рисунок 3 – Ввод данных в программе. Демонстрация использования оператора GOTO
Если мы введем последовательно числа 7, -2, 0.4, 0, то получим следующий результат:

Рисунок 4 – Ввод множества чисел в программу и её завершение
Для закрепления материала, решим ещё одну задачу. Необходимо выводить на экран строковую константу «QB64» до нажатия клавиши.
- CLS
- METKA: PRINT "QB64"
- IF (INKEY$ = "") THEN GOTO METKA
- END

Рисунок 5 – Пример выполнения оператора GOTO и функции INKEY$

Рисунок 6 – Результат выполнения оператора GOTO и функции INKEY$
Иными словами, можно сказать, что оператор GOTO заставляет программу выполнить другой оператор, и, начиная с его позиции, продолжить выполнение последующих операторов.
На первый взгляд оператор GOTO может показаться ну очень полезным оператором. Однако на практике он дает слишком большую свободу скакать по программе куда угодно. В лучшем случае программу, которая имеет несколько операторов GOTO сложно понять, в худшем она вообще работает плохо.
Спасибо за прочтение этой статьи.