LG>while(1)
LG>{
LG> for(int i = 0; i < 100; i++)
LG> {
LG> if(i == 77)
LG> // вот тут хочу выйти вообще из всех циклов - из for и из while
LG> }
LG>}
LG>
LG>Как это сделать?
bool b = true;
while(b)
{
for(int i = 0; i < 100; ++i)
{
if(i == 77)
{
b = false;
break;
}
}
}
Здравствуйте, Andrusha, Вы писали:
A>bool b = true; A>while(b) A>{ A> for(int i = 0; i < 100; ++i) A> { A> if(i == 77) A> { A> b = false; A> break; A> } A> } A>} A>[/ccode] A>Я бы так написАл...
У вас какие-то релегиозные счеты с goto?
этож надо так извращаться.
"A sign labeled `pit'? I walk up to it."
Re[3]: Выйти из двух циклов сразу
От:
Аноним
Дата:
20.04.03 11:42
Оценка:
Здравствуйте, Areex, Вы писали:
A>Здравствуйте, Andrusha, Вы писали:
A>bool b = true; A>while(b) A>{ A> for(int i = 0; i < 100; ++i) A> { A> if(i == 77) A> { A> b = false; A> break; A> } A> } A>} A>[/ccode] A>Я бы так написАл...
A>У вас какие-то релегиозные счеты с goto? A>этож надо так извращаться.
Просто большинство народу думает шблонами совершенно не прикладывая интеллекта: все говорят goto это для ламеров ну и вот чтоб не ударить в грязь лицом смело повторяют "goto это для ламеров".
AS>В-третьих, по поводу других предложенных методов. AS>1. Вспомогательная функция+выход по return. Поскольку функции по правилам C могут находиться в любом месте программы (в т. ч. в другом модуле), читателю совершенно непонятно, куда приведёт return. Эту ситуацию можно немного поправить, структурируя код и добавляя комментарии, но это не меняет сути — такой подход не способствует читабельности.
Это что ж, из функций по goto выходить?
Срочно подвесить за это!
Здравствуйте, Areex, Вы писали:
A>Здравствуйте, Andrusha, Вы писали:
A>>bool b = true; A>>while(b) A>>{ A>> for(int i = 0; i < 100; ++i) A>> { A>> if(i == 77) A>> { A>> b = false; A>> break; A>> } A>> } A>>} A>> A>>Я бы так написАл...
A>У вас какие-то релегиозные счеты с goto? A>этож надо так извращаться.
Та нее, но, если я не ошибаюсь, то такой код всего лишь один дополнительный такт,
процессора на одну итерацию. Зато сразу видно куда, мы попадаем после завершения цикла, и не надо искать куда goto собственно смотрит.
Насчёт религии...
Сколько пишу проги, пока не было не одного случая когда пришлось специально извращаться, что бы избавиться от goto — хотя я может уже сразу без него мыслю.
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, Areex, Вы писали:
A>>У вас какие-то релегиозные счеты с goto? A>>этож надо так извращаться.
WH>Лично у меня нет. Но необходимости в этом слове у меня давно не наблюдается.
Это как посмотреть. break и Co это вырожденный случай goto, только метки не требует.
Следует медитировать по просветления, что вырожденный случай так же читабелен как и общий.
В качестве мантры можете читать Стауструпа. "...Одно из немногих разумных применений состоит в выходе из вложенного цикла или переключателя (break лишь прекращает выполнение самого внутреннего охватывающего его цикла или переключателя). Например:..."
Здравствуйте, Areex, Вы писали:
A>Здравствуйте, WolfHound, Вы писали:
WH>>Здравствуйте, Areex, Вы писали:
A>>>У вас какие-то релегиозные счеты с goto? A>>>этож надо так извращаться.
WH>>Лично у меня нет. Но необходимости в этом слове у меня давно не наблюдается.
A>Это как посмотреть. break и Co это вырожденный случай goto, только метки не требует. A>Следует медитировать по просветления, что вырожденный случай так же читабелен как и общий. A>В качестве мантры можете читать Стауструпа. A>"...Одно из немногих разумных применений состоит в выходе из вложенного цикла или переключателя (break лишь прекращает выполнение самого внутреннего охватывающего его цикла или переключателя). Например:..." A>
A>
A>
Кстати, а почему бы тогда не сделать: break n, где n — уроаень вложенности. По-моему в каком-то языке так и есть (PHP?)
Здравствуйте, WFrag, Вы писали:
WF>Кстати, а почему бы тогда не сделать: break n, где n — уроаень вложенности. По-моему в каком-то языке так и есть (PHP?)
А нахрена, если уже есть goto? Сейчас уже позняк метаться.
К тому же метка уж сто пудово нагляднее, чем вложенности считать.
"Ok, the dragon's asleep. You guys wait back here with bows and stuff. Getafix and I will go up in front of it and cast light on it's eyes to blind him, then we'll blow his brains out with psionics."
Здравствуйте, Areex, Вы писали:
A>Это как посмотреть. break и Co это вырожденный случай goto, только метки не требует.
Тут надо смотреть но скорее всего я вынесу это в отдельную функцию и воспользуюсь return'ом.
Вобще последнее время мои программы это куча мелких в основном шаблонных классов с несколькими мелкими часто шаблонными функциями.
Это я к тому что когда функция ~10 строк то goto не к чему.
... << RSDN@Home 1.0 beta 5 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, folk, Вы писали:
F>Выйти из двух циклов сразу — это фигня. Вот зайти — для настоящих профессионалов. F>Как вы это обычно делаете?
Нууу.... Как бы тебе сказать.....
... << RSDN@Home 1.0 beta 5 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, Areex, Вы писали:
A>>Это как посмотреть. break и Co это вырожденный случай goto, только метки не требует. WH>Тут надо смотреть но скорее всего я вынесу это в отдельную функцию и воспользуюсь return'ом. WH>Вобще последнее время мои программы это куча мелких в основном шаблонных классов с несколькими мелкими часто шаблонными функциями. WH>Это я к тому что когда функция ~10 строк то goto не к чему.
Я не про то. Если ты пользуешся break&continue, ты используешь goto, путь и не явно. Следовательно ни о каком исключении goto из программ и речи быть не может.
Использование же специальных конструкций для того, что бы избежать goto, есть ни что иное как победа догм над здравым смыслом. Я тут почитал всю ветку, над пёрлами типа throw рыдал просто. Нет, что бы придумать конструкцию, когда от goto избавляться не надо. Я в общем с паталогом согласен, на 100%.
Здравствуйте, WFrag, Вы писали:
WF>Кстати, а почему бы тогда не сделать: break n, где n — уроаень вложенности. По-моему в каком-то языке так и есть (PHP?)
а ежели добавишь вложенность, то давай искать break n, чтоб поправить, помоему не удачно спроектированный язык, появляется потенциальная возможность появления ошибок, надо постоянно понить есть ли во вложенном коде break!
Здравствуйте, Areex, Вы писали:
A>Я не про то. Если ты пользуешся break&continue, ты используешь goto, путь и не явно.
Как можно неявно использовать goto? Или есть goto в коде или нет, а то что оно возможно разложиться в один код, так это только твои догадки...
Здравствуйте, eaa, Вы писали:
eaa>Здравствуйте, Areex, Вы писали:
A>>Я не про то. Если ты пользуешся break&continue, ты используешь goto, путь и не явно. eaa>Как можно неявно использовать goto? Или есть goto в коде или нет, а то что оно возможно разложиться в один код, так это только твои догадки...
while(1)
{
if (a!=b) break;
else goto out_of_cycle;
}
out_of_cycle:
Здравствуйте, WFrag, Вы писали:
WF>А еще через goto можно разложить if, do...while, и.т.д.
WF>Так что это не аргумент. goto есть goto, а не break, continue,...
Читай внимательнее. break это goto, а не goto это break.
Причем тут твой пример я вообще не понял.
"We'll untie the prisoners and lock them in the closet."