1 / 1 / 0
Регистрация: 25.01.2012
Сообщений: 492

Обсуждение ИС Дракон

28.01.2012, 19:20. Показов 1164635. Ответов 1644
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Учитывая интерес (как собственный, так и сообщества) к данному средству, решил вынести в отдельную тему, т.к. вобсуждении статьи очень тяжело ориентироваться.
Цель - не только обсудить, но и в меру возможностей посодействовать развитию данного проекта.
Задачи:
1. Создание актуальной и удобной справочной системы
2. Совершенствование кодогенератора, поддержка новых языков
3. Что-нибудь ещё придумаем по ходу :)
______________________________

Мои предложения по п.1:
Организовать открытый проект на вики-системе, чтобы каждый мог легко внести свой посильный вклад в свободное время.
Например, на викиучебниках (если там модеры не такие отмтроженные, как на педивикии)

По п.2 пусть предлагают те, кому актуально *(ассемблисты, например).
От себя бы предложил автору представить полную спецификацию формата хранения дракон-схем .drt, чтобы люди могли подключать к редактору собственные примочки (не только кодогенераторы, а и преобразователи, например, в .pdf, .doc итдитп.)

В общем, как-то так.
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.01.2012, 19:20
Ответы с готовыми решениями:

Дракон на Андроиде
Автор Никалий Ивиницкий 27 сентября 2015 г. 21:27:00 http://analyticls.ru/---8 И индроид тоже! ...

Дракон хартера-хейтуэя
Здравствуйте! Кто то умеет переводить программы с Делфи на С++, у меня что то плохо получается! Кода очень мало, но некоторые моменты мне...

Тест: Какой вы дракон)))
http://aeterna.ru/test.php?link=tests:365 Вы спокойны, сдержанны и весьма неразговорчивы. Вы склонны отдаляться от этого мира, лежать в...

1644
idm2007
04.02.2012, 15:01
Студворк — интернет-сервис помощи студентам
Сергей, спасибо. Я прекрасно понял суть, так на выходе будет создана метка, на которую икона "Конец" в любом случае перенаправит. Но никак не могу привыкнуть к куче прыжков. Ужас просто. :)))
ifomov
04.02.2012, 15:23
Цитата Сообщение от idm2007
не могу привыкнуть к куче прыжков. Ужас просто. :)))
А туда смотреть не надо. Тем более, что компилятор при включении оптимизации сам уберёт большую часть этих прыжков.
1 / 1 / 0
Регистрация: 25.01.2012
Сообщений: 492
04.02.2012, 16:23
Цитата Сообщение от ifomov
В иконе "Конец" напишите goto end_interrupt;
В программном приложении схемы перед закрывающей фигурной скобкой напишите end_interrupt:;
Ну вы блин даёте...
А нельзя написать просто:
// типа конец
?

Вроде был уже вопрос, но повторюсь, т.к. в свое время не дошел до этого момента.
Во многих иконах есть поля "приложение А" и Б.
Опытным путем установлено, что в кодогенерации они не участвуют.
Тогда для чего?
Ещё заметил, что слева от икон можно ставить галочки.
Зачем?
0
idm2007
04.02.2012, 16:43
Цитата Сообщение от MrYurom
Ну вы блин даёте...
А нельзя написать просто:
// типа конец
Цитата Сообщение от idm2007
а вот в иконе "Конец" я не знаю что писать. Вроде как ничего не нужно, просто комментарий написал.
Посмотрите внимательнее, я и писал коментарий:

Code
1
//**********************************************
Только какая разница, если он присваивает иконе "Конец" метку. А она находится в середине.
0 / 0 / 0
Регистрация: 25.01.2012
Сообщений: 494
04.02.2012, 17:12
Цитата Сообщение от MrYurom
Вроде был уже вопрос, но повторюсь, т.к. в свое время не дошел до этого момента.Во многих иконах есть поля "приложение А" и Б.Опытным путем установлено, что в кодогенерации они не участвуют.Тогда для чего?
ИС Дракон является средой языка Дракон для общего и широкого применения.

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

Цитата Сообщение от MrYurom
Ещё заметил, что слева от икон можно ставить галочки.Зачем?
Галочки у икон, называются метками. Назначение их также на ваш выбор. Для программиста есть пункт меню "Программирование / Трассировка икон с метками", вы по время отладочного прогона можете получить протокол последовательности выполнения отмеченных икон.

Дракон может использоваться для алгоритма деятельности, можете помечать выполненные этапы, начальник может отметить что что требуется переделать. Установите для себя свои правила применения отметки. В контекстном меню схемы есть пункт "Удалить все метки", в меню "Найти" есть пункт "Найти иконы с метками".
0
idm2007
04.02.2012, 23:01
Немного не в тему: посмотрел дизасм в студии, оператор return как и положено для прерываний как RETI а для функций RET. То бишь я могу в иконе "Конец" все же просто написать return;? Просто я совсем недавно разбираюсь с правильным Си для AVR. И в общем случае обработка выглядит как:

