DRAKON.SU
https://forum.drakon.su/

Программируем с и.с. Drakon
https://forum.drakon.su/viewtopic.php?f=144&t=3129
Страница 2 из 3

Автор:  ==== [ Понедельник, 17 Январь, 2011 21:27 ]
Заголовок сообщения:  Re: Программируем с и.с. Drakon

http://forum.oberoncore.ru/viewtopic.php?p=57369#p57369
В схеме GPRS_send_A.drt в комметарии и в программных приложениях правильно так:
Код:
Time = GetTime();
while (GetTime() - Time) <= SEKUNDA)
    rt_free;

Изменено с ">=" на "<=".

Автор:  efanov [ Вторник, 18 Январь, 2011 11:39 ]
Заголовок сообщения:  Re: Программируем с и.с. Drakon

Геннадий Тышов писал(а):
http://forum.oberoncore.ru/viewtopic.php?p=57369#p57369
В схеме GPRS_send_A.drt в комметарии и в программных приложениях правильно так:
Код:
Time = GetTime();
while (GetTime() - Time) <= SEKUNDA)
    rt_free;

Изменено с ">=" на "<=".
Да, конечно, точнее нужно не "<=", а просто "<" . Я не думаю, что кто то возьмётся это повторять. Но если подходить к этому примеру строго, то нужно сказать, что он и в этом виде не рабочий. Дело в том, что предложенные макросы (rt_begin, rt_free, rt_end) образуют в тексте программы переключатель switch. Это хорошо работает, пока в тексте нет иных переходов, кроме goto. Но нужно быть осторожным с циклами, в частности while. Если переписать этот пример с "разворачиванием" макроса, то мы увидим:
Код:
while (GetTime() -  Time) < SEKUNDA)
ss = __LINE__;  break;  case __LINE__:
и тут есть сразу несколько причин не работать: во первых, отсутствие фигурных скобок вокруг макроса уже приводит к циклу, который работает без задержки:
Код:
while (GetTime() -  Time) < SEKUNDA)
ss = __LINE__;
Эта проблема легко решается заключением макроса в скобки, но тогда мы имеем внутри скобок оператор break, который опять таки сразу же прервёт цикл while:
Код:
while (GetTime() <  Time) < SEKUNDA)
{
ss = __LINE__;  break;  case __LINE__:
}
Для решения этой проблемы я изменил свои макросы, и добавил к ним ещё два:
Код:
#define rt_begin static unsigned int ss = 0; switch(ss){ default: ss = 0; case 0:
#define rt_free ss = __LINE__; goto RT_END; case __LINE__:
#define rt_end RT_END:;}
#define TMO(x) Usl = ((GetTime() - Time) >= x);// это макрос для развилки с вопросом "прошло х секунд?"
#define PAUZA(x) Time = GetTime(); \
while(( GetTime() - Time) < x)\
{\
    rt_free;\
}// это макрос для иконки "пауза р.в"
Теперь задержки работают без проблем.

С уважением, Ефанов Сергей.

Автор:  ==== [ Среда, 19 Январь, 2011 05:28 ]
Заголовок сообщения:  Re: Программируем с и.с. Drakon

efanov писал(а):
С уважением, Ефанов Сергей.
Если это ко мне, то есть предложение не использовать эту фразу, что бы к обсуждению могли подключится и другие.

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

В вашем примере теперь есть код реализации для икон реального времени "Пуск таймера", "Пауза" и "Период".

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

Автор:  efanov [ Среда, 19 Январь, 2011 11:44 ]
Заголовок сообщения:  Re: Программируем с и.с. Drakon

Геннадий Тышов писал(а):
Нет примера реализации иконы "Синхронизатор по таймеру"
Перед кодом, реализущим действие в иконе, к которой присоединён "Синхронизатор по таймеру" добавить примерно следующее:
Код:
if((GetTime() - Time) < SEKUNDA)
{
     rt_free;
}

Автор:  ==== [ Среда, 19 Январь, 2011 21:51 ]
Заголовок сообщения:  Re: Программируем с и.с. Drakon

Взамен if необходимы: while и ЗначениеСинхронизатора
Код:
while ((GetTime() - Time) < ЗначениеСинхронизатора)
{
     rt_free;
}

Автор:  efanov [ Четверг, 20 Январь, 2011 09:43 ]
Заголовок сообщения:  Re: Программируем с и.с. Drakon

Геннадий Тышов писал(а):
Взамен if необходимы: while и ЗначениеСинхронизатора
Да, конечно, - тут я ошибся.

Автор:  ==== [ Суббота, 22 Январь, 2011 06:35 ]
Заголовок сообщения:  Re: Программируем с и.с. Drakon

Вложение:
вариант_меню.png

