DRAKON.SU

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

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




Начать новую тему Ответить на тему  [ Сообщений: 276 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7 ... 14  След.
Автор Сообщение
СообщениеДобавлено: Понедельник, 31 Декабрь, 2018 21:34 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1098
Откуда: Россия, Чебоксары
Дмитрий Бардынин писал(а):
Смотрите шире. Не в обвязке дело.
Так вам и предлагают смотреть шире, не ограничиваясь одним частным случаем Ардуино.
Обвязка действительно ни при чём - ибо нас в данном алгоритме интересует, что данный поток встаёт на паузу (и с точки зрения когнитивной эргономики эта пауза должна быть видна как разрыв потока, о чём говорили выше).
Реализация паузы зависит от системы, но на сам алгоритмический слой, рассматриваемый здесь, никак не влияет.

Цитата:
"Пауза 30 мин"-"Помешивая ложкой"
Идея не нова - это опять же очень частный случай пристёгивания естественного человеческого языка к программированию.
И это, вообще говоря, хорошо - за исключением того, что:
а) вы сознательно убираете часть алгоритма из рассмотрения (что значит "помешивать"? как "помешивать"? что делает "опрос клавиатуры"? и т.д. и т.п.);
б) вы полагаетесь на "здравый смысл" автора конкретной реализации.
Только мне кажется, что предлагаемое идёт вразрез с идеей универсального алгоритмического языка?

Цитата:
Отдельные схемы, если можно описать в двух иконках?
Только мне кажется, что НЕ ОПИСЫВАЯ в отдельной схеме эту вставку, которая справа, вы лишаете алгоритм полноты - и потому он перестаёт быть алгоритмом?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 01 Январь, 2019 13:49 

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

А сам процесс 'варки одновременно с помешиванием' можно описать в отдельной схеме (или нескольких схемах) и неважно насколько сложно оно будет. Как-никак, там может скрываться подробная инструкция на случай 'как быстро мешать', 'что делать, если вскипит', и т.п.

Только мне кажется, что НЕ ОПИСЫВАЯ в отдельной схеме эту вставку, которая справа, вы лишаете алгоритм полноты - и потому он перестаёт быть алгоритмом?


Конечно можно и так описать. У меня на занятиях, например, так второклашки часто пишут: все суют в квадратик, в том числе и данетные вопросы. Но мы же говорим про понятные шаги, описываемые одной командой/иконой. И насколько мы будем отличаться от таких малышей, обсуждая возможность запихнуть два альтернативных действия в один квадратик?

На мой взгляд описание алгоритма "\30 минут/--[Следующий шаг]==[Помешивай ложкой]" гораздо полезнее для понимания , чем "[Старт процесса Варить полчаса, помешивая ложкой]" одним блоком. В первом варианте содержится больше информации, как минимум.


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

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1098
Откуда: Россия, Чебоксары
Дмитрий Бардынин писал(а):
На мой взгляд описание алгоритма "\30 минут/--[Следующий шаг]==[Помешивай ложкой]" гораздо полезнее для понимания , чем "[Старт процесса Варить полчаса, помешивая ложкой]" одним блоком. В первом варианте содержится больше информации, как минимум.
Вообще-то, ровно столько же. А именно - процесс "помешивания ложкой" вынесен в отдельную схему.
Это нормально, это полезная структурная декомпозиция.

Однако вы сравниваете несколько несравнимые примеры. В чём разница?
Синтаксическое указание времени в первом случае говорит о том, что компилятор (исполняющая система) должны именно здесь располагать управление вспомогательным процессом, в то время как во втором случае вся ответственность перекладывается на вспомогательный процесс, а вызывающий алгоритм не имеет ни возможности контроля, ни гарантии точного исполнения.
Оба варианта имеют преимущества и недостатки, а выбор зависит от решаемой задачи.

Но "помешивание ложкой" всё равно где-то описывать придётся.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 01 Январь, 2019 20:21 

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

На самом деле в первой схеме больше информации. Например, из нее ясно, что будет выполняться после срабатывания Синхронизатора.
Alexey_Donskoy писал(а):
Однако вы сравниваете несколько несравнимые примеры. В чём разница?
Синтаксическое указание времени в первом случае говорит о том, что компилятор (исполняющая система) должны именно здесь располагать управление вспомогательным процессом, в то время как во втором случае вся ответственность перекладывается на вспомогательный процесс, а вызывающий алгоритм не имеет ни возможности контроля, ни гарантии точного исполнения.
Оба варианта имеют преимущества и недостатки, а выбор зависит от решаемой задачи.

