QBASICBOOK.ru: сайт про QB64

Опубликовано: 2018-01-27 08:00:00

Оператор GOTO

Очень часто, в зависимости от некоторых условий, приходится изменять последовательность выполнения команд действия.

Команды управления ходом выполнения программы делятся на три группы:

Сначала мы рассмотри первый пункт – про операторы (команды) безусловного перехода.

Бывают ситуации, когда в программе требуется передать управление в другое место программы независимо от каких-либо условий. Это осуществляется с помощью оператора безусловного перехода GOTO.

Формат (или синтаксис) оператора безусловного перехода GOTO:

GOTO <номер_строки_или_метка> 

Где метка – это набор символов, начинающийся с буквы может содержать любое количество символов (букв и цифр) и заканчивающийся двоеточием.

Выполнение программы переходит на точку, определенную параметром метка. Метки  предназначены  для  принудительного  изменения  процесса  выполнения программы.

Рассмотреть оператор безусловного перехода можно на следующем примере:


  1. METKA:
  2. PRINT "PRIVET"
  3. GOTO METKA

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

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

Рисунок 2 – Пример выполнения бесконечного цикла

Рисунок 2 – Пример выполнения бесконечного цикла

Мы только что написали зацикленную (с бесконечным циклом) программу. Такая программа никогда не завершится сама по себе, О циклах мы поговорим позже. Чтобы выйти из неё необходимо нажать CTRL + BREAK.

Что же это за оператор такой GOTO? Давайте разберёмся ещё раз.

GOTO (англ. go to – «перейти к») – оператор безусловного перехода (перехода к определённой точке программы, обозначенной номером строки либо меткой).

Рассмотрим еще пример. Необходимо выводить на экран квадраты чисел, вводимых с клавиатуры. Чтобы не произошло зацикливания, необходимо оговорить условие, при котором ввод чисел прекращается. Пусть это будет ввод числа «0» с клавиатуры.

Оператор IF в предыдущих статьях не упоминался и о нем мы поговорим попозже подробнее. Дословно в данном примере он обозначает если переменная A не равна нулю, то вывести на экран квадрат этой переменной, иначе (переменная равна нулю) завершить работу программы.


  1. CLS
  2. PRINT "PRI VVODE CHISLA 0 PROGRAMMA ZAKONCHIT RABOTU."
  3. METKA:
  4. INPUT "VVEDITE CHISLO: "; A
  5. IF (A <> 0) THEN PRINT A ^ 2 ELSE END
  6. GOTO METKA

Рисунок 3 – Ввод данных в программе. Демонстрация использования оператора GOTO

Рисунок 3 – Ввод данных в программе. Демонстрация использования оператора GOTO

Если мы введем последовательно числа 7, -2, 0.4, 0, то получим следующий результат:

Рисунок 4 – Ввод множества чисел в программу и её завершение

Рисунок 4 – Ввод множества чисел в программу и её завершение

Для закрепления материала, решим ещё одну задачу. Необходимо выводить на экран строковую константу «QB64» до нажатия клавиши.


  1. CLS
  2. METKA: PRINT "QB64"
  3. IF (INKEY$ = ""THEN GOTO METKA
  4. END

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

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

Рисунок 6 – Результат выполнения оператора GOTO и функции INKEY$

Рисунок 6 – Результат выполнения оператора GOTO и функции INKEY$

Иными словами, можно сказать, что оператор GOTO заставляет программу выполнить другой оператор, и, начиная с его позиции, продолжить выполнение последующих операторов.

На первый взгляд оператор GOTO может показаться ну очень полезным оператором. Однако на практике он дает слишком большую свободу скакать по программе куда угодно. В лучшем случае программу, которая имеет несколько операторов GOTO сложно понять, в худшем она вообще работает плохо.

Спасибо за прочтение этой статьи.

 

Прикрепленные файлы:

< Предыдущая статья
Решение простых задач на строки
Следующая статья >
Генератор случайных чисел RANDOMIZE TIMER

Выделите опечатку и нажмите Ctrl + Enter, чтобы отправить сообщение об ошибке.