DRAKON.SU

Текущее время: Пятница, 29 Март, 2024 01:40

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 86 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
СообщениеДобавлено: Среда, 27 Март, 2019 15:50 

Зарегистрирован: Среда, 03 Май, 2017 09:55
Сообщения: 200
Дмитрий Бардынин писал(а):
Так вы и описали базовый принцип работы булевой Паузы, только застреваем мы на ней, пока TRUE. Использовать обрезанный вопрос, как мне кажется, хуже, потому, что Вопрос - это развилка. Если он будет мутировать до Паузы/Прерывателя, то это хуже, на мой взгляд, чем просто применение "Истинной Паузы".

Отличие в том, что выход(ы) развилки подписан(ы). Всегда можно посмотреть на выход и понять да/нет.
А у паузы такой подписи нет. Если правило забыть (или не знать), то смысл схемы вообще теряется.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 27 Март, 2019 19:56 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 439
Откуда: Астрахань-Сочи
Владимир Ситников писал(а):
Если правило забыть (или не знать), то смысл схемы вообще теряется.

Думаю, что смысл схемы потеряется в процессе применения любых значков, кроме Действия и Вопроса. Любой значок нужно "помнить/знать". Однако даже первые два некоторые ребятишки умудряются путать, поэтому учиться придется каждому, кто хочет уметь Читать и Писать алгоритмы. Ключевая фраза "Учись ..."


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 28 Март, 2019 09:14 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 439
Откуда: Астрахань-Сочи
Владимир Ситников писал(а):
Отличие в том, что выход(ы) развилки подписан(ы). Всегда можно посмотреть на выход и понять да/нет.
И подписи, кстати, нужны скорее для того, чтобы знать где-что. Ведь выходы у Вопроса могут меняться местами :)
Если бы был один выход ДА, то подпись была бы не нужна.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 28 Март, 2019 11:23 

Зарегистрирован: Среда, 03 Май, 2017 09:55
Сообщения: 200
Дмитрий Бардынин писал(а):
Владимир Ситников писал(а):
Отличие в том, что выход(ы) развилки подписан(ы). Всегда можно посмотреть на выход и понять да/нет.
И подписи, кстати, нужны скорее для того, чтобы знать где-что. Ведь выходы у Вопроса могут меняться местами :)
Если бы был один выход ДА, то подпись была бы не нужна.

Именно. Зато таким "безальтернативным" вопросом можно делать 2 варианта: "unless(...) { пауза; }" и "while(...) { пауза; }".

И в обоих случаях понятно какое там условие продолжения.

В вашем же случае без запоминания __нового__ и __нужного только в одном месте__ правила схему вообще не понять.

К слову, вы говорили, что "если не знать, что трапеция это пауза, то схему всё равно не понять", я, быть может, соглашусь.
Но тут есть нюанс: если на трапеции русским языком написано "5 секунд", то это недвусмысленно намекает на то, что тут мы останавливаемся на 5 секунд. Ничего читать не нужно и никаких правил не нужно изучать. Написано 5 секунд -- 5 секунд и ждём.
А когда на трапеции написано "a && b! || c", то без вдумчивого чтения документации уже не разобраться. В этом минус. Поэтому и нехорошо делать паузу с bool условием.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 28 Март, 2019 15:48 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 439
Откуда: Астрахань-Сочи
Владимир Ситников писал(а):
А когда на трапеции написано "a && b! || c", то без вдумчивого чтения документации уже не разобраться. В этом минус. Поэтому и нехорошо делать паузу с bool условием.