Code
1
2
3
4
ISR(TIM0_OVF_vect)
{
//.........................
}
Допрыгали до конца и ушли обратно. Не будет ошибкой самому указать где именно выходить?
0 / 0 / 0
Регистрация: 14.03.2011
Сообщений: 10
04.02.2012, 23:23
Не должно. Оператор return - штатный выход из функции. Компилятор должен его правильно обработать - он сам знает, какого типа функция и как из нее парвильно выйти (поставить RET, RETI или прыгнуть на общий для всех returnов хвост).

А вообще, размещать икону "конец" в середине кода - оригинально-с.

P.S.
ИС Дракон является средой языка Дракон для общего и широкого применения.
Рановато для такого пафоса, пока что оно только на поделку тянет. Алсо, где вы тут "интегрированную среду" увидели? Сделайте менеджер проекта и систему сборки и отладки прежде чем это называть "ИС". Сейчас это не более чем редактор.
0
0 / 0 / 0
Регистрация: 25.01.2012
Сообщений: 494
04.02.2012, 23:52
Цитата Сообщение от Vko
А вообще, размещать икону "конец" в середине кода - оригинально-с.
А вы, что не слышали о возможности выхода из середины процедуры?
0
0 / 0 / 0
Регистрация: 25.01.2012
Сообщений: 494
05.02.2012, 00:00
Цитата Сообщение от Vko
Сейчас это не более чем редактор.
Это более чем редактор, есть транслятор маршрутной части алгоритма в программный код ряда языков программирования, есть верификация структур языка Дракон, предусмотрена работа со всем комплектом дракон-схем проекта.
0
0 / 0 / 0
Регистрация: 14.03.2011
Сообщений: 10
05.02.2012, 00:30
Редактор с кодогенератором - маловато, чтобы называться ИС.
0
1 / 1 / 0
Регистрация: 25.01.2012
Сообщений: 492
05.02.2012, 10:04
Цитата Сообщение от idm2007
Немного не в тему: посмотрел дизасм в студии, оператор return как и положено для прерываний как RETI а для функций RET. То бишь я могу в иконе "Конец" все же просто написать return;?
Имеете полное право.
И можно даже не в конце, а хоть в самом начале.
Например:
if(something) // а не зря ли мы сюда вошли?
return;
// продолжаем дальше, если все нормально
0
1 / 1 / 0
Регистрация: 25.01.2012
Сообщений: 492
05.02.2012, 10:33
Цитата Сообщение от ifomov
А туда смотреть не надо. Тем более, что компилятор при включении оптимизации сам уберёт большую часть этих прыжков.
goto это пусть...
Но вот как по мне, идеологически неверно преобразовывать "переключатель" в if-else-goto.
Почему?
Очень просто. Паронджанов в своей книге декларирует абсолютную тождественность графического и текстового описания алгоритма.
То есть, полученный из дракон-схемы текст должен однозначно преобразовываться обратно в исходную схему.
В случае switch-case это легко реализуемо. if-else преобразуется в лесенку развилок, что исказит исходную картинку.
Да и оптимизируется switch местами гораздо лучше, превращаясь в таблицу переходов.

Также, лично я бы преобразовывал ветки в do{}while(0), пусть даже с goto между ними. Это улучшает структуру текста и облегчает дальнейшую работу именно с текстом. И самое главное, что теоретически никаких препятствий для этого не вижу.
Начало ветки сопроводить текстом "do{", а конец - "}while(0)", ничего больше не меняя.
0
0 / 0 / 0
Регистрация: 21.12.2011
Сообщений: 59
05.02.2012, 10:47
Цитата Сообщение от MrYurom
if-else преобразуется в лесенку развилок, что исказит исходную картинку.
Да и оптимизируется switch местами гораздо лучше, превращаясь в таблицу переходов.
Для ARM например тактика if-else может иметь больше успеха учитывая его префиксные условные команды, да и кое где еще существует команда "пропуска если". Даже если сильно захотеть - оптимизатор может так координально всю структуру изменить что мама родная не узнает схемы переходов в итоге.
0
1 / 1 / 0
Регистрация: 25.01.2012
Сообщений: 492
05.02.2012, 10:58
Цитата Сообщение от dykytotymvytro
Для ARM например тактика if-else может иметь больше успеха учитывая его префиксные условные команды
Так вот суть в том, что в общем случае компилятор сам может преобразовать switch() в if-else, если это будет оптимальнее, а вот обратно вряд ли.
Представим ситуацию парсинга какого-нибудь протокола и выбор одного из 100 последовательных вариантов.
Один переход по вычисленному смещению значительно быстрее и компактнее, чем последовательный перебор 100 условий.
Опять же, в случае switch() даже перебор условий может быть оптимизирован в симметричное дерево, значительно сократив количество развилок.
0
0 / 0 / 0
Регистрация: 21.12.2011
Сообщений: 59
05.02.2012, 11:34
Цитата Сообщение от MrYurom
Опять же, в случае switch() даже перебор условий может быть оптимизирован в симметричное дерево, значительно сократив количество развилок.
Безусловно. Я про то что прямого отражения Дракон схемы на результирующий код можно никогда и не получить.
0
idm2007
05.02.2012, 14:35
Vko, MrYurom, спасибо за ответы.

