Re[8]: Выйти из двух циклов сразу
От: scorpio_cat Россия  
Дата: 31.03.03 05:43
Оценка:
Здравствуйте, Virus-5000, Вы писали:

V5>Я вообще вспомнил, что есть такой оператор, только зайдя сюда, а так и не вспомнил бы ни за что


... << RSDN@Home 1.0 beta 6a >>
Re[18]: Выйти из двух циклов сразу
От: Аноним  
Дата: 18.04.03 12:56
Оценка:
Отвернись — я пока напечатаю ...
Re: Выйти из двух циклов сразу
От: Andrusha  
Дата: 19.04.03 19:58
Оценка:
Здравствуйте, LeonGorbachev, Вы писали:



LG>
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;
    }
  }
}

Я бы так написАл...
... << RSDN@Home 1.0 beta 6a >>
Re[2]: Выйти из двух циклов сразу
От: Areex  
Дата: 20.04.03 09:57
Оценка:
Здравствуйте, 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 это для ламеров".
Re[3]: Выйти из двух циклов сразу
От: WolfHound  
Дата: 20.04.03 19:28
Оценка:
Здравствуйте, Areex, Вы писали:

A>У вас какие-то релегиозные счеты с goto?

A>этож надо так извращаться.

Лично у меня нет. Но необходимости в этом слове у меня давно не наблюдается.
... << RSDN@Home 1.0 beta 5 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[11]: Выйти из двух циклов сразу
От: mihailik Украина  
Дата: 21.04.03 07:22
Оценка: -1
AS>В-третьих, по поводу других предложенных методов.
AS>1. Вспомогательная функция+выход по return. Поскольку функции по правилам C могут находиться в любом месте программы (в т. ч. в другом модуле), читателю совершенно непонятно, куда приведёт return. Эту ситуацию можно немного поправить, структурируя код и добавляя комментарии, но это не меняет сути — такой подход не способствует читабельности.

Это что ж, из функций по goto выходить?
Срочно подвесить за это!
... << RSDN@Home 1.0 beta 6a >>
Re[3]: Выйти из двух циклов сразу
От: Andrusha  
Дата: 21.04.03 18:34
Оценка:
Здравствуйте, 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 — хотя я может уже сразу без него мыслю.
... << RSDN@Home 1.0 beta 6a >>
Re: А зайти?
От: folk Россия  
Дата: 21.04.03 22:27
Оценка: 18 (1) :)
Выйти из двух циклов сразу — это фигня. Вот зайти — для настоящих профессионалов.
Как вы это обычно делаете?
На самом деле, люди не читают газеты, они принимают их каждое утро, так же как ванну. ©Маршалл Мак-Льюэн
Re[4]: Выйти из двух циклов сразу
От: Areex  
Дата: 22.04.03 09:58
Оценка:
Здравствуйте, WolfHound, Вы писали:

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


A>>У вас какие-то релегиозные счеты с goto?

A>>этож надо так извращаться.

WH>Лично у меня нет. Но необходимости в этом слове у меня давно не наблюдается.


Это как посмотреть. break и Co это вырожденный случай goto, только метки не требует.
Следует медитировать по просветления, что вырожденный случай так же читабелен как и общий.
В качестве мантры можете читать Стауструпа.
"...Одно из немногих разумных применений состоит в выходе из вложенного цикла или переключателя (break лишь прекращает выполнение самого внутреннего охватывающего его цикла или переключателя). Например:..."
"Come on, we haven't found any traps so far."
Re[5]: Выйти из двух циклов сразу
От: WFrag США  
Дата: 22.04.03 10:20
Оценка:
Здравствуйте, Areex, Вы писали:

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


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


A>>>У вас какие-то релегиозные счеты с goto?

A>>>этож надо так извращаться.

WH>>Лично у меня нет. Но необходимости в этом слове у меня давно не наблюдается.


A>Это как посмотреть. break и Co это вырожденный случай goto, только метки не требует.

A>Следует медитировать по просветления, что вырожденный случай так же читабелен как и общий.
A>В качестве мантры можете читать Стауструпа.
A>"...Одно из немногих разумных применений состоит в выходе из вложенного цикла или переключателя (break лишь прекращает выполнение самого внутреннего охватывающего его цикла или переключателя). Например:..."
A>


A>


A>