да, это проблема. однако штука удобная получилась. Опять же, "мс и секунд" не панацея, например у меня дети используют и переменные, а тут "мс и с" уже не припишешь.
можно попробовать добавлять явный пояснительный признак, например слово "Жди" для параметров числовых и "Стоп " для параметров булевых.
Запись "/Жди A\" и "/Стоп Q\"
Таким образом, "Жди" - понимаем, что разговор о времени. И даже если не указать единицы измерения, можно это обрабатывать по умолчанию, например, в миллисекундах.
В свою очередь "Стоп" - понимаем, что тут приостановка хода, которое может быть либо активно - работающее, либо пассивно - не работающее.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 04 Апрель, 2019 11:13 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 439
Откуда: Астрахань-Сочи
Дмитрий Бардынин писал(а):
В свою очередь "Стоп" - понимаем, что тут приостановка хода, которое может быть либо активно - работающее, либо пассивно - не работающее.


Искали ошибку в коде, оказалось наша бинарная Пауза влезла там, где ожидались миллисекунды. Вывод: явный признак бинарности необходим, иначе возможны ошибки.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 11 Апрель, 2019 18:41 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 439
Откуда: Астрахань-Сочи
В результате экспериментов было решено пока не использовать бинарную Паузу, т.к. не до конца понятно, как исключить возможные проблемы, например, с пониманием у неподготовленного читателя.
Однако наличие иконы, способной останавливать бегунок, очень желательно. И на данном этапе представляется удобным использовать Синхронизатор. Только в текущем его применении он способен останавливать бегунок не только до момента срабатывания равенства "Таймер = Уставка по времени", но и по любой уставке, например по уровню напряжения на аналоговом порте, или наличию сигнала в цифровом. Представляю Силуэт алгоритма для простого рефлексометра. Думаю, принцип действия понятен без дополнительных комментариев.

Вложение:
Рефлексометр.jpg
Рефлексометр.jpg [ 186.69 КБ | Просмотров: 9220 ]


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 11 Апрель, 2019 18:50 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 439
Откуда: Астрахань-Сочи
Как и представленные ранее примеры, данный код проверен на рабочем прототипе.
Прошу высказываться по данному способу, если Вы заметили потенциальные трудности с пониманием работы алгоритма.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 11 Апрель, 2019 19:52 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 439
Откуда: Астрахань-Сочи
В качестве прототипа была использована конструкция, применяемая на занятиях по алгоритмизации.
Вложение:
стенд.jpg
стенд.jpg [ 54.89 КБ | Просмотров: 9214 ]


Используется микроконтроллерная плата Lolin на базе ESP8266. Доступны для работы в данной конструкции порты: D2 - вывод звука, D3 - кнопка, D4 - светодиод на плате, A0 - аналоговый вход. Также доступен WiFi-модуль, что позволяет программировать конструкции для Интернета вещей.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 11 Апрель, 2019 19:55 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 439
Откуда: Астрахань-Сочи
Микроконтроллерная плата Lolin на базе ESP8266

Вложение:
стенд2.jpg
стенд2.jpg [ 78.32 КБ | Просмотров: 9214 ]


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 12 Апрель, 2019 09:01 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
Дмитрий Бардынин писал(а):
Думаю, принцип действия понятен без дополнительных комментариев.
Это не так.

В иконе Заголовок вместо бессмысленного слова "Программа" надо написать точное и ясное название алгоритма, раскрывающее его смысл


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 12 Апрель, 2019 09:19 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 439
Откуда: Астрахань-Сочи
Владимир Паронджанов писал(а):
Дмитрий Бардынин писал(а):
Думаю, принцип действия понятен без дополнительных комментариев.
Это не так.

В иконе Заголовок вместо бессмысленного слова "Программа" надо написать точное и ясное название алгоритма, раскрывающее его смысл


Алгоритм "с пылу, с жару". В нашем случае "Программа" - это зарезервированное слово, рабочее название программы, являющейся стартовой. Если давать стартовой программе уникальное имя, то придется указывать его где-то отдельно, или использовать специальные значки в заголовке, чтобы генератор знал, откуда стартуем.

Для публикации на форуме, или в статье, алгоритм, конечно, нужно называть точнее.

А по структуре алгоритма нет нареканий? Или стоит убрать/заменить иконы, содержащие команды языка Wiring?