efanov писал(а):
Как на Ваш взгляд, какой из них более правильный, более наглядный и более соответствует правилам языка Дракон?
Наглядной и соответствующей правилам языка Дракона является 1-я схема.
1. Основная задача, допустить пользователя к меню, реализуется иконой "Адрес" - "Меню", это главное действие и оно размещено на главном шампуре.
2. В схеме имеем декомпозицию циклов, разделение функций между веточным циклом и циклом "Ждать",
3. Цикл "Ждать" также гораздо проще, т.к. в петле цикла 1 вход, на 2-й же схеме их 3.

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

В ИС Дракон язык Дракон получил развитие. Здесь иконы и схемы имеют ряд дополнительных элементов. По В.Д. Паронджанову, Дракон-схема в отрыве от системы Графит-Флокс, это бумажный документ, в ИС Дракон это интерактивный документ используемый на ПЭВМ.

В идентификаторах икон можно указать роль, т.е. принадлежность иконы к действиям пользователя. Наличие у икон меток позволит обращать внимание на действия пользователя. Таким образом можно сделать алгоритм двухслойным, с разделением действий пользователя и реакцией устройства.

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

Автор:  efanov [ Суббота, 22 Январь, 2011 07:21 ]
Заголовок сообщения:  Re: Программируем с и.с. Drakon

Геннадий Тышов писал(а):
Не мог понять функционального или предметного смысла текстов икон. Терминология ориентирована на программиста, разработчика схемы, для пользователя она не понятна.
Да, действительно, я тут уже для своего конкретного устройства (то бишь - для себя) имена иконкам давал.
Цитата:
В идентификаторах икон можно указать роль, т.е. принадлежность иконы к действиям пользователя. Наличие у икон меток позволит обращать внимание на действия пользователя. Таким образом можно сделать алгоритм двухслойным, с разделением действий пользователя и реакцией устройства.
Речь идёт о первом и втором текстовом квадратиках на иконах? Пока для меня их смысл и назначение не ясен. Меня увлекла, в первую очередь, возможность решить свои практические проблемы - получение работающих программ. Но потихоньку разберусь со всем.
Цитата:
Сергей, хочу отметить ваш быстрый прогресс, от первого знакомства с идеями языка Дракон до инструментального его использования в практической деятельности.
Да мне кажется, что этот язык специально для меня придумали!

Автор:  efanov [ Суббота, 22 Январь, 2011 09:10 ]
Заголовок сообщения:  Re: Программируем с и.с. Drakon

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

Автор:  ==== [ Суббота, 22 Январь, 2011 10:23 ]
Заголовок сообщения:  Re: Программируем с и.с. Drakon

Сергей, к вопросу о вводе пароля, схема на Драконе:
http://forum.oberoncore.ru/viewtopic.php?p=38422#p38422
http://www.free-lance.ru/users/fedyaev-andrey/viewproj.php?prjid=1640353
http://freelance.ru/users/fedyaev-andrey/
http://www.weblancer.net/users/fedyaev-andrey/portfolio/750801.html
http://uidesign.ru/projects/project_029.php

Автор:  Владислав Жаринов [ Суббота, 22 Январь, 2011 13:25 ]
Заголовок сообщения:  Re: Программируем с и.с. Drakon

efanov писал(а):
Геннадий Тышов писал(а):
В идентификаторах икон можно указать роль, т.е. принадлежность иконы к действиям пользователя. Наличие у икон меток позволит обращать внимание на действия пользователя. Таким образом можно сделать алгоритм двухслойным, с разделением действий пользователя и реакцией устройства.
Речь идёт о первом и втором текстовом квадратиках на иконах? Пока для меня их смысл и назначение не ясен.
Есть мнение, что "двухслойная" шампур-схема не есть алгоритмическая, "с разделением действий пользователя и реакций устройства". Дело в том, что по такой схеме фактически идут две "рабочих точки" разных исполнителей - а по алгоритму должна идти одна. Т.е. это можно понимать как спецификацию человеко-машинного решения. Разделение на алгоритмы даёт шампур-модель со взаимодействующими ("параллельными") процессами - как дракон-инструкция и дракон-программа в этом примере - вот они уже алгоритмы, т.к. по каждому идёт своя "рабочая точка".

Автор:  efanov [ Среда, 02 Февраль, 2011 11:27 ]
Заголовок сообщения:  Re: Программируем с и.с. Drakon

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

Вложения:
дозвон по тревоге.drt [52.4 КБ]
Скачиваний: 611

Автор:  Владимир Паронджанов [ Понедельник, 07 Февраль, 2011 13:53 ]
Заголовок сообщения:  Re: Программируем с и.с. Drakon

Согласно логической последовательности
следующее сообщение Сергея Ефанова см. здесь

viewtopic.php?p=59602#p59602

Автор:  ==== [ Суббота, 12 Февраль, 2011 15:48 ]
Заголовок сообщения:  Re: Программируем с и.с. Drakon

http://denwebs.blogspot.com/2010/10/blog-post.html
Денис http://denwebs.blogspot.com/2007_12_06_archive.html

Язык ДРАКОН

Цитата:
Разработчики языка полагают, что правила языка ДРАКОН по созданию диаграмм оптимизированы для восприятия алгоритмов человеком. Таким образом, язык предлагается в качестве инструмента усиления интеллекта.

Вот эти самые "оптимизация для восприятия алгоритмов человеком" и "усиление интеллекта" меня в нем и заинтересовали.
...
- подумал, а может попробовать применить его в текущем проекте на работе? Тем более, что задачка для этого есть подходящая: разработка алгоритма обмена данными между задачами RTOS и с сервером в навигационном терминале. Вдруг чтото хорошее из этого и получится:)

Автор:  efanov [ Суббота, 12 Февраль, 2011 16:59 ]
Заголовок сообщения:  Человек так устроен - когда хорошо, хочется ещё лучше.

Активно работаю с редактором над довольно большим (по моим масштабам) проектом. В процессе работы потихоньку вырабатываются некоторые навыки и приёмы. Вот как сейчас выглядит у меня "рабочий цикл". По мере увеличения объёма проекта, всё больше хочется автоматизировать процесс в ветке "Получение текста программы" ...

Вложения:
Работа над проектом.drt [3.4 КБ]
Скачиваний: 633

Автор:  Владислав Жаринов [ Суббота, 12 Февраль, 2011 18:13 ]
Заголовок сообщения:  Re: Человек так устроен - когда хорошо, хочется ещё лучше.

efanov писал(а):
... По мере увеличения объёма проекта, всё больше хочется автоматизировать процесс в ветке "Получение текста программы" ...
И как Вы предполагаете это сделать?

Автор:  efanov [ Суббота, 12 Февраль, 2011 18:23 ]
Заголовок сообщения:  Re: Человек так устроен - когда хорошо, хочется ещё лучше.

Драконограф писал(а):
efanov писал(а):
... По мере увеличения объёма проекта, всё больше хочется автоматизировать процесс в ветке "Получение текста программы" ...
И как Вы предполагаете это сделать?
Я тут ничего не могу сделать. Это изменения в редактор надо вносить. То есть, я в такой форме высказал пожелание автору. Просить его прямо я уже стесняюсь - и так уже, наверное, надоел своими просьбами. Уж извините...

Автор:  Владислав Жаринов [ Суббота, 12 Февраль, 2011 18:56 ]
Заголовок сообщения:  Re: Человек так устроен - когда хорошо, хочется ещё лучше.

efanov писал(а):
Драконограф писал(а):
efanov писал(а):
... По мере увеличения объёма проекта, всё больше хочется автоматизировать процесс в ветке "Получение текста программы" ...
И как Вы предполагаете это сделать?
Я тут ничего не могу сделать. Это изменения в редактор надо вносить. То есть, я в такой форме высказал пожелание автору. Просить его прямо я уже стесняюсь - и так уже, наверное, надоел своими просьбами. Уж извините...

Ну а как иначе? Тем более по Вашей просьбе был реализован механизм "номерной трассы" - считаю, вполне подходящий в разработке для "некризисных" применений - в смысле определения Громова. Для "кризисных", конечно, нужен другой подход - моделирование для формальной верификации - впрочем, об этом достаточно говорил здесь и здесь хотя бы...

Автор:  Владимир Паронджанов [ Суббота, 12 Февраль, 2011 19:31 ]
Заголовок сообщения:  Re: Человек так устроен - когда хорошо, хочется ещё лучше.

efanov писал(а):
Активно работаю с редактором над довольно большим (по моим масштабам) проектом. В процессе работы потихоньку вырабатываются некоторые навыки и приёмы. Вот как сейчас выглядит у меня "рабочий цикл". По мере увеличения объёма проекта, всё больше хочется автоматизировать процесс в ветке "Получение текста программы" ...


Уважамый Сергей Ефанов!

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

Пожалуйста, высказывайте Ваши предложения ПОДРОБНО, В ЯВНОМ ВИДЕ,
желательно в виде пронумерованных пунктов.

В качестве аналога или образца можно взять предложения пользователя VOT7:
viewtopic.php?p=55918#p55918

Не надо делать предложения в робкой и косвенной форме.
Вы хотите внести изменения в ИС Дракон?
Скажите четко, какие именно изменения Вам нужны.

Геннадий Николаевич рассмотрит Ваши предложения и, возможно,
учтет их в своей работе.
В любом случае все будут Вам благодарны за Вашу инициативу.

Владимир Паронджанов

Автор:  Владислав Жаринов [ Суббота, 12 Февраль, 2011 19:34 ]
Заголовок сообщения:  Re: Человек так устроен - когда хорошо, хочется ещё лучше.

Владимир Паронджанов писал(а):
...
Уважамый Сергей Ефанов!
...
Пожалуйста, высказывайте Ваши предложения ПОДРОБНО, В ЯВНОМ ВИДЕ,
желательно в виде пронумерованных пунктов.

В качестве аналога или образца можно взять предложения пользователя VOT7:
viewtopic.php?p=55918#p55918
... и не забывая требования: один пункт - один пост :)

Страница 2 из 3 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/