Здравствуйте, Кодёнок, Вы писали:
Кё>А если проверка условия состоит из 10 инструкций и не может быть записана выражением? А зависимость этих 10 инструкций от локальных переменных затруднит выделение его в локальную функцию? Для Оберона это особенно актуально.
Чего-чего? Вложенная процедура видит все локальные переменные объемлющей процедуры.
PROCEDURE Процедура;
VAR a, b, c: BOOLEAN;
i: INTEGER;
...
PROCEDURE условие1 (i: INTEGER): BOOLEAN;
VAR ....
BEGIN
...
RETURN ...
END условие1;
PROCEDURE условие2 (i: INTEGER): BOOLEAN;
VAR ....
BEGIN
...
RETURN ...
END условие2;
...
PROCEDURE условие (i: INTEGER): BOOLEAN;
BEGIN
RETURN условие1(i) & условие2(i) & ...
END условие;
BEGIN
...
WHILE (i < N) & условие(i) DO INC(i) END;
...
END Процедура;
т.е., теоретически, даже можно i не объявлять как параметр процедуры-функции условие(), ведь из неё i и так видно.
Здравствуйте, Кодёнок, Вы писали:
Кё>Здравствуйте, Сергей Губанов, Вы писали:
СГ>>Пора бы и прекратить предлагать иные варианты решения. Ведь, вообще-то, этоАвтор: Сергей Губанов
Дата: 31.03.06
классическая задача линейного поиска имеющая каноническое решение:
СГ>>i := 0;
СГ>>WHILE (i < N) & условие(i) DO INC(i) END;
СГ>>IF i < N THEN условие под номером i не выполнено END
Кё>А если проверка условия состоит из 10 инструкций и не может быть записана выражением? А зависимость этих 10 инструкций от локальных переменных затруднит выделение его в локальную функцию?
Тогда нажимаем кнопку "я сам себе и небо и луна" и пишем
уместный код.
А вообще, я например не чувствую, что пишу хуже Вирта или Страуструпа. Поэтому весь мой код — канонический, нет даже байта не-канонического кода.
Здравствуйте, zzzale, Вы писали:
Z>Я имею в виду случаи когда ДЕЙСТВИТЕЛЬНО была необходимость применять этот оператор (желательно с примером и описанием ПО).
Z>Интересуют прежде всего языки С++,С#.
Ну да... Бывает не всегда можешь нормально обяснить человеку, что... Ну в общем использовал
... << RSDN@Home 1.2.0 alpha rev. 645 на SQL Server'e :P>>
Здравствуйте, Cider, Вы писали:
C>Здравствуйте, Нахлобуч, Вы писали:
Н>>Здравствуйте, Сергей Губанов, Вы писали:
СГ>>>А Вы, пожалуйста, приведите какой-нибудь (канонический) пример в котором устранение goto с неизбежностью повлечёт введение лишнего булевского флага(ов).
Н>>Выйти из двух циклов разом?
C>Неизбежности нет. Например, оператор break (не помню, есть ли в плюсах break на метку).
Нет.
C>Можно бросить исключение.
За это — .
... << RSDN@Home 1.1.4 stable rev. 510>>
В годы учебы в Лицее однажды мне показалось, что без данного оператора не обойтись (для решения какой-то учебной задачки). Однако, его использование привело к очень скорому появлению "2" в журнале, поэтому с тех пор более его не использую
Здравствуйте, zzzale, Вы писали:
Z>Я имею в виду случаи когда ДЕЙСТВИТЕЛЬНО была необходимость применять этот оператор (желательно с примером и описанием ПО).
Z>Интересуют прежде всего языки С++,С#.... << RSDN@Home 1.1.4 stable SR1 rev. 568>>