Есть ли вопросы по способу использования Синхронизатора?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 12 Апрель, 2019 11:14 

Зарегистрирован: Среда, 07 Январь, 2015 14:53
Сообщения: 1356
Дмитрий Бардынин писал(а):
Есть ли вопросы по способу использования Синхронизатора?
Плохое решение. Надуманное, смотришь и смысла не видно.
Смысл у автора в голове. Утверждается: "у каждого свои тараканы в голове".
Используйте цикл ожидания. Ожидайте наступление времени или события.

Дмитрий Бардынин писал(а):
Представляю Силуэт алгоритма для простого рефлексометра. Думаю, принцип действия понятен без дополнительных комментариев.
...
А по структуре алгоритма нет нареканий?
Плохая схема. Смесь проблемных терминов и программистских операторов.
Если уж используете инструмент С. Митькина, то делайте схему в терминах описания решаемой проблемы и схему программы с операторами используемого языка программирования.

"Принцип действия" должен быть понятен без знания программирования. Даже непонятно назначение, чьи рефлексы измеряются, в каких единицах измеряются и где отображаются?

В.Д. Паронджанов учит, что в Силуэте конечная ветка имеет имя "Завершение" только в случаи отсутствия других икон кроме Ветка, Комментарий и Конец.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 12 Апрель, 2019 14:23 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 439
Откуда: Астрахань-Сочи
LKom писал(а):
Дмитрий Бардынин писал(а):
Есть ли вопросы по способу использования Синхронизатора?
Плохое решение. Надуманное, смотришь и смысла не видно.
Смысл у автора в голове. Утверждается: "у каждого свои тараканы в голове".
Используйте цикл ожидания. Ожидайте наступление времени или события.

Предлагаю излагать по делу, без эмоций, иначе получится базар, а не дискуссия.

Использование цикла ожидания нормальная практика, и мы его используем, поверьте. Я же предлагаю обсудить расширенные возможности применения икон Дракона. Синхронизатор по-времени либо применяют, либо нет. Послушав вас, можно сделать вывод: "забыть синхронизатор! применять цикл ожидания!" А я хочу использовать разные подходы. Надеюсь, и единомышленники в этом у меня найдутся.

Тут указан пример использования синхронизатора, ожидающего TRUE. Предлагаю обсуждать практичность этого приема.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 12 Апрель, 2019 14:26 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 439
Откуда: Астрахань-Сочи
LKom писал(а):
Плохая схема. Смесь проблемных терминов и программистских операторов.
Если уж используете инструмент С. Митькина, то делайте схему в терминах описания решаемой проблемы и схему программы с операторами используемого языка программирования.

Вся соль нашего метода, чтобы описать логику решения проблемы, не прибегая к языку, или используя его минимально. А затем загрузить готовую программу в МК. И поверьте, это работает.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 12 Апрель, 2019 14:35 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 439
Откуда: Астрахань-Сочи
LKom писал(а):
"Принцип действия" должен быть понятен без знания программирования. Даже непонятно назначение, чьи рефлексы измеряются, в каких единицах измеряются и где отображаются?

В.Д. Паронджанов учит, что в Силуэте конечная ветка имеет имя "Завершение" только в случаи отсутствия других икон кроме Ветка, Комментарий и Конец.


Да, этот комментарий безусловно полезен. Соглашусь с наличием непонятностей. Но представьте, что я снабжу диаграмму подробными комментариями. Алгоритм-то останется неизменным. Тогда к чему перегружать диаграмму, я же не детям учебный пример показываю. Мне как-раз и интересно, насколько понимаемой будет схема при использовании Синхронизатора. Например, трапеция с записью "5 секунд", как мне указали, является понятной. Можно ли считать понятным знак Синхронизатора с надписью внутри, являющейся логическим выражением или отсылкой к к.л. диаграмме? Если он понятный для надписи "А = 1 минута", то он должен быть понятный и для надписи " Нажатие = ИСТИНА". Или нет?