Кстати, а почему бы тогда не сделать: break n, где n — уроаень вложенности. По-моему в каком-то языке так и есть (PHP?)
... << RSDN@Home 1.0 beta 6a >>
Re[6]: Выйти из двух циклов сразу
От: Areex  
Дата: 22.04.03 11:53
Оценка:
Здравствуйте, 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."
Re[5]: Выйти из двух циклов сразу
От: WolfHound  
Дата: 22.04.03 18:06
Оценка:
Здравствуйте, Areex, Вы писали:

A>Это как посмотреть. break и Co это вырожденный случай goto, только метки не требует.

Тут надо смотреть но скорее всего я вынесу это в отдельную функцию и воспользуюсь return'ом.
Вобще последнее время мои программы это куча мелких в основном шаблонных классов с несколькими мелкими часто шаблонными функциями.
Это я к тому что когда функция ~10 строк то goto не к чему.
... << RSDN@Home 1.0 beta 5 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[2]: А зайти?
От: WolfHound  
Дата: 22.04.03 18:06
Оценка:
Здравствуйте, folk, Вы писали:

F>Выйти из двух циклов сразу — это фигня. Вот зайти — для настоящих профессионалов.

F>Как вы это обычно делаете?
Нууу.... Как бы тебе сказать.....
... << RSDN@Home 1.0 beta 5 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[6]: Выйти из двух циклов сразу
От: Areex  
Дата: 23.04.03 06:20
Оценка:
Здравствуйте, WolfHound, Вы писали:

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


A>>Это как посмотреть. break и Co это вырожденный случай goto, только метки не требует.

WH>Тут надо смотреть но скорее всего я вынесу это в отдельную функцию и воспользуюсь return'ом.
WH>Вобще последнее время мои программы это куча мелких в основном шаблонных классов с несколькими мелкими часто шаблонными функциями.
WH>Это я к тому что когда функция ~10 строк то goto не к чему.

Я не про то. Если ты пользуешся break&continue, ты используешь goto, путь и не явно. Следовательно ни о каком исключении goto из программ и речи быть не может.
Использование же специальных конструкций для того, что бы избежать goto, есть ни что иное как победа догм над здравым смыслом. Я тут почитал всю ветку, над пёрлами типа throw рыдал просто. Нет, что бы придумать конструкцию, когда от goto избавляться не надо. Я в общем с паталогом согласен, на 100%.
"Why is your torch flame turning blue?"
Re[6]: Выйти из двух циклов сразу
От: Plague Россия 177230800
Дата: 23.04.03 06:31
Оценка:
Здравствуйте, WFrag, Вы писали:

WF>Кстати, а почему бы тогда не сделать: break n, где n — уроаень вложенности. По-моему в каком-то языке так и есть (PHP?)


а ежели добавишь вложенность, то давай искать break n, чтоб поправить, помоему не удачно спроектированный язык, появляется потенциальная возможность появления ошибок, надо постоянно понить есть ли во вложенном коде break!
... << RSDN@Home 1.0 beta 6 >>
Re[7]: Выйти из двух циклов сразу
От: eaa Украина  
Дата: 23.04.03 13:41
Оценка: :)
Здравствуйте, Areex, Вы писали:

A>Я не про то. Если ты пользуешся break&continue, ты используешь goto, путь и не явно.

Как можно неявно использовать goto? Или есть goto в коде или нет, а то что оно возможно разложиться в один код, так это только твои догадки...
... << RSDN@Home 1.0 beta 6a >>
Re[8]: Выйти из двух циклов сразу
От: Areex  
Дата: 23.04.03 14:23
Оценка:
Здравствуйте, eaa, Вы писали:

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


A>>Я не про то. Если ты пользуешся break&continue, ты используешь goto, путь и не явно.

eaa>Как можно неявно использовать goto? Или есть goto в коде или нет, а то что оно возможно разложиться в один код, так это только твои догадки...

while(1)
{
    if (a!=b) break;
    else goto out_of_cycle;
}
out_of_cycle:


Нади отличие. Догадки блин...
"Come on, we haven't found any traps so far."
Re[9]: Выйти из двух циклов сразу
От: WFrag США  
Дата: 23.04.03 14:49
Оценка:
Здравствуйте, Areex, Вы писали:

A>Нади отличие. Догадки блин...


Может еще вот так?
while(1)
{
    // some code
}

и

cycle:
    // same some code
goto cycle;


А еще через goto можно разложить if, do...while, и.т.д.

Так что это не аргумент. goto есть goto, а не break, continue,...
... << RSDN@Home 1.0 beta 6a >>
Re[10]: Выйти из двух циклов сразу
От: Areex  
Дата: 23.04.03 14:58
Оценка:
Здравствуйте, 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."
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.