Страница 1 из 1

Классический цикл for(.....) {.........}

Добавлено: 05.08.2022{, 07:08}
Naladchik
Мультиблок для организации классического цикла for().
Основное назначение - создание вложенных циклов (как внутри основного программного цикла, так и внутри уже созданных).
Так же имеются continue (досрочное завершение текущей итерации цикла) и break (выход из цикла, остальные итерации не обрабатываются).
Блок <open cycle > - инициализирует и открывает цикл,
блок <close cycle > - закрывает.
Операции, которые должны выполняться в теле цикла, располагаются между ними.
краткий пример с пояснениями, создан в FLProg 7.5.2Показать
for().flp
(608.57 КБ) 77 скачиваний
Примечание: На время работы цикла for() основной программный цикл блокируется!

Классический цикл for(.....) {.........}

Добавлено: 05.08.2022{, 08:27}
Anydy
Тут есть проблемка - пока цикл For выполняется - то весь остальной код программы стоит на паузе ..что не правильно
Конечно зависит от проекта --Лучше применять If ... else ,,, else If и конечно millis()

Классический цикл for(.....) {.........}

Добавлено: 05.08.2022{, 09:08}
Naladchik
Anydy писал(а):
05.08.2022{, 08:27}
...что не правильно...
А вот это как раз зависит от ситуации, в некоторых случаях требуется именно такой алгоритм (например быстрая обработка массивов).
Под такую задачу эти блоки и создавались.

Классический цикл for(.....) {.........}

Добавлено: 05.08.2022{, 11:56}
Dryundel
Naladchik, а чем не устроило штатное выполнение платы в цикле? Ведь это и есть по факту for.

Классический цикл for(.....) {.........}

Добавлено: 05.08.2022{, 12:03}
Naladchik
Dryundel писал(а):
05.08.2022{, 11:56}
...а чем не устроило штатное выполнение платы в цикле?...
Проходом по всему основному программному циклу, соответственно увеличенным временем на выполнение итераций.

Классический цикл for(.....) {.........}

Добавлено: 05.08.2022{, 12:09}
Dryundel
Naladchik писал(а):
05.08.2022{, 12:03}
Проходом по всему основному программному циклу,
По моему Вы заблуждаетесь на этот счёт.

Отправлено спустя 7 минут 9 секунд:
Нет сейчас компа под рукой и возможно там не for а while, но это сути не меняет. Плата будет крутиться в цикле пока не выполнится условие.
Создайте плату с "выполнять в цикле" и посмотрите код.

Классический цикл for(.....) {.........}

Добавлено: 05.08.2022{, 12:18}
Naladchik
Dryundel писал(а):
05.08.2022{, 12:09}
По моему Вы заблуждаетесь на этот счёт.
Это Ваше мнение, очень уж Вы любите судить со своей колокольни не зная исходной задачи.
Upd. 15.08. Погорячился, был не прав. Но, в данном случае, выполнение платы в цикле не совсем то, что требовалось.

По существу, имеется определенная задача, под эту задачу сделано решение, блоки выложены, кому надо - тот воспользуется.
Что либо еще обсуждать не вижу смысла.

Отправлено спустя 1 минуту 29 секунд:
Dryundel писал(а):
05.08.2022{, 12:16}
Создайте плату с "выполнять в цикле" и посмотрите код.
Основное назначение - создание вложенных циклов (....внутри уже созданных).

Классический цикл for(.....) {.........}

Добавлено: 05.08.2022{, 12:30}
Dryundel
Naladchik писал(а):
05.08.2022{, 12:18}
Это Ваше мнение, очень уж Вы любите судить со своей колокольни не зная исходной задачи.
Зачем же так нервничать? Я и не собирался никого судить, а всего лишь задал вопрос. И мне действительно интересно в чем прикладное отличие от платы в цикле.
Naladchik писал(а):
05.08.2022{, 12:18}
Что либо еще обсуждать не вижу смысла.
Раз уж выложили созданный блок, то уж будьте добры, объяснить для чего и в каких случаях он может оказаться полезным, а не посылать подальше если вдруг вопрос оказался для Вас неудобным.

Классический цикл for(.....) {.........}

Добавлено: 05.08.2022{, 12:59}
Naladchik
Dryundel,
Андрей, ну при всем моем уважении к Вам, ну я же вроде на русском языке пишу.
Речь идет о вложенных циклах.
Нужно было реализовать механизм "цикл внутри цикла" (это помимо основного программного, по итогу цикл внутри цикла, который внутри основного программного, именно вот такая матрешка).
При этом имеются довольно жесткие требования к времени выполнения (счет на микросекунды).
Остальной же код несет вспомогательную функцию и блокировать его выполнение флагами (выполнение плат по условию и т.п.) - в данном случае излишние и ненужные телодвижения, к тому же там и свои блокировки уже имеются.
По поводу выполнения платы в цикле и формируемом коде, цикл for (мною реализованный) не идентичен циклу while (FLProg). Поизвращаться и приспособить можно но зачем? При этом отсутствует механизм создания вложенного цикла (чтобы и плата крутилась в цикле и в ней определенные операций уже в своем цикле).
Да, задача нестандартная, и в большинстве случаев такое решение не требуется.
Как то так.