Последняя версия DataExpress 3 beta от 4 апреля 2020 года.
Изображение Скачать | Изображение Что нового?
См. также: Энциклопедия DX | Форум на develop-soft | Песочница
ИзображениеИзображениеИзображение

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

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

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

Сообщение Zenitchik » Вс апр 08, 2018 9:33 pm

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

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

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

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

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

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

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

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