Оператор безусловного перехода goto
Возвращаясь к сказанному об операторе goto4), необходимо отметить, что при всей его нежелательности все-таки существует ситуация, когда предпочтительно использовать именно этот оператор - как с точки зрения структурированности текста программы, так и с точки зрения логики ее построения, и уж тем более с точки зрения уменьшения трудозатрат программиста. Эта ситуация - необходимость передачи управления изнутри нескольких вложенных циклов на самый верхний уровень.
Дело в том, что процедуры break и continue прерывают только один цикл - тот, в теле которого они содержатся. Поэтому в упомянутой выше ситуации пришлось бы заметно усложнить текст программы, вводя много дополнительных прерываний. А один оператор goto способен заменить их все.
Сравните, например, два программно-эквивалентных отрывка:
write('Матрица '); write('Матрица '); for i:=1 to n do for i:=1 to n do begin for j:=1 to m do flag:=false; if a[i,j]>a[i,i] for j:=1 to m do then begin if a[i,j]>a[i,i] write('не '); then begin flag:=true; goto 1; write('не '); end; break; 1: writeln('обладает end свойством if flag then break; диагонального end; преобладания.'); writeln('обладает свойством диагонального преобладания.');