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

Пользовательские блоки дополняющие набор стандартных блоков
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Ответить
Naladchik
Капитан
Сообщения: 823
Зарегистрирован: 04.10.2015{, 19:10}
Репутация: 153
Откуда: Новосибирск
Имя: Павел

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

#1

Сообщение Naladchik » 05.08.2022{, 07:08}

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

Anydy

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

#2

Сообщение Anydy » 05.08.2022{, 08:27}

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

Naladchik
Капитан
Сообщения: 823
Зарегистрирован: 04.10.2015{, 19:10}
Репутация: 153
Откуда: Новосибирск
Имя: Павел

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

#3

Сообщение Naladchik » 05.08.2022{, 09:08}

Anydy писал(а):
05.08.2022{, 08:27}
...что не правильно...
А вот это как раз зависит от ситуации, в некоторых случаях требуется именно такой алгоритм (например быстрая обработка массивов).
Под такую задачу эти блоки и создавались.
Последний раз редактировалось Naladchik 15.08.2022{, 08:02}, всего редактировалось 1 раз.
Win10-64. FLProg Portable.
Изображение

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

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

#4

Сообщение Dryundel » 05.08.2022{, 11:56}

Naladchik, а чем не устроило штатное выполнение платы в цикле? Ведь это и есть по факту for.

Naladchik
Капитан
Сообщения: 823
Зарегистрирован: 04.10.2015{, 19:10}
Репутация: 153
Откуда: Новосибирск
Имя: Павел

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

#5

Сообщение Naladchik » 05.08.2022{, 12:03}

Dryundel писал(а):
05.08.2022{, 11:56}
...а чем не устроило штатное выполнение платы в цикле?...
Проходом по всему основному программному циклу, соответственно увеличенным временем на выполнение итераций.
Win10-64. FLProg Portable.
Изображение

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

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

#6

Сообщение Dryundel » 05.08.2022{, 12:09}

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

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

Naladchik
Капитан
Сообщения: 823
Зарегистрирован: 04.10.2015{, 19:10}
Репутация: 153
Откуда: Новосибирск
Имя: Павел

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

#7

Сообщение Naladchik » 05.08.2022{, 12:18}

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

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

Отправлено спустя 1 минуту 29 секунд:
Dryundel писал(а):
05.08.2022{, 12:16}
Создайте плату с "выполнять в цикле" и посмотрите код.
Основное назначение - создание вложенных циклов (....внутри уже созданных).
Последний раз редактировалось Naladchik 15.08.2022{, 08:19}, всего редактировалось 2 раза.
Win10-64. FLProg Portable.
Изображение

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

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

#8

Сообщение Dryundel » 05.08.2022{, 12:30}

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

Naladchik
Капитан
Сообщения: 823
Зарегистрирован: 04.10.2015{, 19:10}
Репутация: 153
Откуда: Новосибирск
Имя: Павел

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

#9

Сообщение Naladchik » 05.08.2022{, 12:59}

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

Ответить

Вернуться в «Триггеры, таймеры, счетчики, детекторы сигнала»