GOTO
Материал из Википедии — свободной энциклопедии
GOTO (англ. go to — «перейти к») — в некоторых языках программирования — оператор перехода к определённой точке программы, обозначенной номером строки либо меткой. Это основная операция по переносу контроля исполнения из одной части программы в другую, поскольку компиляторы транслируют другие операторы контроля исполнения в эффективные GOTO.
GOTO имеется в Фортране, Алголе, КОБОЛе, Snobol, Бейсике, Лиспе, Си, C++, D, Паскале, Perl, а также во многих других языках, в особенности, в ассемблере. В языке ассемблера, эквивалент для GOTO обычно называется JMP
, JUMP
или BRA
.
GOTO отсутствует в некоторых языках высокого уровня. В частности, в Java имеется зарезервированное слово goto, но оно не несёт никакой функции.
[править] Критика
Оператор GOTO в языках высокого уровня является объектом критики, поскольку чрезмерное применение операторов GOTO приводит к созданию нечитаемого и неподдерживаемого «спагетти-кода».
Оператор GOTO широко использовался в Бейсике (из-за чего, возможно, Э. Дейкстра и сказал об умственной деградации студентов, изучавших Бейсик), однако применение этого оператора не рекомендуется: оно недопустимо в структурном программировании.
Тем не менее, в языках, где операторы break
и continue
могут относится только к самому вложенному циклу, использование goto
иногда допустимо, так как значительно упрощает задачу (например избавляя от необходимости создания вспомогательных переменных и операторов условия). В языках с поддержкой исключений также можно использовать блок try ... catch
(try ... except
) и оператор throw
(raise
), но это может отрицательно сказаться на производительности, если этот участок кода вызывается многократно в ходе выполнения программы.