Оператор безусловной передачи управления – предписатель для безусловного нарушения естественного хода выполнения программы в соответствии с требованием алгоритма.
Он реализует в программе указанные в алгоритме линии (стрелки) беспроверочных переходов. Например, переходы от блоков 6 к блокам 8 на условно-линейных схемах задачи об удельных нагрузках (рис. 4.4).
Структура оператора:
goto m;
, где goto – ключевое слово (идти к);
m – метка оператора, которому передаётся управление;
; – признак простого оператора.
Метка– буквенно-цифровое обозначение, позволяющее выделить (пометить) требуемый оператор в ряду других.
Правила составления и использования
Под меткой понимается идентификатор аналогичный имени переменной.
Идентификатор метки составляется пользователем произвольно, в ряду других меток программы.
Указанная в операторе goto метка записывается перед помечаемым оператором, отделяясь от него двоеточием.
Оператор, помеченный меткой m, может располагаться в соответствии с требованием алгоритма решения выше или ниже самого оператора goto, как указано в следующих фрагментах программы:
...
goto f3;
...
f3:v=0.36;
| ...
met2:scanf(...);
...
goto met2;
| ... goto t; t:x1=x; ... |
В первом фрагменте управление передаётся от оператора goto f3 вниз – оператору v = 0.36;, перед которым проставлена его метка. При этом расположенная между ними часть программы (последовательность операторов) выполнена не будет. Во втором - управление передаётся вверх на повторный ввод переменных. В третьем - управление передаётся следующему за goto оператору, что возможно, но бессмысленно, т. к. в этом случае естественный порядок следования операторов не нарушается.
Оператор, записанный под goto, должен быть помечен меткой другого оператора управления, иначе участок программы, записанный ниже goto, никогда не будет выполняться:
...
От другого goto A;
оператора B:x1=23.;
управления...
A:x2=x - 15.;
...
Метка m может проставляться только перед простым оператором. При необходимости передать управление на начало (конец) составного оператора (фигурную скобку) используется специальный пустой оператор (;). Он записывается над скобкой и помечается нужной меткой. Например:
| goto M1; ... M1:; {... | goto M2; ... M2:; }... |
ü Внимание! Использование оператора безусловной передачи управления допускается, но не поощряется правилами структурного программирования, т.к. позволяет создавать нестандартные структуры с немотивированными передачами управления.





goto f3;
...
f3:v=0.36;
met2:scanf(...);
...
goto met2;

