Шаг 20.
Безусловная передача управления

    На этом шаге мы рассмотрим конструкцию Goto.

    Кроме условных конструкций имеются конструкция, осуществляющая безусловную передачу управления:

Goto <метка>;

    В тексте программы должна присутствовать указанная метка. Этой меткой отмечается оператор, которому нужно передать управление. Под меткой понимается любая последовательность букв и цифр, однако в качестве меток лучше использовать последовательности, имеющие смысл.

    Встретив этот оператор в программе, компьютер перейдет на метку, которая указана после служебного слова Goto. Затем выполняется оператор, следующий за меткой. Помеченный оператор записывается после метки и символа ":" (двоеточие).

    Проиллюстрируем использование метки на конкретном примере. Пусть требуется составить программу, находящую действительные корни квадратного уравнения ax2+bx+c=0 при заданных значениях коэффициентов a, b и c. Программа, реализующая эту задачу, представлена на рисунке 1:


Рис.1. Пример использования Goto

Текст этой программы можно взять здесь.

    Прокомментируем приведенный текст программы. Прежде чем использовать метку, ее необходимо описать. Для этого в декларации предназначена секция Label. Переход на метку abc осуществляется тогда, когда вычисленный дискриминант (значение переменной d) оказывается меньше нуля. Меткой abc помечен пустой оператор.


Пустым называется оператор, который не содержит символов, отделяется от других операторов символом ";" и используется, например, при организации условных и безусловных переходов в программе.

    Как правило, при составлении программ можно обойтись без использования оператора Goto. Приведем текст программы, решающей ту же задачу, но без использования Goto (рис.2):


Рис.2. Пример программы без использования Goto

Текст этой программы можно взять здесь.

    Если дискриминант окажется меньше нуля, то будет выведено сообщение: Действительных корней нет, и компьютер перейдет на End с точкой, так как это следующая конструкция, идущая после условной конструкции. Если дискриминант будет больше или равен нулю, проверяемое условие (d<0) окажется ложным, и компьютер пойдет на выполнение ветви Else, где вычисляются и выводятся на экран значения переменных x1, x2.

    На следующем шаге мы заканчиваем разбор условных и безусловных конструкций оператором варианта.


Предыдущий шаг Содержание Следующий шаг