creativeВот Вы пишете
Я сам одно время думал, что мол если написано в учебнике, что использование goto всегда плохо, значит так оно и есть. Но на практике я заметил, что в некоторых случаях goto вполне оправдан.
Видите ли, Вы очень плохо думаете, что можно во всем доверять учебникам. Советую в серьезных для Вас вещах читать несколько разных учебников и не только учебников. Только в сравнении разных мнений Вы приблизитесь к истине.
Что касается меня, то по структурному программированию я вообще не читал учебников. Единственная книга, которую я читал более 30 лет назад - это книга отцов-основателей Дал, Дейкстра, Хоор
Структурное программирование.
А зауважал их идеи где-то 20-25 лет назад, когда был начальником лаборатории программирования, а потом лаборатории ИИ. В значительной мере, под влиянием моих сотрудников. И убедился в правильности идеи на многолетнем опыте нашего коллектива.
Что касается Ваших примеров, посмотрел только первый (нет времени на просмотр всех). В этом примере я не смог увидеть полезность GOTO. Ведь ИМХО суть примера в следующем. У Вас есть цикл с двумя возможностями окончания, назовем их обычная и необычная. В первом случае Вы выходите из цикла обычным образом, затем
что-то делаете, а далее выполняете
заключительные действия после метки done. А во втором случае Вы "экстренно" выходите из цикла сразу к заключительным действиям, пропуская
что-то.
Я бы это сделал проще и нагляднее - ввел бы переменную "состояния" State, которой присвоил бы сразу значение "Нормально", а при наступлении особой ситуации - значение "Особый случай". Из цикла бы выходил только обычным образом. А после цикла - Вы уже догадались:
Код:
if (State = "Нормально")
выполнить
что-то. Да, у Вас появится лишняя переменная, но ИМХО она отражает суть происходящего в Вашей программе. И гораздо лучше, чем GOTO.
Если я неправильно понял смысл Вашего примера, поправьте меня, но суть моего замечания, надеюсь, Вам понятна.
ЗЫ. И напоминаю, что я не за запрет использования GOTO - используйте на здоровье, если Вам это кажется удобным. Но при этом проверяйте себя - так ли уж это Вам удобно, как кажется. Глядишь, и увидите, что это был (по Вашему выражению) костыль.