Re[13]: Приходилось ли вам использовать goto?
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 12.04.06 10:55
Оценка:
Здравствуйте, Кодёнок, Вы писали:

Кё>А если проверка условия состоит из 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 и так видно.
Re[14]: Приходилось ли вам использовать goto?
От: Кодёнок  
Дата: 12.04.06 12:14
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Чего-чего? Вложенная процедура видит все локальные переменные объемлющей процедуры.


СГ>PROCEDURE Процедура;

СГ> i: INTEGER;
СГ> PROCEDURE условие1 (i: INTEGER): BOOLEAN;
СГ>т.е., теоретически, даже можно i не объявлять как параметр процедуры-функции условие(), ведь из неё i и так видно.

Действительно, это я напутал.
Re[13]: Приходилось ли вам использовать goto?
От: Kluev  
Дата: 12.04.06 12:21
Оценка:
Здравствуйте, Кодёнок, Вы писали:

Кё>Здравствуйте, Сергей Губанов, Вы писали:


СГ>>Пора бы и прекратить предлагать иные варианты решения. Ведь, вообще-то, это
Автор: Сергей Губанов
Дата: 31.03.06
классическая задача линейного поиска имеющая каноническое решение:


СГ>>i := 0;

СГ>>WHILE (i < N) & условие(i) DO INC(i) END;
СГ>>IF i < N THEN условие под номером i не выполнено END

Кё>А если проверка условия состоит из 10 инструкций и не может быть записана выражением? А зависимость этих 10 инструкций от локальных переменных затруднит выделение его в локальную функцию?


Тогда нажимаем кнопку "я сам себе и небо и луна" и пишем уместный код.

А вообще, я например не чувствую, что пишу хуже Вирта или Страуструпа. Поэтому весь мой код — канонический, нет даже байта не-канонического кода.
Re: Приходилось ли вам использовать goto?
От: dead_ricky  
Дата: 14.04.06 00:56
Оценка:
Здравствуйте, zzzale, Вы писали:

Z>Я имею в виду случаи когда ДЕЙСТВИТЕЛЬНО была необходимость применять этот оператор (желательно с примером и описанием ПО).

Z>Интересуют прежде всего языки С++,С#.

Ну да... Бывает не всегда можешь нормально обяснить человеку, что... Ну в общем использовал
... << RSDN@Home 1.2.0 alpha rev. 645 на SQL Server'e :P>>
Re[5]: Приходилось ли вам использовать goto?
От: Ka3a4oK  
Дата: 21.05.06 09:13
Оценка:
Здравствуйте, Cider, Вы писали:

C>Здравствуйте, Нахлобуч, Вы писали:


Н>>Здравствуйте, Сергей Губанов, Вы писали:


СГ>>>А Вы, пожалуйста, приведите какой-нибудь (канонический) пример в котором устранение goto с неизбежностью повлечёт введение лишнего булевского флага(ов).


Н>>Выйти из двух циклов разом?


C>Неизбежности нет. Например, оператор break (не помню, есть ли в плюсах break на метку).

Нет.

C>Можно бросить исключение.

За это — .
... << RSDN@Home 1.1.4 stable rev. 510>>
Re: Приходилось ли вам использовать goto?
От: Nazik Россия  
Дата: 21.05.06 09:31
Оценка:
В годы учебы в Лицее однажды мне показалось, что без данного оператора не обойтись (для решения какой-то учебной задачки). Однако, его использование привело к очень скорому появлению "2" в журнале, поэтому с тех пор более его не использую

Здравствуйте, zzzale, Вы писали:

Z>Я имею в виду случаи когда ДЕЙСТВИТЕЛЬНО была необходимость применять этот оператор (желательно с примером и описанием ПО).

Z>Интересуют прежде всего языки С++,С#.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.