![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 26.10.2009
Сообщений: 170
|
![]()
Как-то раз использовал бесконечный цикл с условием выхода в теле . Через какое - то время подошел коллега и сказал, что поменял конструкцию на традиционную (с условием в while), что мол так программировать нельзя, признак дурного тона, что можно забыть (!) про выход из цикла и тд. У кого какое мнение на этот счет?
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 06.08.2009
Сообщений: 2,992
|
![]()
while(true) - общепринятая конструкция. Ей оформлен основной цикл всех движков id Software.
http://fabiensanglard.net/quake3 http://fabiensanglard.net/doom3 Последний раз редактировалось ds.Dante; 12.02.2014 в 14:08. |
![]() |
![]() |
![]() |
#3 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,863
|
![]()
Есть 4 типа циклов:
1. Со счетчиком (параметром) - повторяется заранее заданное число раз. 2. С предусловием - условие выхода стоит вначале цикла. 3. С постусловием - условие выхода в конце. 4. С инусловием - условие выхода в середине тела цикла. Так вот четвертый тип не реализован во многих языках специальными языковыми конструкциями, однако легко моделируется с помощью while (true) и break. E-Mail: arigato.freelance@gmail.com
|
![]() |
![]() |
![]() |
#4 | |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
![]() Цитата:
Когда вы пишете бесконечный цикл, то вы должны осознавать, что это за собой влечет. Ваш коллега прав только в случае если условие выхода только одно. А если условий несколько - уже в принципе бесполезно городить огромные условия в while. |
|
![]() |
![]() |
![]() |
#5 |
Участник клуба
Регистрация: 04.04.2010
Сообщений: 1,554
|
![]()
я всегда так пишу, т.к. короче.
Код:
|
![]() |
![]() |
![]() |
#6 | |
Участник клуба
Регистрация: 21.11.2007
Сообщений: 1,692
|
![]()
Почему бы к goto не вернуться? Да и вы нарушаете идею структурного программирования (со всеми вытекающими), где исключены всякие continue, break ...
Цитата:
![]() |
|
![]() |
![]() |
![]() |
#7 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,863
|
![]()
Kostia, некорректное высказывание: "цикл — многократное исполнение одной и той же операции до тех пор, пока выполняется некоторое заданное условие (условие продолжения цикла)."
Кроме того цикл может содержать как условие продолжение, так и условие выхода. В этом контексте break никак не нарушает никаких идей, потому как запись: if <условие> then break; или же until <условие>; По сути означают одно и тоже. Почему тогда первый способ что-то нарушает, а второй - нет? E-Mail: arigato.freelance@gmail.com
|
![]() |
![]() |
![]() |
#8 | |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]() Цитата:
Если правильно понимаю, конструкцияновых Delphi: for X in Y do и C++ foreach как раз для этого придумали. или вы говорите о том, когда размер Y не известен а выход по условию нужен? |
|
![]() |
![]() |
![]() |
#9 | |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,091
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#10 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]() Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Основные управляющие конструкции языка Delphi. Конструкция присваивания. Условная конструкция. Конструкция множественного выбора. | nadyaH | Помощь студентам | 3 | 23.11.2013 22:19 |
конструкция if else | Emperator12 | Общие вопросы Delphi | 7 | 26.09.2012 08:19 |
конструкция if else | Emperator12 | Общие вопросы Delphi | 2 | 23.09.2012 11:36 |
Конструкция if | GBAXA | Общие вопросы Delphi | 5 | 04.08.2010 15:12 |
Конструкция try..except | anGeee | Общие вопросы Delphi | 2 | 21.05.2009 11:34 |