powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Выйти из двух циклов в С
25 сообщений из 44, страница 1 из 2
Выйти из двух циклов в С
    #39664813
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как мне красиво выйти из двух циклов? Без condition2.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
for (i=0; i<100; i++)
{
    for (j=0; j<100; j++)
    {
        if (condition1)
        {
            condition2 = 1;
            break; 
        }

        if (condition2)
            break;
    }
}
...
Рейтинг: 0 / 0
Выйти из двух циклов в С
    #39664816
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ошибся. правильно так.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
for (i=0; i<100; i++)
{
    for (j=0; j<100; j++)
    {
        if (condition1)
        {
            condition2 = 1;
            break; 
        }
    }

     if (condition2)
        break;
}
...
Рейтинг: 0 / 0
Выйти из двух циклов в С
    #39664818
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну разве что goto
...
Рейтинг: 0 / 0
Выйти из двух циклов в С
    #39664822
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
i = 100;
break;
...
Рейтинг: 0 / 0
Выйти из двух циклов в С
    #39664824
d7i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
заменить for на while...
...
Рейтинг: 0 / 0
Выйти из двух циклов в С
    #39664836
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да. goto единственное решение. спасибо.
...
Рейтинг: 0 / 0
Выйти из двух циклов в С
    #39664837
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T
Код: plaintext
1.
2.
i = 100;
break;



аааа....хитро. спасибо :)
...
Рейтинг: 0 / 0
Выйти из двух циклов в С
    #39664921
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо когда желание структурно программировать не превращается в goto-фобию.
...
Рейтинг: 0 / 0
Выйти из двух циклов в С
    #39664952
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7Как мне красиво выйти из двух циклов? Без condition2.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
for (i=0; i<100; i++)
{
    for (j=0; j<100; j++)
    {
        if (condition1)
        {
            condition2 = 1;
            break; 
        }

        if (condition2)
            break;
    }
}


goto
...
Рейтинг: 0 / 0
Выйти из двух циклов в С
    #39664959
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonХорошо когда желание структурно программировать не превращается в goto-фобию.
это запутывающее существо дела утверждение.

А оно здесь в том, что цикл for не являются частью разрешенных в структурном программировании конструкций.

Раз этот пример не следует рецептам структурного программирования, то его и нарушить здесь применением goto нельзя .
...
Рейтинг: 0 / 0
Выйти из двух циклов в С
    #39664961
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7Dima T
Код: plaintext
1.
2.
i = 100;
break;




аааа....хитро. спасибо :)

Это не «хитро». Это откровенное плохо пахнущий код.

Для выхода из N вложенных циклов конечно можно использовать GOTO, но его необходимость ещё потребуется обосновать, ведь достаточно весь цикл положить в функцию и выходить из всех циклов через return. Это и решает задачу, и способствуют эффективному структурированию кода.
...
Рейтинг: 0 / 0
Выйти из двух циклов в С
    #39664966
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt...
Для выхода из N вложенных циклов конечно можно использовать GOTO, но его необходимость ещё потребуется обосновать, ведь достаточно весь цикл положить в функцию и выходить из всех циклов через return.
...

это пять баллов за "структурирование кода".
...
Рейтинг: 0 / 0
Выйти из двух циклов в С
    #39664967
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boobymaytonХорошо когда желание структурно программировать не превращается в goto-фобию.
это запутывающее существо дела утверждение.

А оно здесь в том, что цикл for не являются частью разрешенных в структурном программировании конструкций.

Раз этот пример не следует рецептам структурного программирования, то его и нарушить здесь применением goto нельзя .Прошу предъявить источник знаний, кто же фор запретил.
boobyhVostt...
Для выхода из N вложенных циклов конечно можно использовать GOTO, но его необходимость ещё потребуется обосновать, ведь достаточно весь цикл положить в функцию и выходить из всех циклов через return.
...

это пять баллов за "структурирование кода".Аналогично, ваши измышления хотелось бы подтвердить нормальными учебниками.
...
Рейтинг: 0 / 0
Выйти из двух циклов в С
    #39664974
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl,

что ты называешь измышлениями?
и по твоему тоже "структурное программирование" подразумевает множественность возвратов из блока кода?

может, укажешь "учебник", где такому структурному программированию учат.
...
Рейтинг: 0 / 0
Выйти из двух циклов в С
    #39664979
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby,

твои предположения о "неправильности".

И если ты пишешь, о "for - не являются частью разрешенных в структурном программировании конструкций" - то подтверди источником.

АФАИК множественный возврат запрещен не рекомендуется из функции, а не из блока.
...
Рейтинг: 0 / 0
Выйти из двух циклов в С
    #39664980
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby
это пять баллов за "структурирование кода".