"Завершение" может стать "Заключительной", или "Финишной", или "Ветка 10". Но на будущее постараюсь учитывать "Завершение". :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 12 Апрель, 2019 19:46 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 439
Откуда: Астрахань-Сочи
Предлагаю оценить такой вариант той же программы для микроконтроллера (МК).
Вложение:
Рефлексометр2.JPG
Рефлексометр2.JPG [ 143.62 КБ | Просмотров: 9156 ]


Поскольку было пожелание о пояснениях к диаграмме, то постараюсь кратенько объяснить:

Алгоритм описывает работу прибора, предназначенного для прикидочной оценки скорости реакции испытуемого.
После включения прибор ждет нажатия кнопки, подключенной к порту D3 МК. После нажатия генерируется случайное число, которое
определяет время паузы до светового и звукового сигналов. После подачи сигналов фиксируется время начала отсчета, для чего используется функция millis(), возвращающая количество миллисекунд с начала работы МК. Повторное нажатие на кнопку выключает сигналы, и программа оценивает число миллисекунд, прошедших между началом отсчета и нажатием на кнопку. Если время реакции слишком мало (ошибка, dT<50 мс), или слишком велико (заторможенность, dT>1000 мс), устройство завершает работу. В противном случае подается звуковой сигнал, состоящий из серии пяти звуков разной частоты.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 12 Апрель, 2019 20:09 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
Дмитрий Бардынин писал(а):
Предлагаю оценить такой вариант той же программы для микроконтроллера

Рефлексометр лучше чем бессмысленное слово "Программа" в иконе Заголовок.

Но Рефлексометр — это по-прежнему очень плохое название алгоритма.
Непонятно, о чем идет речь.

Попробуйте придумать название, состоящее из пяти или семи слов, точно и ясно раскрывающее название алгоритма.
Не экономьте слова.

Название алгоритма должно быть понятным с первого взгляда.

Принцип языка ДРАКОН:
«Взглянул — и сразу понял!»


Прочитав "Рефлексометр", человек вынужден погрузиться в мучительные раздумья: что бы это значило?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 13 Апрель, 2019 07:53 

Зарегистрирован: Среда, 07 Январь, 2015 14:53
Сообщения: 1356
"Рефлексометр" - я спрашивал "в каких единицах измеряются и где отображаются".
Если нет результатов измерения, то прибор уже нельзя назвать "Рефлексометр"-ом, это скорее всего Рефлексотестер.

Откуда берётся норма и как устанавливается? Норма может быть различной для различных категорий тестируемых.

"Трель" - услышав, радоваться или печалиться? Из алгоритма не понятно, можно же в алгоритме сделать комментарий.
Исчез сигнал индикации плохого результата тестирования. Будет восприниматься, как прибор не работает.

"... < 50" - какой смысл? Вы называете ошибкой. Надо контролировать "Фальшь старт" - нажатие до подачи сигнала.

"Ждать нажатие (D3)" - что такое "Нажатие". Нажатие кнопки имеет продолжительность. На что будет реагирование, на замыкание или на размыкание контакта? Какая будет реакция на продолжительное нажатие?

"Звук включить" - непонятно назначение появления звука, можно же в алгоритме сделать комментарий.
"Свет включить" - непонятно назначение появления света, можно же в алгоритме сделать комментарий.
Звук и Свет появляются одновременно. Непонятно, на какой раздражитель проверяется рефлекс тестируемого. Зачем дублирование, для глухих и для слепых?

"Звук случайный" - какой смысл в этом тексте? Можно предположить, что имеется ввиду серия звуков с различной частотой. В иконе смешаны 2 действия - установка частоты и включение звука. Сделайте 2 иконы - "Установить случайную частоту звука 1000..3000 гц." и "Включить звук".

