#0
by ice123
Увидел подобную конструкцию в программном коде и задался вопросом, а для чего она используется? Для чего организовывать подобный цикл?
#1
by ДенисЧ
Для того, чтобы вычислять условие прерывания унутре цикла. Вообще - это частный случай goto, который многие ненавидят лютой ненавистью...
#9
by Ненавижу 1С
потому что в 1С (который я, конечно, ненавижу) нет цикла с постусловием: do ... while
#12
by NcSteel
Потому что не будет такой конструкции , которая может принести больше хлапот чем выгод.
#13
by truba
ровно же столько сколько и конструкция КонецЦикла; А читаемость кода в некоторых случая растет в разы
#18
by truba
ага, только А=10 может из нескольких десятков строк состоять (это в хорошем случае) и с точностью до запятой повторять А=А+1; очень удобно.
#19
by NcSteel
Ты не в теме . Это всего лишь пример абстрактный. больше 10 строк обычно занашу в функцию , конечно не считая запросы. Так что такой пример будет выглядить так:
#27
by NcSteel
Имелось ввиду сама структура , а не реализация частной задачи , которая была взята только как абстрактный пример.
#29
by truba
ну а какая разница? в чем выгода? конструкция вот оч. понятна для чтения и содержит в себе те же самые подводные камни, из цикла и там и там можно никогда не выйти. Какие еще камни возможны?
#38
by DJ Anthon
ага, но это действительно из восьмерки, я в сабже поздно разглядел. кроме того, еще в глобальнике надо прописать переменную b, чтоб работало, а так - все изящнее, чем х <> у... а 1 = 1 быстрее набирается, если что... и понятнее, кста
#40
by DJ Anthon
Ну ладно-ладно, уговорили. Все равно у меня в конфиге матерных слов больше, чем скомпилированных...
#41
by dk
хз, меня такие циклы бесят --- ведь можно же заменить на Пока МояПеременная <> УсловиеВыхода ну и в цикле задавать условиевыхода, хотя разницы конечно немного, но читать проще код
#42
by DJ Anthon
мда... а если условий выхода несколько? СписокЗначений? чем тебя Прервать не устраивает? бесят... вот меня бесят ошибки в конфигах, ну никак не варианты задания циклов! между прочим, это оттого, что нет в 1ске аналога repeat until!
#44
by dk
да хоть сто Если ялялял Тогда УсловиеВыхода = 1 ---- прервать тока для дополнительного выхода, основной цикл должен правильно работать --- впрочем это я так, ворчу немного, в принципе мой вариант от почти не отличается, только читать удобнее
#46
by VladZ
Когда код простой, можно и так. А вот когда у тебя в цикле обработка "космических утюгов" - удобнее через .
#49
by ДенисЧ
Кстати, не забываем ещё про volatile-переменные, которые могут меняться по событиям... Хотя в 1с они вряд дли поменяются в таком цикле...
#53
by ДенисЧ
volatile-переменные - это те, которые могут изменить своё значение в произвольный момент, вне зависимости от логики кода. Например, в обработчике прерывания. Или константы в 1с...
#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. метки оказались достаточно быстрыми, а в остальных случаях никакой разницы нет.
#62
by DJ Anthon
"прервать тока для дополнительного выхода, основной цикл должен правильно работать" а что выходы из цикла могут быть дополнительными или основными? лишнее усложнение теории и, соответственно, кода. выйти - так выйти. лучше бы кодеры беспокоились о граничных условиях и о пользователях/следующих программеров этого же гребаного кода....
#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 Цикл.
#76
by Табуретко
и както все разом забыли в подобных циклах про некий счетчик, так на всякий пожарный, чтоб цикл не оказался вечным...
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- 1c v8.2 вывод HTML документа
- Формат Bas
- ЗУП8 - полный дистрибутив конфигурации
- Можно ли получить количество строк после отбора?
- БП 1.6.15 Теряется миллион на 51 счете))
- Как ускорить поиск по реквизиту
- Регламент по запуску 1С ЗУП в эксплуатацию после переноса данных
- Отображение в трее конверта при получении письма (MS Outlook 2007)
- Как узнать конфа проф или базовая?
- ЗУП 2.5.20.3 Расчетные листки
- Где ошибка в коде?
- Самосборный сервер vs готовый
- 8.2 Как в подписке на событие задать пользователю вопрос?
- Отследить монопольный доступ
- v7: Ошибки после переноса 1С с одного компа на другой...
- Error #: -310. Not a Correct Index File
- Как отключить автоматическое определение типа сети в windows 7?
- Экзамены на специалиста консультанта БП 8
- Развернуть образ win из virtualbox на реальной машине. Реально?
- v7: у бухов требуют в статистике отчет мп-микро