Попробовал несколько return-ов поставить по условиям. Посмотрел асм, да, действительно все собралось на один RETI.

Цитата Сообщение от Vko
А вообще, размещать икону "конец" в середине кода - оригинально-с.
Вот мне это тоже показалось нелогичным абсолютно. Что мешало размещать икону "Конец" там, где ей и место.
idm2007
05.02.2012, 18:24
Хм, почему-то Дракон стал зависать при сохранении файлов проекта (не листа). И через меню "Программирование" и просто при нажатии F9. И даже при нажатии на четвертый квадратик иконы "Модуль" (чтобы просто посмотреть собраный код). Среда просто зависает и "Не отвечает". При повторном запуске слетает "Вид" (белый фон). Пробовал удалять папку программы и распаковывать снова.

UPD: Как я понял, это связано с тем что путь к программным файлам ведет в папку с проектом AVR Studyo 5. Я просто хотел чтобы при изменении схемы в Драконе, код в студии менялся автоматом...
0 / 0 / 0
Регистрация: 18.02.2010
Сообщений: 71
05.02.2012, 19:46
Здравствуйте!
Посмотрел ролики Сергея Ефанова, зацепило решил попробовать, поднял проект часов на МК Atmega-48 который и выкладываю здесь. Может кому поможет начать работать с данной средой.
При написании возник вопрос если в цикле для есть условный переход,то код не собирается из-за, того что транслятор размещает метку в конце цикла для, может кто подскажет как устранить:
пример:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 /* F:\Eclipse_progekt\clock\Новый_01.drt */
/* 1. ИС Дракон. Трансляция маршрутной части. Изменение 06.02.2012 20:27:46 */
/* Схема - Процедура */
ISR (SIG_OVERFLOW1)
{
 
/* ==================== Шампур */
 
/* 2. Заголовок // Обработка служебного таймера */
 
/* 17. ЦиклДляНачало // обработка таймеров от 0 до maxGTIMERS */
uint8_t i;
for (i=0; i>=maxGTIMERS; i++)
{
 
/* 8. Вопрос // таймер запущен */
if (!(GTStates [i]==TIMER_RUNNING)) goto L18;
 
/* 3. Действие // увеличить значение */
GTimers[i]++;
 
L18:
/* 18. ЦиклДляКонец // конец обработки */
}
 
/* 13. Конец // Конец */
return;
 
}
[62.65 Кб]


http://**************************/download/file.php?id=8699&sid=dc7b58d869def5a0b4c 0251d9f208f9a
0
0 / 0 / 0
Регистрация: 21.12.2011
Сообщений: 59
05.02.2012, 20:01
Цитата Сообщение от idm2007
UPD: Как я понял, это связано с тем что путь к программным файлам ведет в папку с проектом AVR Studyo 5. Я просто хотел чтобы при изменении схемы в Драконе, код в студии менялся автоматом...
Закономерное желание. Делал так для IAR, обошлось без висов. Не слишком длинный путь или может быть в пути присутствуют пробелы?
0
0 / 0 / 0
Регистрация: 25.01.2012
Сообщений: 494
05.02.2012, 20:13
Цитата Сообщение от Miko_Vott
При написании возник вопрос если в цикле для есть условный переход,то код не собирается из-за, того что транслятор размещает метку в конце цикла для, может кто подскажет как устранить:
Я не пользовался Си.
Не понял. Разве нельзя поместить метку перед концом цикла? Что надо устранить?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.02.2012, 20:13

Дракон, UML, LabVIEW
Можно из Дракона прямо на Обероне без программирования модуль создавать http://sage.com.ua/ru.shtml?e6l0 Наверное можно и для других...

Ищу кисть - дракон
ищю такого дракона:

Дракон Хартера-Хайтвея
Решил для примера разобрать фрактал. Понять хотя бы общую часть построения на основе книги Кроновера. Нашел один код для матлаба, подправил...

ИС Дракон. Вопрос - ответ.
В теме "Обсуждаем ИС Дракон" идут бурные обсуждения. Вопросы теряются. Здесь задаем вопрос только по ИС Дракон. Сколько вопросов...

Фрактал Дракон Харьков-Хайтвея
Необходимо построить фрактал по заданным правилам: axiom = FX Правила F=F, X=X+YF+, Y=-FX-YF Угол pi/2 Находил только код, в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
80
Закрытая тема Создать тему
Опции темы

Новые блоги и статьи
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru