Страница 1 из 1

Оператор goto противоречит принципам технологии структурного программирования.

Добавлено: Вс апр 08, 2018 9:33 pm
Zenitchik
Оператор goto противоречит принципам технологии структурного программирования. Современные языки программирования не имеют в своем составе такого оператора, и в его использовании нет необходимости.

Есть один нюанс: автоматное программирование.
Конечный автомат, как известно, описывается графом переходов. Граф переходов очень плохо вписывается в концепцию структурного программирования.
Если компилятор оптимизирует хвостовую рекурсию, то в операторе goto действительно нет необходимости - каждое состояние может быть описано отдельной функцией. Если же этого не происходит, то разумный способ избежать ненужного заполнения стека - использовать для переходов между состояниями оператор goto.
В тех языках, в которых нет ни оператора goto, ни хвостовой рекурсии - приходится строить разные костыльные решения, например, помещать case в цикл и на каждой итерации ветвить по номеру состояния.

Кстати говоря, из блока case действительно нельзя goto, или я что-то недопонял?

Re: Оператор goto противоречит принципам технологии структурного программирования.

Добавлено: Пн апр 09, 2018 8:07 am
admin
Zenitchik писал(а):Кстати говоря, из блока case действительно нельзя goto, или я что-то недопонял?

Не тестировал.