Сам пошутил -- сам посмеялся? Ну-ну.
...
Рейтинг: 0 / 0
Выйти из двух циклов в С
    #39664981
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boobyчто ты называешь измышлениями?
и по твоему тоже "структурное программирование" подразумевает множественность возвратов из блока кода?

если решили строить из себя наци по определениям, потрудитесь аргументировать свои слова правильными определениями, а также пруфами, чтобы не выглядеть смешно.
...
Рейтинг: 0 / 0
Выйти из двух циклов в С
    #39664989
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemarglbooby,

твои предположения о "неправильности".

И если ты пишешь, о "for - не являются частью разрешенных в структурном программировании конструкций" - то подтверди источником.

АФАИК множественный возврат запрещен не рекомендуется из функции, а не из блока.
1) в части for - ок.
конкретно в c/c++ for и допустим и может есть быть частью структурного программирования,
т.к. условие выхода явно формулируется как логическое условие.

Во многих других языках языках нет возможности сформулировать условие завершения for прямо в заголовке.
Поэтому для таких языков не принято считать for частью инструментария "структурного программирования" по основанию множественного возврата из цикла.

Но в данном случае, да, шутка оказалась смазанной.
То есть - в итоге признаю - не удалась.

2) по части блок-функция.
функция - частный случай блока кода.

структурное программирование формулируется именно по отношению к блокам кода,
как бы они не назывались, поскольку вся программа рассматривается именно как последовательность блоков кода, каждый из которых имеет единственный вход и единственный выход.

Собственно цикл здесь - это не просто конструкция, внутри которой может оказаться какая-то повторяемая последовательность блоков, а конструкция, образующая, порождающая свой собственный блок кода .
Как и конструкция выбора iff.

Какой из блоков или последовательности блоков получает собственной имя (функции, например), и, таким образом получает возможность связывания в разные последовательности блоков путем указания их имен - само по себе структурное программирование не интересует.

Программа - последовательность блоков.
цикл и операция выбора - признаваемые за правомерные способы формирования
новых блоков, при условии соблюдения принципа единственности входа и выхода.

учебники - не знаю.
Вероятно, сейчас структурному программированию уже не учат.
А так - любой учебник 30-40 летней давности.

И да, в ремарке, обращённой к hVostt я смеялся.
И именно над предложением совершить харакири return из внутренностей цикла.

Вы, вероятно, в иных странах живёте, потому нашего сарказма просто не понимаете.
...
Рейтинг: 0 / 0
Выйти из двух циклов в С
    #39664990
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby,

Да всё нормально, просто хотелось бы пояснений. Наконец-то оно последовало, спасибо.

По поводу «структурное программирование формулируется именно по отношению к блокам кода» это лирика, так как у различных блоков кода -- различное предназначение. Во многих языках блок кода можно определить просто с помощью фигурных скобочек, для того, чтобы ограничить область видимости локальных переменных. Но это не строительный блок кода.

По поводу «структурное программирование не интересует» это демагогия. Очень даже интересует, так как «блоком кода» можно с таким же успехом можно считать «от этого комментария до этого», но все понимают, что это курам на смех.
...
Рейтинг: 0 / 0
Выйти из двух циклов в С
    #39664992
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby при условии соблюдения принципа единственности входа и выхода.

Это что за принцип такой, для чего нужен и какую задачу решает, можете пояснить?
...
Рейтинг: 0 / 0
Выйти из двух циклов в С
    #39664994
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby,

Ещё момент, многие не любят и умилительно морщатся, когда об этом заходит разговор.

Функцию можно протестировать.

Как вы собираетесь протестировать блок кода типа for, if и т.п. в исходном коде, раз уж вы не видите никакой разницы с точки зрения структурного кода?
...
Рейтинг: 0 / 0
Выйти из двух циклов в С
    #39665049
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтобы закрыть тему бесполезного флуда. Вот оригинальный учебник Дейкстры
https://www.ozon.ru/context/detail/id/139232156/
...
Рейтинг: 0 / 0
Выйти из двух циклов в С
    #39665054
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С позволения господ Кернингана и Ричи я приведу фрагмент исходника из их книги.

3.8 Оператор goto и метки.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
found = 0;
for(i=0;i<n && ! found; i++){
 for(j=0;j<m && ! found; j++) {
  if (a[i] == b[j]) found = 1;
 }
}
if (found) { .... }
...
Рейтинг: 0 / 0
Выйти из двух циклов в С
    #39665063
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

да они там часто загоняются, обычно если уж так хочется заморочитсья без goto, то внутренний цикл в отдельную процу решает проблему "что бы в глаза не бросалось"
...
Рейтинг: 0 / 0
Выйти из двух циклов в С
    #39665066
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
25 сообщений из 44, страница 1 из 2
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Выйти из двух циклов в С
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]