Опять же, вы сами подтверждаете, что первая схема нагляднее, т.к. заранее понятен текущий алгоритм ожидания, тогда как во втором еще только предстоит с ним познакомиться.
Alexey_Donskoy писал(а):
Но "помешивание ложкой" всё равно где-то описывать придётся.
Поймите правильно: я в данном случае за разумное расширение синтаксиса, но против его обоснования частным случаем контроллера Ардуино.

Очень резкий переход на Ардуино после варенья, но я понимаю вашу мысль как протест против Ардуино и частного случая, а не против расширения синтаксиса. Тогда и давайте его обсуждать. Мой вариант позволяет делать короткую запись вместо разветвленной традиционной - это плюс. Негативных сторон пока не увидел.


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

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 585
Дмитрий Бардынин писал(а):
Обработку исключений тоже будем
в конфиге прописывать?

Это хорошая мысль. Вводим правило, которое
применяется к одному алгоритму
или к группе алгоритмов.
Как в старые времена:
Код:
ON ERROR GOTO NEXT

или
Код:
ON ERROR GOTO 1020
(Это шутка со ссылкой на Бейсик).
Кстати Олег Гарипов уже придумал, как отлавливать исключения в ДРАКОНе.
Примерно так (где-то уже есть на форуме):
Вложение:
exception2.png
exception2.png [ 11.5 КБ | Просмотров: 7257 ]

Это равнозначно
Код:
try {
    FooBar(moo, doo);
} catch (FileNotFoundException ex) {
    print("File not found": filename);
} catch (SecurityException ex) {
    print("Intrusion!");
} catch {
    print("Other error");
} finally {
    print("It's over somehow");
}



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

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


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


Последний раз редактировалось Дмитрий Бардынин Среда, 02 Январь, 2019 12:06, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 02 Январь, 2019 12:05 

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


Вложения:
Комментарий к файлу: Запись альтернативы "Временной вставкой"
Снимок2.GIF
Снимок2.GIF [ 4.14 КБ | Просмотров: 7233 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 02 Январь, 2019 12:41 

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

Негативные стороны есть. Они носят педагогический характер.

Вспомним важное отличие языка ДРАКОН от других языков. Понимаемость алгоритма человеком объявляется важнейшим свойством алгоритма.
Понимаемость ставится на первое место.

Это требование отражают лозунги
Цитата:
Посмотрел — и сразу понял!
Взглянул — и сразу стало ясно!


Понимаемость, а не краткость или что-то иное.

Дмитрий, вы предлагаете новые идеи, и это хорошо.
Это замечательно!

Но как их понять?
Легко ли понять ваши предложения?
Читателю это нелегко.
Более того, это трудно.

Значит, читателю нужно помочь.
Нужно облегчить его тяжкий труд по восприятию ваших идей.

Как это можно сделать?

Мне кажется, сначала нужно показать учащимся детальную схему, демонстрирующую параллельность процессов.

Изображение

Две горизонтальные линии показывают, что речь идет о двух параллельных процессах (а не об альтернативе, как вы пишите).

Затем нужно показать схему Степана Митькина как еще один хороший, понятный вариант решения задачи

Изображение

И только после этого можно предлагать ваш, Дмитрий, вариант схемы, подчеркивая, что все три нотации (три схемы) обозначают ОДНО И ТО ЖЕ. Один и тот же алгоритм.

Изображение

Да, я признаю, что такая схема изящна и компактна.

Но. Понять ее очень сложно или даже невозможно.
Смогут ли учащиеся по этой схеме разобраться в деталях или воспроизвести верхнюю схему?
Не смогут.
Или же это будет очень и очень не просто.
Они смогут ее зазубрить, ничего не понимая (или не полностью понимая). И отвечать на ваши вопросы механически, как бобики или заведенные куклы.

И лишь ссылка на две верхние схемы (как на подсказку) может спасти положение.

============================

Но на этом огорчения не кончаются.

Что такое 1000 ?
Это часы, минуты, секунды или миллисекунды?
Размерность нужно обязательно проставлять.
Иначе получается неаккуратность или нигде не оговоренный частный случай.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 02 Январь, 2019 13:39 

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 11 Январь, 2019 21:03 

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


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

Зарегистрирован: Среда, 27 Сентябрь, 2017 18:44
Сообщения: 332
Варка варенья для МК
Снова приходим к тому что алгоритм для МК может быть только цикличным
ИЛИ плохой вариант конечный с паузами и полной остановкой программы


Вложения:
варить варенье.png
варить варенье.png [ 9.34 КБ | Просмотров: 7139 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 12 Январь, 2019 10:00 

Зарегистрирован: Среда, 27 Сентябрь, 2017 18:44
Сообщения: 332
Сори забыл икону"не мешать ложкой"


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

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1098
Откуда: Россия, Чебоксары
А_МУР писал(а):
Варка варенья для МК
1) Что означает вопрос "варенье варится"? Как проверяется это состояние?
2) как запускается новое состояние "варенье варится"?
3) таймер будет здесь запускаться в каждом цикле, тут-то всё и зациклится навсегда.
4) есть команда "выключить" - а где "включить"? За кадром?
В общем, нельзя такие алгоритмы писать.


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

