Каким циклом вы больше любите пользоваться? - страница 4

 
Vitalii Ananev:

Цикл while еще делится на два подвида: с постусловием - с начало один проход цикла потом проверка условия;   и предусловием - с начало проверка условия выхода из цикла затем сам цикл. Цикл с предусловием может не выполнится ни разу если условие ложно, с постусловием минимум один раз выполнится.


В

for

 всё это тоже делается ...

 

Скажу известную статистику. Пошаговый цикл for со счётчиком есть практически во всех языках программирования, именно его и используют чаще всего. Как-то один разработчик новой системы программирования Оберон заявил, что цикл for - "маргинальный", лишний, и свою новую систему программирования Оберон он создаёт без цикла for. Но так продолжалось недолго. После некоторого времени работы этой новой системы программирования, вышла новая система Оберон-2. Она уже содержала в себе этот "маргинальный" пошаговый цикл for. История любит улыбаться.

 
Alexander Ivanov:
Очень плохо что нет тут - GOTO как в бейсике.

Программисты оператор GOTO называют позорным и стараются его не применять. Это восходит ещё к 1960-тым годам, когда наблюдался кризис разработок программных систем. То есть программирование больших программных систем не укладывалось в сроки, а когда большую систему заканчивали, то в ней обнаруживалось очень много смысловых ошибок.

 
Victor Ziborov:

Программисты оператор GOTO называют позорным и стараются его не применять. Это восходит ещё к 1960-тым годам, когда наблюдался кризис разработок программных систем. То есть программирование больших программных систем не укладывалось в сроки, а когда большую систему заканчивали, то в ней обнаруживалось очень много смысловых ошибок.

Тогда жил некто Дийкстра, который утверждал, что этот кризис вызван применением оператора GOTO. Программа с многочисленными GOTO похожа на спагетти. И чтобы программисту отследить передачу управления в программе, нужно как при чтении книги: прочитать первые три страницы, потом, с 24 по 27, потом вернуться 11 и 12Б и т.д. В кажестве замены GOTO Дийкстра предложил так называемое структурное программирование. То есть в любой ситуации использовать только три управляющих структуры: простая последовательность, ветвление и цикл. И никаких GOTO !
 
Victor Ziborov:
Тогда жил некто Дийкстра, который утверждал, что этот кризис вызван применением оператора GOTO. Программа с многочисленными GOTO похожа на спагетти. И чтобы программисту отследить передачу управления в программе, нужно как при чтении книги: прочитать первые три страницы, потом, с 24 по 27, потом вернуться 11 и 12Б и т.д. В кажестве замены GOTO Дийкстра предложил так называемое структурное программирование. То есть в любой ситуации использовать все три управляющих структуры: простая последовательность, ветвление и цикл. И никаких GOTO !

Сначала над Дийкстрой смеялись, а теперь использование структурного программирования - это хороший стиль. А кто им не пользуется, тот весь в ошибках, как в шелках. 

 
Victor Ziborov:

Сначала над Дийкстрой смеялись, а теперь использование структурного программирования - это хороший стиль. А кто им не пользуется, тот весь в ошибках, как в шелках. 

Интересно, а как эти счастливчики обходятся без условных операторов, которые и означают переходы по метке (метка "ELSE", метка "{" и т.д.)?

Иногда, и часто, проще написать без меток, но иногда проще и надежнее с метками. Например, выскочить из вложенного цикла.

 
Vladimir:

Интересно, а как эти счастливчики обходятся без условных операторов, которые и означают переходы по метке (метка "ELSE", метка "{" и т.д.)?

Иногда, и часто, проще написать без меток, но иногда проще и надежнее с метками. Например, выскочить из вложенного цикла.


Что бы выйти из цикла достаточно оператора break. А использование операторов безусловного перехода действительно считается плохим стилем программирования.

 
Nikolay Gaylis:

В

 всё это тоже делается ...


Я и без вас это знаю, читайте внимательно ветку и поймете что я пытался сказать.

 
Vitalii Ananev:

Что бы выйти из цикла достаточно оператора break. А использование операторов безусловного перехода действительно считается плохим стилем программирования.

Я говорил о выходе из вложенного цикла, с перескоком через уровень вложения. Очень интересно, как это сделать одним оператором break. Покажете?

Сам break, кстати, и есть оператор безусловного перехода. Если кому нравится, можно считать его использование "плохим стилем программирования".

 
Vladimir:

Я говорил о выходе из вложенного цикла, с перескоком через уровень вложения. Очень интересно, как это сделать одним оператором break. Покажете?

Сам break, кстати, и есть оператор безусловного перехода. Если кому нравится, можно считать его использование "плохим стилем программирования".


В вашем первом сообщении о количестве вложенных циклах не было не слова. Естественно в данном случае одного оператора break будет мало. Но можно и цикл организовать по другому. Оператор break это оператор прерывающий цикл, и передающий управление следующей строке кода после цикла, а не оператор безусловного перехода, которым можно передать управление любой другой строке кода. 

bool func1()
{
  while(...)
  {
    if (условие выхода из вложенного цикла) return(true);
  }
  return(false);
}

void func2()
{
   while(...)
   {
     if (func1()) break;
   }
}
Причина обращения: