Операторы, как было уже сказано в параграфе 1.1, представляют собой действия, выполняемые программой. ТП определяет набор операторов, которого вполне достаточно для реализации любых конструкций языков программирования.
Оператор::=[метка ":"] [(простой_оператор | структурный_оператор )]
Перед каждым оператором может находится метка, используемая для перехода в эту точку программы из другой точки с использование оператора перехода.Простой_оператор::=оператор_присваивания |
оператор процедуры |
оператор перехода.
Оператор присваивания и оператор вызова процедуры были подробно разобраны в параграфе 1.3.3.
Оператор перехода позволяет передать управление оператору, которому предшествует метка. Любая метка, используемая в блоке, должна быть в этом блоке и объявлена. Для этого требуется воспользоваться разделом объявления меток (см. параграф 1.3.3).
Раздел_объявления_меток:= "LABEL" Метка {"," Метка}";".
Оператор_перехода::= "goto" метка.
Например:
label xxx1,12;
var x:integer;
begin
…
xxx1: x:=7;
…
goto 12;
…
12:
x:=x+1;
goto xxx1;
…
end.
Не допускаются переходы из одного блока в другой, вне зависимости от его уровня вложенности.
Оператор goto позволяет легко перемещаться по программе, однако злоупотребление им приводит к нежелательным результатам. Применение goto ухудшает читабельность программы, создает значительные трудности при попытках анализа ее структуры, затрудняет отладку и тестирование, является источником трудноуловимых ошибок. В разделах математики, посвященных программированию, доказывается, что ЛЮБАЯ программа может быть создана без использования оператора goto. Применяйте goto только в тех случаях, когда с его помощью можно значительно сократить размер программы.