О применении "Пока Истина Цикл" #570745


#0 by Ksandr
Сегодня, наконец, понял для чего в типовых такая конструкция. Она отлично помогает выделить блок, который нужно выполнить, если на каком то участке блока необходимо выйти из блока, например: Пока Истина Цикл Произвольный_Код .............. Есть ли у кого-нибудь аргументы за и против использования такого подхода?
#1 by DJ Anthon
ты сам понял, что сказал?
#2 by rutony
Маразм...
#3 by Goggy
Ну тебе всамы раз в руки такой руль :) Перейти ~Метка1; .... ~Метка1:
#4 by Ksandr
Так это как раз более прямая альтернатива меткам.
#5 by Anempadest
А чем не нравится Если...Тогда?
#6 by Ksandr
т.к. одним из минусов меток является то, что можно долго ломать голову над тем как же выполнение кода оказалось именно в этом месте - тут такого вопроса не возникает
#7 by Fragster
для выделения блоков есть процедуры
#8 by Ksandr
допустим есть 5 вариантов поиска элемента. Писать: Если НеНашли Тогда ПроизвольныйКод КонецЕсли Если НеНашли Тогда ПроизвольныйКод КонецЕсли Если НеНашли Тогда ПроизвольныйКод КонецЕсли Если НеНашли Тогда ПроизвольныйКод КонецЕсли Если НеНашли Тогда ПроизвольныйКод КонецЕсли Это достаточно простой пример, в реальности он может быть куда сложнее.
#9 by Ksandr
Согласен. Этим подходом и пользуюсь, просто сегодня понял, зачем в типовых делают однопроходный цикл вида - Пока Истина Цикл, чтобы выйти из него на произвольном участке кода.
#10 by Grusswelle
Господи, Иисусе! (с) South park
#11 by Anempadest
Обычно в таких случаях я пишу внешнюю функцию, внутри которой проверяю значение, а функция уже возвращает "Удовлетворяет или не удовлетворяет". И если говорить об удобстве разбора кода, то мой вариант также претендует на удобство и красоту. Например: ... ... КонецПроцедуры
#12 by Fragster
Господи и SuSE! (про внедренный таки линупс на рабочих станциях)
#13 by GROOVY
Да они просто новый набор прогеров понабрали, а те кодить нормально не умеют.
#14 by Шапокляк
Ну да, классно. Запустил юзверя с именем "ДятелОповещатель" и при запуске поставил обработку с этим циклом, в котором задал условие БоссОткрылБазу. Ждем босса - цикл крутится. Босс зашел в базу - всем письмо с текстом "Атас! Начальство на месте" и выход из цикла.
#15 by GoldenDawn
как глубоко )))
#16 by BigRoma
Бред, такая конструкция нужна для других целей.
#17 by GoldenDawn
нужно ещё обсосать компиляцию интерпретацию и не помню где забыл как с этой точки зрения называется платформа и посаться обязательно
#18 by wade25
Уф, минут 5 смотрел и не вдуплял, пока не увидел, что "Пока Истина Цикл" входит в код =)
#19 by Ksandr
для каких?
#20 by Fragster
цикл с заранее неизвестным количеством итераций. хотя его все равно лучше заменить на Пока НужноПродолжать Цикл...
#21 by Кириллка
Применимость, например, для такого случая: 0. В таком бесконечном цикле.. 1. Спросить пользователя о чем-то; 2. Проверить введенное значение; 3. Если значение неверное, то повторно попросить его ввести значение или отказать от дальнейшего ввода; 4. В зависимости от того, что он выберет (ввести новое корректное значение или прекратить ввод вообще) выходить из цикла; Главное здесь предусмотреть возможность пользователю прекратить эту феерию :) Короче, это же азы.
#22 by GoldenDawn
тру проги пишут по НЕ нужнопродолжать цикл
#23 by Fragster
бухаете?
#24 by Сияющий Асинхраль
Стаж 2 г 7 месяцев - долго же до тебя доходило... :-(
#25 by Guk
нормальная конструкция, да простит меня NS ;)...
#26 by Rie
О goto ещё не вспоминали? :-) Блок кода - помогает видеть. А вот условие, по которому выходят из цикла, - его придётся поискать. Причём опытный кодер всегда сумеет запрятать это условие куда поглубже и сделать его максимально неудобочитаемым :-) А так - конструкция как конструкция. Если возникает потребность именно в ней - используй. Если можно обойтись другими - лучше использовать другие.
#27 by jsmith
Видимо, ты испытал просветление. Могу предположить, ты имеешь в виду давнюю дискуссию между сторонниками меток и его противниками. Первые говорят, что такой код опасен (современные компиляторы даже выдают предупреждения). В принципе считаю это дело вкуса, от всех ошибок не застрахуешься, а при правильном мышлении ты можешь изощряться как хочешь.
#28 by Sk0rp
Пока ФлагПродолженияРаботы Цикл .....
#29 by Rie
О чём и речь - рядом с опытным кодером обфускаторы нервно курят за кулисами :-)
#30 by Sk0rp
У меня где-то в коде есть: О чем думал когда писал не помню, но уже исправлять не буду.
#31 by jsmith
метко
#32 by Упанишады
Поклонник Дудинцева?
#33 by zak555
ещё пойми следущее, что Пока Условие = Истина Цикл конецЦикла; идёт две операции, поэтому пищут просто Пока Условие Цикл
#34 by DJ Anthon
а у меня
#35 by zak555
"долгое" логическое выражение =)
#36 by Икогнито
а кто вот так пишет _ТабЗнач?
#37 by Morphius
А матчасть почитать не пробовал? Таким образом люди реализуют do..while , которого нет в 1с. То бишь когда нужно условное выражение проверять в конце каждой итерации, а не в начале
#38 by Kraft
тс... автор познает основы программирования, не взрывайте ему моск не1с-ными вещами )
#39 by Ksandr
ага, именно. а в чем отличие от ? наличием флага? знаю я мат часть, знаю.
#40 by Ненавижу 1С
простов 1С нет цикла с постусловием
#41 by Anempadest
Чё вы набросились на автора? Он вам ничего не предлагает. Человек просто озадачился однажды, а теперь наконец понял, почему в типовых конфигурациях код выглядит так, а не иначе.
#42 by Mort
+1 вот и весь секрет
#43 by vmv
да, его очень не хватает иногда
#44 by Stim213
такой код очень легко уйдет в бесконечный.
#45 by vmv
я тоже так пишу, вот вариант &НаКлиенте Функция ДанныеФормыДеревоПолучитьУровеньЭлемента(ДФЭлементДерева) работает без всякого ухода. в 8.2. для деревоколлекця нет метода Урувень, увы
#46 by Rie
Любой нетривиальный цикл имеет шанс уйти в бесконечность.
#47 by Guk
надо очень сильно постараться...
#48 by Лефмихалыч
такой код пишут люди, у которых руки растут из жопы пальцами внутрь
#49 by Guk
о, наконец-то гений программирования в ветку заглянул ;)...
#50 by Stim213
и стараться не надо. Число итераций должно быть всегда жестко определено, иначе условия выхода из цикла может не сработать и цикл будет бесконечным.
#51 by Guk
хм, а можно пример?...
#52 by Stim213
запросто. Конкретный пример - создаю pdf-файл через отправку табличного документа на виртуальный pdf-принтер - ком-объект. Команда Напечатать отправилась, код 1С шагнул в следующую строку, а файл еще создается. В цикле проверяем размер файла(что это не пустой файл), если размер больше 1кб - то Прервать; Но Если по каким-то причинам файл так и не создался, то цикл будет крутится бесконечно. Поэтому ставится счетчик итераций ~10000 и внутри них проверяется наличие заполненного файла
#53 by Stim213
Если после 100000 итераций размер файла так и не увеличился - значит, он не увеличится уже никогда
#54 by Лефмихалыч
такой - тоже
#55 by Guk
а счетчик итераций это не условие выхода из цикла? и как это портит конструкцию в ?...
#56 by Stim213
чукча писатель? Если бы я писал цикл по , мне пришлось бы писать Или ты совсем не видишь разницы?
#57 by Guk
тебе конструкция do..while вообще не знакома?...
#58 by Stim213
Но читабельность такого кода уменьшается в разы
#59 by Лефмихалыч
а можно еще мануал почитать
#60 by Stim213
это-то причем здесь?)
#61 by Guk
это при том что ты написал в ;)...
#62 by Stim213
блин, не тупи же! Твой оператор - это цикл с постусловием, он к сабжу не имеет отношения, в сабже цикл с предусловием: Перестань уже позориться своим непрофессионализмом
#63 by Guk
Стимка, жжошь! ;) ты по=моему вообще не понимаешь о чем речь ;)...
#64 by Stim213
куда мне до тебя, о гуру
#65 by Guk
так а что ты хрень то какую-то несешь ;) тебе русским по белому намекают, что вся суть конструкции в условии выхода из цикла. но ты почему-то напрочь этого не понимаешь. то ли дурака включил, то ли не включал ;)...
#66 by Попытка1С
Ненавижу таких юмористов... руки таким надо отрывать.
#67 by Оболтус
Скорее всего проц загонишь, лучше обработкой ожидания такое делать.
#68 by Песец
Если религия (корпоративная или личная) не позволяет юзать гоуту, а юзать надо, то самое оно.
#69 by Песец
Альтернатива кривая - попробуй выйти из вложенного цикла.
#70 by zak555
можно сделать два условия проверки =) Пока Истина Цикл   Если УсловиеОстановаИстина Тогда
#71 by popcorn
О, прикольно! Сразу не понял смысла, но потом понял. Тоже буду использовать такую идею.
#72 by Песец
(69+) Не удивлюсь, если выяснится, что подобная хрень генерируется автоматически обработкой-"препроцессором", компилирующим исходный код с гоуту в код без оператора, попавшего в опалу корпоративного стандарта.
#73 by Morphius
Кстати, т.к. в 7.7 типа "Булево" не было, встречал такую конструкцию(и сам потом использовал): Пока 1=1 Цикл .... .... КонецЦикла;
#74 by vladenoff
Использую: // Пока Истина Цикл .... использую, когда условие повторного повторения (вхождение в цикл) должно проверяться в конце алгоритма самого цикла. Это обеспечит их выполнения хотя бы раз. В паскале были конструкции "While do..." и "reaped until", вот второй конструкции у 1С нету. Её заменяю "Пока Истина Цикл ...." заменить можно, но наверное гемора больше. Пришлось бы, наверное, указывать булевую переменную, типа "ПрошлоРазЦикл".
#75 by Fragster
#76 by Necessitudo
Велосипедописатели
#77 by Torquader
Ну не сделали в 1С цикл с условием в конце - видимо - не умеют. "Бесконечный" цикл используется, если хочется выполнить повторение кода с начала при неудаче на каком-то участке кода, а также для "корректного" выхода из ситуации, когда код выполняться не может.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С