Последняя версия DataExpress 2021.10.21

Изображение Скачать | Изображение Что нового?

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

Справочная информация, руководства, видеоматериалы от пользователей DataExpress.
Zenitchik
Интересующийся
Сообщения: 66
Зарегистрирован: 08 мар 2018, 01:07

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

Сообщение Zenitchik » 08 апр 2018, 21:33

Оператор goto противоречит принципам технологии структурного программирования. Современные языки программирования не имеют в своем составе такого оператора, и в его использовании нет необходимости.

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

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

Аватара пользователя
admin
Разработчик
Сообщения: 5936
Зарегистрирован: 14 мар 2016, 11:32
Откуда: Ленинградская
Благодарил (а): 74 раза
Поблагодарили: 591 раз

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

Сообщение admin » 09 апр 2018, 08:07

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

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


Вернуться в «Справочная»