Конструкция "Пока 1 = 1 Цикл " #459976


#0 by ice123
Увидел подобную конструкцию в программном коде и задался вопросом, а для чего она используется? Для чего организовывать подобный цикл?
#1 by ДенисЧ
Для того, чтобы вычислять условие прерывания унутре цикла. Вообще - это частный случай goto, который многие ненавидят лютой ненавистью...
#2 by ОбычныйЧеловек
внутри где то есть "прервать"...найди и поймешь для чего...
#3 by Скользящий
цикл с условием выхода.
#4 by План счетов
Видимо когда нет возможности посчитать кол-во циклов
#5 by XLife
простой бесконечный цикл, выход задаешь внутри
#6 by ice123
Спасибо! всем!!! посмотрю ща....
#7 by Скользящий
однако. 5 ответов в течение одной минуты. Рекорд для тематической ветки.
#8 by zak555
если много вариантов : 2=2, 3=3, "х"<>"й" ...
#9 by Ненавижу 1С
потому что в 1С (который я, конечно, ненавижу) нет цикла с постусловием: do ... while
#10 by NcSteel
Пос условие можно эммулировать (даже нужно ) другим способом .
#11 by Ненавижу 1С
можно, непонятно почему "даже нужно"
#12 by NcSteel
Потому что не будет такой конструкции , которая может принести больше хлапот чем выгод.
#13 by truba
ровно же столько сколько и конструкция КонецЦикла; А читаемость кода в некоторых случая растет в разы
#14 by nop
как ?
#15 by NcSteel
Например так :
#16 by zak555
#17 by фобка
ну как бэ.. For i = 10 To 19 Do EndDo;
#18 by truba
ага, только А=10 может из нескольких десятков строк состоять (это в хорошем случае) и с точностью до запятой повторять А=А+1; очень удобно.
#19 by NcSteel
Ты не в теме . Это всего лишь пример абстрактный. больше 10 строк обычно занашу в функцию , конечно не считая запросы. Так что такой пример будет выглядить так:
#20 by фобка
А так? For i = 10 To 19 Do
#21 by filh
твой код отработает 10 раз и усе...
#22 by filh
хотя менять переменную цикла внутри цикла...
#23 by NcSteel
У тебя с воображением туго .
#24 by H A D G E H O G s
Нашли что обсудить.
#25 by NcSteel
Не видишь я нашел гиперссылку "v7" .
#26 by фобка
не жалуюсь ;)
#27 by NcSteel
Имелось ввиду сама структура , а не реализация частной задачи , которая была взята только как абстрактный пример.
#28 by фобка
понимаю, просто многие не любят оператор For To Do.. тема навеяла вот я и задумался
#29 by truba
ну а какая разница? в чем выгода? конструкция вот оч. понятна для чтения и содержит в себе те же самые подводные камни, из цикла и там и там можно никогда не выйти. Какие еще камни возможны?
#30 by NcSteel
Я тоже не люблю , так как нет возможности указать шаг.
#31 by zak555
почему не любят ?
#32 by Ваше благородие
Бу-га-га. Зачет! :)
#33 by DJ Anthon
лично мне больше нравится
#34 by 1Сергей
Семерка так не работает
#35 by DJ Anthon
уахххахахахахаааааа!
#36 by DJ Anthon
это я над собой ))))
#37 by 1Сергей
а... типа по Уильяму нашему Шекспиру? :)))))) сразу не догнал
#38 by DJ Anthon
ага, но это действительно из восьмерки, я в сабже поздно разглядел. кроме того, еще в глобальнике надо прописать переменную b, чтоб работало, а так - все изящнее, чем х <> у... а 1 = 1 быстрее набирается, если что... и понятнее, кста
#39 by Дядя Васька
"х"<>"й" это зачетно )
#40 by DJ Anthon
Ну ладно-ладно, уговорили. Все равно у меня в конфиге матерных слов больше, чем скомпилированных...
#41 by dk
хз, меня такие циклы бесят --- ведь можно же заменить на Пока МояПеременная <> УсловиеВыхода ну и в цикле задавать условиевыхода, хотя разницы конечно немного, но читать проще код
#42 by DJ Anthon
мда... а если условий выхода несколько? СписокЗначений? чем тебя Прервать не устраивает? бесят... вот меня бесят ошибки в конфигах, ну никак не варианты задания циклов! между прочим, это оттого, что нет в 1ске аналога repeat until!
#43 by VladZ
Такая конструкция используется, когда условий выхода из цикла много.
#44 by dk
да хоть сто Если ялялял Тогда  УсловиеВыхода = 1 ---- прервать тока для дополнительного выхода, основной цикл должен правильно работать --- впрочем это я так, ворчу немного, в принципе мой вариант от почти не отличается, только читать удобнее
#45 by 1Сергей
Я тоже обычно флаг использую
#46 by VladZ
Когда код простой, можно и так. А вот когда у тебя в цикле обработка "космических утюгов" - удобнее через .
#47 by NcSteel
Любой сложный код можно обернуть функцией и вернуть флаг выхода.
#48 by НикДляЗапросов
#49 by ДенисЧ
Кстати, не забываем ещё про volatile-переменные, которые могут меняться по событиям... Хотя в 1с они вряд дли поменяются в таком цикле...
#50 by zak555
переведи! :-)
#51 by ДенисЧ
Какое слово тебе непонятно? Начни отсюда
#52 by zak555
там тоже нужен перевод )))
#53 by ДенисЧ
volatile-переменные - это те, которые могут изменить своё значение в произвольный момент, вне зависимости от логики кода. Например, в обработчике прерывания. Или константы в 1с...
#54 by ALoHA
Безусловный цикл. Один будет всегда равно один).
#55 by Песец
(с) ЖКК
#56 by 1Сергей
Спасибо, Кэп
#57 by zak555
см. поиск файлов по расширению! например *.ert|*.efd
#58 by Cthulhu
: Изменчивый означает изменяться или изменчивый. Его форма существительного - изменчивость, которая обращается к любой из нескольких мер неустойчивости. Это может обратиться к: По химии: Изменчивость (химия), мера тенденции вещества, чтобы испариться. Это было также определено как мера того, как с готовностью вещество испаряется. Относительная изменчивость, мера давлений пара компонентов в жидкой смеси Volatiles, группа составов с низкими точками кипения, которые связаны с коркой планеты или луны и/или атмосферой Изменчивые органические составы, органические составы, которые могут испариться в нормальной температуре и давлении, и часто регулируются правительствами Изменчивая анастезиология, класс анастезиологии, которые испаряются легко Изменчивая токсикомания, злоупотребление домашними ингаляторами, содержащими изменчивые составы Изменчивая нефть, также известная как существенная нефть, нефть произошла из заводов с соединениями ароматического ряда, используемыми в косметике и приправе Изменчивая кислотность, срок, используемый в winemaking, чтобы указать недопустимым образом высокий уровень кислоты или уксуса и пищевой соды.
#59 by Cthulhu
+: В информатике: Изменчивые переменные, переменные, которые могут быть изменены внешним процессом Изменчивая память, память, которая длится только, в то время как власть идет (и таким образом был бы потерянный после переначала) В астрологии Изменчивый кусок замороженного gasses найденный главным образом в поясе Kuiper. В экономике: Изменчивость (финансы), мера риска в финансовом инструменте В геологии: Volatiles, изменчивые составы магмы (главным образом водный пар), которые затрагивают появление и силу вулканов В математической теории вероятности: В политике: Индекс Pedersen, мера избирательной изменчивости в политических партийных системах Другие использования: Изменчивые Игры, изготовитель видеоигр
#60 by Torquader
В принципе, вместо бесконечного цикла можно использовать метки, но тогда их будет две - одна в начале цикла, а другая в конце, но все прекрасно понимают, что метки не позволяют сразу постичь логику программы (особенно, когда у вас цикл на несколько страниц кода), но с метками можно выходить из вложенных циклов без проверки всяких доп-условий. А по скорости исполнения быстрее всего выполняется сравнение с нулём, поэтому в условии лучше всего писать 0=0.    while 0=0 do        if i>1000000 then break;endif;    while 1=1 do        if i>1000000 then break;endif; Результат выполнения: 1:842 2:1080 3:1080 4:1089 P.S. метки оказались достаточно быстрыми, а в остальных случаях никакой разницы нет.
#61 by 1Сергей
попробовал вариант с флагом - самый медленный
#62 by DJ Anthon
"прервать тока для дополнительного выхода, основной цикл должен правильно работать"  а что выходы из цикла могут быть дополнительными или основными? лишнее усложнение теории и, соответственно, кода. выйти - так выйти. лучше бы кодеры беспокоились о граничных условиях и о пользователях/следующих программеров этого же гребаного кода....
#63 by Дядя Васька
Да так уж и пиши, "Прервать" это для лохов...
#64 by Torquader
Прервать, это узаконенный goto, который переводит точку исполнения за пределы цикла. В отличие от goto нет возможности прерывания вложенных циклов.
#65 by DJ Anthon
тут про вложенные циклы пока никто не говорил. это совсем другой коленкор! сам ты лох
#66 by Cthulhu
: есть возможность - проверка граничного/проверяемого значения цикла сразу после цикла: если условие цикла выполнено (или граничное значение не превышено счетчиком) - значит выход выполнен прерыванием.
#67 by DJ Anthon
угу, вариантов логики может быть море. главное, что механизму 1 = 1 - жить. а им лишь бы пообзываться.
#68 by Киборг
Конструкцией "Пока Истина Цикл" (так лучше) не надо злоупотреблять. Каждый случай использования должен быть исключительным. :)
#69 by Cthulhu
: категоричность кажется малоуместной, извини. особено при том, что сама необходимость применения подобных вещей - сама по себе достаточно исключительна.
#70 by Киборг
то есть даже если это самый лучший из МНОГИХ вариантов и по МНОЖЕСТВУ факторов, то ты его все равно избегаешь?
#71 by orefkov
Имхо. 1. Применять можно, когда условие выхода должно быть в середине цикла. 2. Когда условие выхода должно быть в середине цикла, нужно применять Пока 1=1 Цикл, ибо это сразу дает понять, что условие выхода в середине цикла. Пример: Функция Из10в16(Знач Ч) Если избавляться от "1 = 1", тогда нужно писать так: Функция Из10в16(Знач Ч)
#72 by Киборг
Не могу припомнить ни одного учебника по программированию, в котором бы описывались правила применения как бесконечного цикла, так и операторов перехода?! Тем не менее разработчики языков программирования упорно вставляют в них возможность использования этих конструкций разаработчиками программ. Почему? (Сказку про Синюю бороду не напоминает? Нафига было ей ключ давать?) Конструкция Пока Истина Цикл тянет на исключительную, а конструкция Пока 1=1 Цикл ну никак, как минимум, на одну из многих, типа Пока абракадабра=абракадабра Цикл :))
#73 by truba
Итого: Все представленные здесь конструкции: Требуют инициализации Переменной УсловиеВыхода, которая, обычно, сложна. Все любители "правильный циклов" рано или поздно "оформляют это в отдельную функцию" либо разбив копья о мельницы в своих мозгах приходят к вообще то известную еще со времен паскаля и ранее конструкцию цикла с пост-условием. которая в 1с имеет вид Пока 1=1 Цикл.
#74 by orefkov
Ну нет в семерке Истина А вот в С++ сплошь и рядом while(true) или for(;;)
#75 by Киборг
эээ... нуууу... тогда, да :)
#76 by Табуретко
и както все разом забыли в подобных циклах про некий счетчик, так на всякий пожарный, чтоб цикл не оказался вечным...
#77 by Fragster
а я пишу пока функция цикл конеццикла;
#78 by Fragster
иногда
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям