В ходе экспериментов, наткнулся на интересную особенность использования While Loop. Если вложить цикл в цикл, то остановить такую программу вручную не так-то просто.
В данном варианте, для остановки хотя бы одного цикла, необходимо нажать поочередно клавиши:
- stop 1
- stop 2
- stop 3
и только после этого остановятся все циклы.
Два варианта представленных слева, не работают и работать не будут.
Как Вы смотрите на такую архитектуру программы и какие альтернативы можно использовать, дабы не попадать в такие ситуации?
Спасибо
While Loop. Цикл в цикле
-
Aleksey Feoktistov
- leader
- Сообщения: 898
- Зарегистрирован: 20 янв 2009, 00:15
- Награды: 6
- Версия LabVIEW: 2015
- Откуда: Tyumen
- Поблагодарили: 2 раза
- Контактная информация:
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 87 раз
Re: While Loop. Цикл в цикле
сейчас нет возможности попробовать.... нет LabVIEW. мнение чисто логическое, а не практическое
1. работоспособность 3 варианта сомнительна, т.к. после остановки внутреннего цикла начнет выполняться внешний, который в свою очередь снова запустит внутренний. необходимо менять "механику" кнопки
2. остановку нужно начинать с внутреннего цикла. попробуй переделать 1 вариант, если не получится измени "механику" кнопки
3. можно сделать через независимый индикатор
- по нажатии кнопки стоп во внутреннем цикле изменил его состояние f->t
- потом с локальных переменных подать сигнал true на стоп всех циклов
- после остановки всех циклов изменить значение индикатора t->f
4. я бы использовал регистр сдвига, пронизывающий все циклы и записывал сигнал остановки в него
p.s. для каких целей такую конструкцию можно использовать? или это чисто теоретический опыт?
1. работоспособность 3 варианта сомнительна, т.к. после остановки внутреннего цикла начнет выполняться внешний, который в свою очередь снова запустит внутренний. необходимо менять "механику" кнопки
2. остановку нужно начинать с внутреннего цикла. попробуй переделать 1 вариант, если не получится измени "механику" кнопки
3. можно сделать через независимый индикатор
- по нажатии кнопки стоп во внутреннем цикле изменил его состояние f->t
- потом с локальных переменных подать сигнал true на стоп всех циклов
- после остановки всех циклов изменить значение индикатора t->f
4. я бы использовал регистр сдвига, пронизывающий все циклы и записывал сигнал остановки в него
p.s. для каких целей такую конструкцию можно использовать? или это чисто теоретический опыт?
Последний раз редактировалось IvanLis 16 июн 2011, 19:14, всего редактировалось 1 раз.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
Jakob Brontfeyn
- expert
- Сообщения: 1729
- Зарегистрирован: 28 фев 2008, 11:01
- Награды: 6
- Благодарил (а): 1 раз
- Контактная информация:
Re: While Loop. Цикл в цикле
PrimerAleksey Feoktistov писал(а):В ходе экспериментов, наткнулся на интересную особенность использования While Loop. Если вложить цикл в цикл, то остановить такую программу вручную не так-то просто.
В данном варианте, для остановки хотя бы одного цикла, необходимо нажать поочередно клавиши:
- stop 1
- stop 2
- stop 3
и только после этого остановятся все циклы.
Два варианта представленных слева, не работают и работать не будут.
Как Вы смотрите на такую архитектуру программы и какие альтернативы можно использовать, дабы не попадать в такие ситуации?
Спасибо
- Вложения
-
- stop_3.PNG (6.37 КБ) 7120 просмотров
-
mzu2006
- doctor
- Сообщения: 2456
- Зарегистрирован: 16 авг 2008, 02:12
- Награды: 3
- Версия LabVIEW: 7.1 10 11 12
- Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
- Контактная информация:
Re: While Loop. Цикл в цикле
Не совсем понятно, что внутри этих циклов и как соотносятся времена выполнения разных кусков. (Какой из циклов короткий, какой длинный).
Я бы разнес пользовательский интерфейс (кнопку "стоп") и функциональность. Я бы избегал подобной архитектуры, если один из этих циклов "длинный". Например, выделив его в параллельный цикл, запускаемый по notifier из основного.
Я бы разнес пользовательский интерфейс (кнопку "стоп") и функциональность. Я бы избегал подобной архитектуры, если один из этих циклов "длинный". Например, выделив его в параллельный цикл, запускаемый по notifier из основного.
Правила форума (Forum rules in Russian)
rm -rf /mnt/windows
rm -rf /mnt/windows
-
Aleksey Feoktistov
- leader
- Сообщения: 898
- Зарегистрирован: 20 янв 2009, 00:15
- Награды: 6
- Версия LabVIEW: 2015
- Откуда: Tyumen
- Поблагодарили: 2 раза
- Контактная информация:
Re: While Loop. Цикл в цикле
в общем все понятно, спасибо!mzu2006 писал(а):Не совсем понятно, что внутри этих циклов и как соотносятся времена выполнения разных кусков. (Какой из циклов короткий, какой длинный).
Я бы разнес пользовательский интерфейс (кнопку "стоп") и функциональность. Я бы избегал подобной архитектуры, если один из этих циклов "длинный". Например, выделив его в параллельный цикл, запускаемый по notifier из основного.
такой стиль программирования до добра не доведет.
всегда есть альтернативы, я их найду
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 3 Ответы
- 484 Просмотры
-
Последнее сообщение Zloydj