Зарегистрирован: Среда, 27 Сентябрь, 2017 18:44
Сообщения: 332
Да действитель ошибочка!
Я думал опять ни кто читать не будет!
В иконе пуск таймера лишняя запись А=0
Варенье варится абстрагированая команда что бы с чегото начать!
Писать конкретный алгорит задачи не было
Алгоритм работать все равно не будет... есть еще некоторые аспекты работы с таймерами для МК...


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

Зарегистрирован: Среда, 27 Сентябрь, 2017 18:44
Сообщения: 332
Таймер в любом случае с МК будет пускаться в каждом цикле!
Вы не провильно указали .... он будет обнулятся каждый цикл


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

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 439
Откуда: Астрахань-Сочи
Как вам такой вариант?
Вложение:
Комментарий к файлу: Варка варенья с временной вставкой
Снимок5.PNG
Снимок5.PNG [ 7.25 КБ | Просмотров: 7135 ]


Вместо "Варить варенье" можно вставить икону "Включить варенье". Суть алгоритма при этом не меняется.


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

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1098
Откуда: Россия, Чебоксары
А_МУР писал(а):
Таймер в любом случае с МК будет пускаться в каждом цикле!
Вы не провильно указали .... он будет обнулятся каждый цикл
Семантика таймера зависит от исполнителя.
Например, в большинстве контроллеров выставляешь настройки (скорость счёта) и начальное значение счётчика, затем запускаешь таймер. Дойдёт счётчик до нуля - вызовет прерывание.
Кухонный таймер, функция "таймер" на смартфоне работают точно так же.
И только "секундомер" работает наоборот - считает от нуля до момента остановки. Но он даже по названию уже не "таймер"! :)

Дмитрий Бардынин писал(а):
Как вам такой вариант?
Выглядит красиво, но непонятно.
Потерян ПУТЬ алгоритма.
Невозможно понять, сколько раз выполнится "мешать ложкой".

Цитата:
Вместо "Варить варенье" можно вставить икону "Включить варенье".
Не можно, а нужно.


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

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

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

Alexey_Donskoy писал(а):
Не можно, а нужно.
Просто выражение "включить варенье" режет слух сильнее, чем "варить варенье".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 12 Январь, 2019 15:24 

Зарегистрирован: Среда, 27 Сентябрь, 2017 18:44
Сообщения: 332
Цитата:
Семантика таймера зависит от исполнителя.
Например, в большинстве контроллеров выставляешь настройки (скорость счёта) и начальное значение счётчика, затем запускаешь таймер. Дойдёт счётчик до нуля - вызовет прерывание.
Кухонный таймер, функция "таймер" на смартфоне работают точно так же.
И только "секундомер" работает наоборот - считает от нуля до момента остановки. Но он даже по названию уже не "таймер"! 

Думаю сначала надо определиться с загадочным Зверем который называется ТАЙМЕР


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 12 Январь, 2019 16:04 

Зарегистрирован: Среда, 27 Сентябрь, 2017 18:44
Сообщения: 332
Alexey_Donskoy писал(а):
А_МУР писал(а):
Таймер в любом случае с МК будет пускаться в каждом цикле!
Вы не провильно указали .... он будет обнулятся каждый цикл
Семантика таймера зависит от исполнителя.
Например, в большинстве контроллеров выставляешь настройки (скорость счёта) и начальное значение счётчика, затем запускаешь таймер. Дойдёт счётчик до нуля - вызовет прерывание.
Кухонный таймер, функция "таймер" на смартфоне работают точно так же.
И только "секундомер" работает наоборот - считает от нуля до момента остановки. Но он даже по названию уже не "таймер"! :)

Дмитрий Бардынин писал(а):
Как вам такой вариант?
Выглядит красиво, но непонятно.
Потерян ПУТЬ алгоритма.
Невозможно понять, сколько раз выполнится "мешать ложкой".

Цитата:
Вместо "Варить варенье" можно вставить икону "Включить варенье".
Не можно, а нужно.

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

Стандартные таймеры для контролеров:

Таймер задержки включения - включает дискретный выход, через заданный в уставке интервал времени после запуска таймера

Таймер задержки выключения - задерживает отключение дискретного выхода на уставку после команды стоп таймер

Таймер импульса - включает дискретный выход на заданный интервал в уставке времени

Таймер реального времени - возвращает в программу час, день, мин и тд .... в виде целочисленных переменных


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

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


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

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


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

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