Учись программированию на C++ Builder бесплатно!

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

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

Метка в тексте программы обозначается идентификатором с последующим двоеточием. Метка отмечает точку, в которую передается управление оператором goto. Метка может располагаться в любом месте блока, как после оператора goto, передающего на нее управление, так и до этого оператора. Надо только иметь в виду, что передача управления извне внутрь цикла может приводить к непредсказуемым последствиям, так что таких ситуаций следует избегать. Метки можно использовать всюду в функции, в которой они появились, но на них нельзя ссылаться вне тела функции. Метки используются также в структурах switch (как метки case).

После метки следует оператор, на который передается управление. Сам оператор goto имеет форму:

goto метка;

Таким образом, организация работы с операторами goto может выглядеть, например, так:

 

goto L1;
second: ...
L1: ...
if (...) goto L1;
else goto second;

При этом, как видно, можно ссылаться на метки, расположенные после или до оператора goto.

Поделиться