Икона Пауза подразумевает отсутствие действий исполнителя. "Ждать нажатие (D3)" - Вы же заставляете исполнителя контролировать возникновение события. Здесь не адекватно задаете действие исполнителю.

---
Без автора, дети алгоритм не поймут.

Обучение детей, и не только детей, языку Дракон должно иметь и элемент критического отношения к качеству записи алгоритма.
Должны быть наглядность, понятность, полнота, однозначность и непротиворечивость.

Важную роль имеют комментарии с боковым присоединением.
Смотрите у А_МУРа - https://forum.drakon.su/viewtopic.php?p=103030#p103030


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 13 Апрель, 2019 10:09 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 439
Откуда: Астрахань-Сочи
Мне кажется, что нужно сместить акценты. Предлагаю не обсуждать конкретную реализацию игрушки, где проверяется, успел ли игрок нажать кнопку до истечения секунды с момента подачи сигнала. Игрушки иногда называют громкими названиями, похожими на реальные приборы. Пусть будет "Рефлексотестер" :)
Хотя мне больше нравится идея назвать алгоритм развернуто: "Проверяем реакцию человека на свет и звук"

Интересует способ описания алгоритма с помощью Паузы и Синхронизатора.
Насколько приемлем такой способ - это важно. А есть ли индикация фальшстарта, и т.д. - не важно.

Из всех комментариев конкретно по применению Паузы можно выделить только
Цитата:
Икона Пауза подразумевает отсутствие действий исполнителя. "Ждать нажатие (D3)" - Вы же заставляете исполнителя контролировать возникновение события. Здесь не адекватно задаете действие исполнителю.


Не могу согласиться, что Пауза эквивалентна отсутствию действий. Как минимум, Исполнитель следит за временем. В случае с многозадачными системами во время паузы происходит передача управления Диспетчеру. В моем примере я добавляю новую функцию: Пауза не просто заставляет ждать Исполнителя, пока истечет время, но также может заставить Исполнителя ждать, пока не наступит событие, или не дадут отмашку, или не появится разрешение, или не появится Флажок. Это, как мне кажется, не контроль со стороны Исполнителя, а наоборот, вариант описания характера работы Паузы. В Паузе с указанием времени работа исполнителя продолжится по истечению времени. Причем я указываю время в одном случае явно "5 с", а в другом случае неявно , с помощью переменной "Задержка", и по умолчанию система используем миллисекунды. В Паузе бессрочной, с ключевым словом "Жди", работа Исполнителя продолжится при наличии флажка. Флажком является выражение после слова "Жди". В этом случае она практически эквивалентна Синхронизатору, когда тоже проверяется логическое выражение "А = Т". Кстати, про новый вариант применения Синхронизатора тоже не забывайте, он у меня так же может ожидать какое-то событие, или появление флажка. Этот момент тоже стоит обсуждать.

Цитата:
Без автора, дети алгоритм не поймут.
Они алгоритмы ПИШУТ, и способны понять даже более сложные конструкции. Проверено.

Цитата:
Обучение детей, и не только детей, языку Дракон должно иметь и элемент критического отношения к качеству записи алгоритма.
Должны быть наглядность, понятность, полнота, однозначность и непротиворечивость.

100% согласен. Но мы сейчас не с детьми дискутируем. Технология написания алгоритмов, которые без переделки можно загружать в МК, только создается. Поэтому я и задаю вопросы, напирая на способы применения Икон, а не на форму алгоритмов. Потому и отсутствуют комментарии, и коряво действия описаны, ибо не до того. Суть обсуждения в другом, в способах использования существующего графического алфавита Дракона.

А комментарии я расставлю, и даже картинки поясняющие в алгоритм вставлю, потом, если захотите. :wink:
Когда мы однозначно определимся, подходит ли новый прием для написания алгоритмов, или нет. На мой взгляд - подходит. Интересен взгляд сообщества.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 86 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2008-2024, участники конференции «DRAKON.SU», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB