OberonCore https://forum.oberoncore.ru/ |
|
Программы AB_VJAZ и DAL_VJAZ https://forum.oberoncore.ru/viewtopic.php?f=121&t=3383 |
Страница 5 из 6 |
Автор: | Дмитрий_ВБ [ Среда, 11 Апрель, 2012 14:55 ] |
Заголовок сообщения: | Re: Программы AB_VJAZ и DAL_VJAZ |
> А почему нельзя оформить ветку силуэта как функцию? В моей программе можно. Кстати, она изначально была ориентирована на языки без goto. Но имеет ли смысл вести теоретиеские рассуждения, если последнюю версию, выложенную 17 марта, скачало пока всего 4 человека ? Поэтому вести общие рассуждения - это как в анекдоте: ты пока жарь, а рыба будет ... |
Автор: | Владислав Жаринов [ Среда, 11 Апрель, 2012 17:19 ] |
Заголовок сообщения: | Re: Программы AB_VJAZ и DAL_VJAZ |
Пожалуй, да... ибо сказано "от живого созерцания к абстрактному мышлению, а от него - к практике"... С другой стороны - вот свежая... если не рыба, то удочка: Валерий Лаптев в viewtopic.php?p=72052#p72052 писал(а): ... Т.е. можно заменить несколько переписываний одним анализом - предварительным...3. Что хорошо: пацаны получают реальный опыт большой разработки. Я там у них с одной стороны - главный идеолог, с другой - программист-юниор... Причем в процессе разработки начинают понимать на практике, что такое хорошая архитектура, а какая - не очень. Сейчас уже у них в башке сидит главный принцип: система должна быть закрыта для модификаций и открыта для расширений. В уже реализованные вещи практически не залезаем, а только дополняем новыми функциями. Архитектура ряда подсистем уже в таком ключе выдержана. Пришли к этому через несколько серьезных переделок. Начинал главный пацан по студенчески: давайте что-нить напишем, а потом разберемся... В результате и пришлось несколько раз переписывать, проводя предварительно серьезный анализ... MrYuran писал(а): ... Скорее неясна цель такой структуры в прикладном смысле. "Академически" подобное рассматривалось здесь: http://drakonografika.narod.ru/L3/algos ... l#Doc-n322 (ближе к концу текста)... Типа, несколько силуэтов в одном... но для чего... контексты-то исполнения будут тоже свои при Ваших условиях?..
Вдобавок ко всему, появляется возможность изолировать ветки друг от друга и передавать туда внешние параметры, а внутри использовать локальные. Или я слишком узко мыслю в академическом плане? |
Автор: | Владислав Жаринов [ Воскресенье, 15 Апрель, 2012 10:22 ] |
Заголовок сообщения: | Re: Программы AB_VJAZ и DAL_VJAZ |
Дмитрий_ВБ в viewtopic.php?p=71808#p71808 писал(а): Владислав Жаринов писал(а): Под "разницей в весе" можно понимать (и я бы лично понимал) уровень проработанности методов и средств формализации. ... если будем упирать только на "мозговую проверку" слепыша маршрутов - решение будет ограниченным. Согласен. ... |
Автор: | Дмитрий_ВБ [ Воскресенье, 15 Апрель, 2012 11:35 ] |
Заголовок сообщения: | Re: Программы AB_VJAZ и DAL_VJAZ |
По поводу вашего предложения, Владислав, относительно easyelectronics. У Геннадия Николаевича там уже были негативные отзывы - пользователи требуют 99,99 % соответствия (надежности) генерируемого кода тому, что было изображено на схеме и что планировал пользователь. Я пока считаю, что моя программа еще сыровата, а ее текст плохо документирован и в нем никто разбираться не захочет. Цитата: Дмитрий Дагаев Заголовок сообщения: Re: Два пернатых в одной берлоге не уживутся? Добавлено: Суббота, 18 Февраль, 2012 18:46 Зарегистрирован: Вторник, 01 Март, 2011 10:34 Сообщения: 78 Возвращаясь к напечатанному, если б мог связать свои необходимые производственные телодвижения с описанными в концепции идеями, приступил бы к написанию нового графического пакета по Дракону. Не первого и не второго. 1) В моих 80% случаях нужен больше вьюер чем редактор. Обычно разрабатываем систему с графическим интерфейсом и сдаем Заказчику. В этой части делается меньше, чем по схеме "редактор-код программы на языке высокого уровня". 2) Целый зоопарк из форматов файлов Дракон-схемы говорит о том, что кто-то в будущем выпустит еще формат, который всех устроит. Я полагаю, что для этого нужно: - формальное и точное описание, - API для доступа из ЯВУ, - процедуры конвертации (из XML и обратно, во всяком случае, из .drt и обратно?) Я думаю, это хорошее предложение. Я уже упоминал, что визуальную среду я даже и не буду пытаться пробовать писать. А вот простой, но функциональный просмотрщик, да еще с полной формой отображения визуальной схемы - это совсем другое дело, и чтобы внесенные и запомненные изменения в текстовом файле (неважно, это файл исходного кода программы или просто структурированный текст на некотором псевдокоде) сразу отображались при переходе к окну просмотрщика. Когда появится свободное время, может подумаю над этим вопросом. |
Автор: | Владислав Жаринов [ Воскресенье, 15 Апрель, 2012 12:40 ] |
Заголовок сообщения: | Re: Программы AB_VJAZ и DAL_VJAZ |
И это дело. Кстати, там ещё кто-то (Кондор вроде) говорил, что не понимает, зачем нужен реверс - вот Вы и можете явить пример (практический), зачем... |
Автор: | Дмитрий_ВБ [ Вторник, 01 Май, 2012 11:53 ] |
Заголовок сообщения: | Re: Программы AB_VJAZ и DAL_VJAZ |
По поводу получения просмотрщика полной формы визуальной схемы для файлов исходного кода, выложенных мной в этой теме 17 марта этого года. 1) убираем все что связано с редакцией (модуль u_red.pas) и сохранением файлов. Сортировка (utils.pas) тоже для просмотрщика не нужна. В результате останется что-то около 6000 строк исходного кода, причем написанного достаточно разреженно, с большим числом пустых строк. 2) для элементов вводим функции el_shirina и el_wysota, чтобы знать ширину и высоту для каждого эл-та схемы. 3) нужно слегка подправить следующие процедуры модуля u_dalvj: 21 - вывод схемы 22 - вывод элемента схемы 23 - подсчет размера схемы, вызывается в начале процедуры вывода схемы. В этой процедуре нужно будет найти смещения для вертикалей учитывая, что ширина эл-тов может быть переменной, в отличие от сокращенной формы вывода визуальной схемы. Для сокращенной формы вывода каждая вертикаль получала параметр n_sprawa - расстояние от самой левой вертикали в дискретных единицах: 1, 2, 3, ... Чтобы получить смещения вертикалей относительно друг друга для полной формы визуальной схемы, воспользуемся параметром n_sprawa. Код: (* t.23. подсчитываем размер схемы *) procedure Tform_dalvjaz.podschet_max_koord(Sender: TObject); var i, ii, j, jj, jj2, k, y, tw, tdx, tdx2, tdx21, mn_sprawa:integer; begin tek_alg.kol_dwert := 0; mn_sprawa := 0; i:= KOL_WETOK; // !!! сейчас KOL_WETOK = 1 - только 1 главная вертикаль // вертикали силуэта порождаемые t_EI формально являются дочерними while (i < MAX_KOL_WERT) do begin if (tek_alg.m_wert[i].used = YES) then begin inc(tek_alg.kol_dwert); if (tek_alg.m_wert[i].n_sprawa > mn_sprawa) then mn_sprawa := tek_alg.m_wert[i].n_sprawa; end; inc(i); end; // для всех вертикалей считаем dx for j:=0 to tek_alg.kol_dwert do begin tek_alg.m_wert[j].dx := 0; if (tek_alg.m_wert[j]._type <> T_WERT_CIKLA) then begin i:=0; k:=0; while (i < tek_alg.m_el_wert[j]) do begin if (tek_alg.m_el[k].n_wert = j) then begin tdx := el_shirina(k); if (tdx > tek_alg.m_wert[j].dx) then tek_alg.m_wert[j].dx := tdx; inc(i); end; inc(k); end; end; end; tek_alg.m_wert[0].x := OTSTUP_WERT + (tek_alg.m_wert[0].dx div 2); tdx := tek_alg.m_wert[0].x + (tek_alg.m_wert[0].dx div 2) + (dalvjaz_chw*2); tdx2 := tdx; for j:=1 to mn_sprawa do begin for i:=1 to tek_alg.kol_dwert do begin if (tek_alg.m_wert[i].n_sprawa = j) then begin tek_alg.m_wert[i].x := tdx + (tek_alg.m_wert[i].dx div 2); tdx21 := tek_alg.m_wert[i].x + (tek_alg.m_wert[i].dx div 2) + (dalvjaz_chw*2); if (tdx21 > tdx2) then tdx2 := tdx21; end; end; tdx := tdx2; end; dalvjaz_xmax := tdx2; . . . end; Ну и еще кое-что по мелочам. Не составит особого труда добиться, чтобы просмотрщик работал или с псевдокодом, или с исходным кодом программы для языков семейств Pascal/C++, в зависимости от содержания файла конфигурации. Вот такая гимнастика для ума, как говорится - работа для студентов. |
Автор: | Владислав Жаринов [ Четверг, 03 Май, 2012 05:58 ] |
Заголовок сообщения: | Re: Программы AB_VJAZ и DAL_VJAZ |
Дело... уже намечается путь к "Ракетному дизайнеру кода"... В смысле "реверса форм записи" - правда, там и реверса-то нет - есть следящее построение схемы по текстовому вводу (и обратная генерация текста по схеме, надо думать)... Это всё, как я понимаю, в рамках подготовки предложений, упомянутых здесь? |
Автор: | Дмитрий_ВБ [ Вторник, 04 Декабрь, 2012 00:35 ] |
Заголовок сообщения: | Re: Программы AB_VJAZ и DAL_VJAZ |
ЛОГИЧЕСКАЯ СТРУКТУРА ПРОЦЕДУРЫ (ЛСП) И ГРАФИЧЕСКИЙ РЕДАКТОР ТЕКСТА ПРОГРАММЫ для ДАЛВЯЗ 2 Вложение: Вложение: ВНИМАНИЕ: кто хочет полностью понимать, о чем идет речь дальше, тот должен сначала прочитать файл dalvjaz2_description.pdf, размещенный в этой теме ранее, в сообщении от 6 апреля 2012 г. В конце года я решил проапгрейдить dalvjaz2 до уровня 0.82 (многое еще не доработано, поэтому и не 1.00). Главные особенности: 1. Полная и мини формы схемы (переключение по F2). 2. Переключение между цветными и черно-белыми значками по кнопке "цв.зн". 3. Исчезло окно ЛСП, теперь работа с ЛСП реализована в форме графического редактирования схемы. 4. Новый мышиный интерфейс: у мыши маловато кнопок, с помощью клавиатуры я решил это исправить. Традиционные приемы работы с мышью используются в dalvjaz2 в следующих случаях: - нажимаем правую кнопку и тащим схему в окне просмотра в нужном направлении; - щелчок левой кнопки по элементу открывает окно редактирования элемента; - работа с полосами прокрутки и колесиком - щелкаем по нужной полосе и двигаем схему по вертикали или по горизонтали. Нестандартная работа с мышью: - наводим мышь на элемент и нажимаем клавишу клавиатуры: 1) F2 при мини-схеме: переход к полной форме схемы, а выбранный элемент находится в центре экрана; 2) "1": создать действие после элемента; 3) "2": создать условие IF-ELSE-END после элемента; 4) "3": создать дополнительную ветку условия справа от IF или ELSE IF; 5) "4": создать цикл после элемента; 6) "E": вставить из буфера хранения после элемента или справа от ветки условия; 7) "R": вставить из буфера копирования после элемента или справа от ветки условия. - выделение элементов схемы: 1) нажимаем клавишу Ctrl 2) наводим мышь на элемент, он выделяется белым (основной элемент) или синим (подчиненный элемент) цветом; при этом ELSE и END выделяются как кружочки (после них, кстати, тоже можно создавать или вставлять элементы) 3) после отпускания клавиши Ctrl выделяются все остальные элементы выделения, например для условия - все элементы условия, для ветки условия - все элементы ветки, для цикла - все элементы цикла. Клавиатурные операции: "A": восстановление схемы из буфера отката, сейчас реализован откат на 1 шаг; "Q": поместить выделение в буфер хранения, выделение удаляется с экрана; "W": поместить выделение в буфер копирования, выделение гасится, но элементы выделения остаются на экране. После копирования элементов из буфера (по "E" или "R") содержимое буфера сохраняется (кстати, буфера хранения и копирования сохраняются и при переходе от одной схемы к другой). "F3": создание новой схемы после ввода в комбобоксе выбора схем имени новой схемы. 5. По флажку "N стр" рядом с элементами выводятся номера их строк в файле. Это удобно в режиме ПРОСМ (задается в файле конфигурации), при котором внесение изменений в просматриваемый файл блокировано. 6. Поле рисунка и сокращения выполняет те же функции, что и раньше. Имя "<<<<" задает минимизированный вывод элемента схемы как для полной, так и для мини форм схемы. Это удобно, если задан какой- нибудь выразительный значок. 7. Упрощение внутренней логики работы программы: - работа с файлами возложена на дельфийские TListBox-ы, LoadFromFile, SaveToFile - и дело в шляпе; - работа со схемами - это работа с ЛСП, обернутой в графическую оболочку. Массива m_lsw больше нет, его роль теперь выполняет массив tek_alg.m_el: при чтении схемы все элементы помещаются туда и получают каждый свой уровень, соответствующий, говоря упрощенно, отступу при вводе структурированного текста программы. Но в считываемом программой dalvjaz2 тексте отступов может не быть вообще - уровни элементов формируются в зависимости от типов элементов. Из массива tek_alg.m_el при помощи процедуры Tform_ls.b_sozdatx_shemuClick создаем схему, водя по которой мышью наводим указатель мыши на прямоугольник одного из элементов. Вот и вся графика. После всех вышеперечисленных действий над элементами сначала изменяется ЛСП схемы, находящаяся в массиве tek_alg.m_el, а после этого вся схема строится заново (исключение - процедура выделения элементов, после выделения элемента перерисовывается только этот элемент) - отступы нужны только программистам, но не программе, поэтому после чтения файла с помощью LoadFromFile отступы удаляются, а восстанавливаются обратно только при создании новой версии файла - файлы со схемами и текстовыми записями хранятся в массиве m_fajlow: array[0..MAKS_FAJLOW] of t_fajl; m_fajlow[n].ubuf - указатель на TListBox m_fajlow[MAKS_FAJLOW] - рабочий буфер, содержит 5 рабочих записей: 1) рабочая запись для редактирования схемы 2) запись создания элемента 3) запись (буфер) хранения 4) запись (буфер) копирования 5) запись (буфер) отката Например, при сохранении выделения в буфере хранения схема (кроме выделенных элементов) копируется в рабочую запись, а выделенные элементы помещаются в буфер хранения. После этого схема восстанавливается из рабочей записи. Если считывание схемы из рабочей записи произошло без ошибок, то схема копируется в запись файла, из которой сначала и была считана, а перед этим старая версия записи помещается в буфер отката. Желающие отследить это более подробно могут изучить исходный код модуля u_files.pas 8. Работа с данными как со схемой, состоящей из одних действий. Логически объединенная группа переменных заключается в прямоугольник, из которого задаются ссылки на другие схемы, причем без разницы, отображают они данные или процедуры. Замечание: для схемы, отображающей данные, элемент ВЫХОД должен быть пустым, в отличие от процедуры, для которой элемент ВЫХОД содержит оператор окончания процедуры (например end;). Чем больше работаю с dalvjaz2, тем сильнее убеждаюсь в правильности формулировки Петра Алмазова: Если им дать простой текст из нескольких абзацев, то они, как минимум, сочтут его ненаглядным, а то и вовсе непонятным. Если все это растянуть по вертикали, каждый абзац обвести в рамочку и соединить их вертикальными линиями, то они начинают восторгаться: как это понятно, красиво, наглядно! --------------------------------------------------------------- На текущий момент исходный код программы dalvjaz2 составляет чуть меньше 7500 строк, достаточно хорошо структурирован и готов к дальнейшему развитию всеми желающими. Если такие желающие найдутся, то хотелось бы, чтобы они делились результатами своих трудов с участниками форума сайта oberoncore.ru |
Автор: | Владислав Жаринов [ Среда, 05 Декабрь, 2012 13:28 ] |
Заголовок сообщения: | Re: Программы AB_VJAZ и DAL_VJAZ |
Дмитрий_ВБ писал(а): ЛОГИЧЕСКАЯ СТРУКТУРА ПРОЦЕДУРЫ (ЛСП) Это да... Когда текст простой.. А вообще когда не так давно взялся за "сравнение графов со всякими другими" и взглянул с этой точки зрения на его замечания в их неэмоциональной части - то лишний раз убедился, что все нотации, использованные на Драконографике для разбора, "как же работают визуалы", не только подтверждают сказанное Петром по существу - но и существенно расширяют его список претензий... Как, собственно, и содержание этих разборов...И ГРАФИЧЕСКИЙ РЕДАКТОР ТЕКСТА ПРОГРАММЫ для ДАЛВЯЗ 2 ... Чем больше работаю с dalvjaz2, тем сильнее убеждаюсь в правильности формулировки Петра Алмазова: Если им дать простой текст из нескольких абзацев, то они, как минимум, сочтут его ненаглядным, а то и вовсе непонятным. Если все это растянуть по вертикали, каждый абзац обвести в рамочку и соединить их вертикальными линиями, то они начинают восторгаться: как это понятно, красиво, наглядно! --------------------------------------------------------------- ... Но. Сие, думаю, не значит, что "графы в программировании" использвать вообще не надо... Просто надо помнить, что "чертёж - язык инженерии", мне кажется... и там, где имеем дело с деятельностьью как с инженерной конструкцией - там схемы и употреблять... только в нотациях, идущих от понимания смысла деятельности... И таблицы надо... и хочется надеяться, что концепция ЛСП получит дальнейшее развитие... |
Автор: | Дмитрий_ВБ [ Среда, 05 Декабрь, 2012 13:44 ] |
Заголовок сообщения: | Re: Программы AB_VJAZ и DAL_VJAZ |
А как Вы, Владислав, оценили бы скорость и удобство редактирования в предлагаемом макете редактора ? |
Автор: | Владислав Жаринов [ Среда, 05 Декабрь, 2012 14:00 ] |
Заголовок сообщения: | Re: Программы AB_VJAZ и DAL_VJAZ |
Пока что только скачал... Чё-то боксы вершин у меня резаные... без правого края с кнопками окна и практически команд... Хорошо, что краешком какой-то командной кнопки можно закрыть окно... и вроде без последствий... Так. Масштаб по Ф2 только из двух градаций (свернуто/развёрнуто давать содержание) - это не вполне... Аббревиатуры в свёртке - не лучшая замена хинтованию... ЛСП линейно организованная и без разграфки читается сложно... ну, понять, о чём речь, не зная исхтекста, и не пытаюсь... Параллельные действия без "алгорасшифровки" даже и не пытаюсь осмыслить... Выпадающий список схем проекта - рулез (при данной объёмности, по крайней мере). Структуру проекта надо иметь возможность смотреть "в различных разрезах и сечениях"... но это, ясное дело, "задача на перспективу"... Цикл Дейкстры рулит... осообенно в свёртке... Ссылки - да, хорошо. Переключение цвета линий по кругу - просто и удобно. С типами связей, конечно, вопросы... Прежде всего хотелось бы ЕСКД-шного варианта - блоки в основных линиях, связи в тонких. А далее - как-то отличать именование заголовком, типы переходов... На что влияет "цв. зн.", не понял. Вообще надо бы текст форматировать по типам - величины выделяя специально. Область схемы и панель инструментов лучше бы разделить... а то чтобы видеть панель, надо скроллить всё... при этом линейки области могут скрываться... По "контролу" не просто "начать выделение элементов" - её при этом надо удерживать, как можно понять... |
Автор: | Дмитрий_ВБ [ Среда, 05 Декабрь, 2012 14:54 ] |
Заголовок сообщения: | Re: Программы AB_VJAZ и DAL_VJAZ |
У меня при разрешении 1280 на 1024 окно программы выглядит так: Вложение: >Чё-то боксы вершин у меня резаные... без правого края с кнопками окна и практически команд... Хорошо, что краешком какой-то командной кнопки можно закрыть окно... и вроде без последствий... Не совсем понял. Если что-то с окном программы (например, паразитные скроллеры формы), попытайтесь поменять его размер, ну или если не помогает, сменить разрешение. > Аббревиатуры в свёртке - не лучшая замена хинтованию... Многое выброшено как мешаюшее простоте понимания макета. Если будет нужно, легко вставить обратно >ЛСП линейно организованная и без разграфки читается сложно... ну, понять, о чём речь, не зная исхтекста, и не пытаюсь... Окно ЛСП носит справочный характер - т.е. ЛСП по-прежнему присутствует, только в скрытой форме Практической нагрузки окно ЛСП сейас не несет. > Параллельные действия без "алгорасшифровки" даже и не пытаюсь осмыслить... Ну это для случая псевдокода, когда не предполагается трансляция из исходного кода в исполняемый. > На что влияет "цв. зн.", не понял. На цвет значков: черно-белый или цветной > Область схемы и панель инструментов лучше бы разделить... а то чтобы видеть панель, надо скроллить всё... при этом линейки области могут скрываться... Не понял - тут та же причина, скорее всего, что и для замечания 1 > По "контролу" не просто "начать выделение элементов" - её при этом надо удерживать, как можно понять... Ну это тема для обсуждения, как и вообще весь предлагаемый интерфейс |
Автор: | Владислав Жаринов [ Четверг, 06 Декабрь, 2012 09:09 ] |
Заголовок сообщения: | Re: Программы AB_VJAZ и DAL_VJAZ |
На самом деле надо сказать - всё это ведь обнаружил (и задокументировал ) за каких-то 15 минут... без справки (коей вроде как и нету - в программе, имею в виду)... Так что общая простота по-прежнему несомненна... Ну а удобство Разработки И Документирования для меня - это прежде всего воплощение "системы языков" хотя бы в том виде, как описано (для Вашего же продукта ) здесь: http://forum.easyelectronics.ru/viewtop ... 41#p204947 (ну и в предшествующих постах). При этом опять же не обязаны все языки быть схемными - только там, где это оправдано смыслом (а из этого и эргономика естественная вырастет)... Посему ЛСП будет важна. Но все формы для маршрутов с линейным И двумерным вариантами (т.е. "как в исхтексте" И "оси порядка для цепочек по уровням выбора"). И везде - возможность "складки" (как это называется в ББ) - замещения выделенной области сжатым (и неформальным) описанием "от сочинителя". |
Автор: | Дмитрий_ВБ [ Воскресенье, 09 Декабрь, 2012 17:56 ] |
Заголовок сообщения: | Re: Программы AB_VJAZ и DAL_VJAZ |
Не знаю, что там было у Владислава Жаринова, но у меня при разрешении 1024 на 768 никаких паразитных скроллеров формы не было (правда, у меня XP а не W7). Да, для 1024 на 768 окно программы в выложенной версии великовато, но с этим можно справиться, удалив файл formsize.dat, в котором запоминаются текущие координаты и размер окна программы при выходе из нее - тогда после входа в программу можно будет задать удобные для 1024 на 768 размеры окна, а при выходе из программы они будут запомнены. ....................................................................................................................... Краткие пояснения для тех, кто зашел в эту тему в первый раз. ДАЛВЯЗ 2 - это сильно упрощенный вариант языка ДРАКОН. Упрощение произведено с 2-мя целями: 1) упростить написание реализующей работу с языком программы (Владимир Даниелович писал, что среду ГРАФИТ-ФЛОКС для программы «Морской старт» писали 2 института 10 лет); 2) сделать как можно более низким «порог вхождения», т.е. минимизировать время и усилия, необходимые для обучения и работы с программой. При этом в ДАЛВЯЗ 2 реализованы две основных особенности языка ДРАКОН: - запрет на пересечение линий визуальной схемы с целью повышения ее эргономичности; - наличие визуально-логической конструкции силуэт (в ДАЛВЯЗ 2 — это цикл-силуэт), также известной в программировании как цикл Дейкстры. Вообще говоря, название «силуэт», согласно В. Паронджанову, относится прежде всего к визуальной форме отображения этой логической конструкции, и силуэт в программе может быть реализован не только циклом Дейкстры (как в ДАЛВЯЗ 2), но и системой безусловных переходов, как это сделано в программе ИС Дракон Г. Тышова. Хотя маршрутные операторы (условия и циклы) языка ДАЛВЯЗ 2 являются сильно урезанным подмножеством маршрутных операторов языка ДРАКОН, но все необходимые переходы в процедуре могут быть выполены, если в основе логики процедуры будет лежать силуэт. Поэтому я считаю, что имеющихся в ДАЛВЯЗ 2 маршрутных операторов для программирования вполне достаточно. Программа dal_vjaz_2 (dalvjaz2.exe), реализующая работу с языком ДАЛВЯЗ 2, в отличие от ИС Дракон Г. Тышова и ДРАКОН-редактора С. Митькина реализует не только преобразование «схема в исходный код программы», но и преобразование «исходный код программы в схему», что позволяет рассматривать dal_vjaz_2 как средство графического документирования уже существующих программ. Программа dal_vjaz_2 предназначена для работы с языками семейств Pascal и С/С++, а также с псевдокодом (в выложенной версии есть 3 соответствующих файла конфигурации). Формат данных dal_vjaz_2: исходный код программы, дополненный служебными комментариями, или псевдокод, для которого дополнительных служебных комментариев не нужно. Программа dal_vjaz_2 является freeware: исходный код dal_vjaz_2 открыт и доступен для развития и совершенствования всеми желающими при условии сохранения программой статуса freeware и доступности ее исходного кода для участников форума сайта oberoncore.ru. Программа dal_vjaz_2 находится в режиме тестирования, является концептуальным макетом и будет развиваться мной дальше в случае проявления к ней интереса со стороны участников форума сайта oberoncore.ru, или при появлении у меня новых мыслей по поводу дальнейшего развития программы. ............................................................................................................................................... Текущая версия программы dal_vjaz_2 выложена выше в этой теме в моем посте от 4.12.2012 ............................................................................................................................................... |
Автор: | ==== [ Воскресенье, 09 Декабрь, 2012 18:02 ] |
Заголовок сообщения: | Re: Программы AB_VJAZ и DAL_VJAZ |
Дмитрий_ВБ писал(а): Программа dal_vjaz_2 (dalvjaz2.exe), реализующая работу с языком ДАЛВЯЗ 2, в отличие от ИС Дракон Г. Тышова и ДРАКОН-редактора С. Митькина реализует не только преобразование «схема в исходный код программы», но и преобразование «исходный код программы в схему», что позволяет рассматривать dal_vjaz_2 как средство графического документирования уже существующих программ. Дмитрий, покажите пример преобразования «исходный код программы в схему».
|
Автор: | Дмитрий_ВБ [ Воскресенье, 09 Декабрь, 2012 18:27 ] |
Заголовок сообщения: | Re: Программы AB_VJAZ и DAL_VJAZ |
Ниже, Геннадий Николаевич, я уточнил, что это исходный код, дополненный служебными комментариями. А пример - скачайте выложенную версию, текущий файл конфигурации в ней настроен для паскаля. В файле конфигурации задан рабочий файл, в котором есть процедура, вырезанная мной из текста исходного кода dalvjaz2: Tform_ls.b_sozdatx_shemuClick Именно эта процедура у меня является головной при создании визуальной схемы Код: (* i.9. создать из списка ЛСП визуальную схему *) procedure Tform_ls.b_sozdatx_shemuClick(Sender: TObject); var wetka, i, tw:integer; begin (*i CB *) wetka := 1; (*рис . . НЦС *) while (wetka <> 0) do begin (*i*) if (wetka = 1) then begin (*рис . .ВНИ *) (*i*) (*рис . .ПГВC *) tek_alg.m_wert[dalvjaz_tek_wetka]._type := T_WERT_GLAWNAQ; tek_alg.m_wert[dalvjaz_tek_wetka].used := YES; tek_alg.m_wert[dalvjaz_tek_wetka].x := tek_alg.m_x_wetok[dalvjaz_tek_wetka]; tek_alg.m_inew[dalvjaz_tek_wetka] := -1; tek_alg.m_el_wert[dalvjaz_tek_wetka] := 0; tek_alg.m_wert[dalvjaz_tek_wetka].tyel := 0; // dalvjaz_chdy + (dalvjaz_chdy div 2); tek_alg.m_wert[dalvjaz_tek_wetka].y1 := DALVJAZ_Y_ZAGOL;// + ((5*dalvjaz_chdy) div 2); (*i*) mow__init(dalvjaz_tek_wetka); //_>.42. (*рис . .ИМОВ *) (*i*) (*рис . .НИНП *) tek_str_lsw := 0; // текущая строка списка ЛСП = 0 osh_sozd_shemy := SHEMA_OK; // номер ошибки сброшен pred_bl_el_sh._type := t_A; // предидущий блочный эл-т //при построении схемы = действие (*i*) udal_wert_tek_wetki(Sender); //_>.10 (*рис . .УВСХ *) (*i*) if (osh_sozd_shemy <> SHEMA_OK) (*рис .e? . *) then begin (*i*) wetka := 50; (*i*) end else begin (*i*) sbros_steka_lsw; //_>.37. (*рис . .СБСТ *) (*i*) i := 0; (*рис . .ИЦЛС *) (*i*) wetka := 2; (*i*) end; (*i*) end else if (wetka = 2) then begin (*рис . .НЦЛС *) (*i*) tek_str_lsw := i; (*рис . .ТСЛС *) (*i*) (*рис . .ЗБЭС *) if ((i > 0) and ((tek_alg.m_el[i]._type = t_IF) or (tek_alg.m_el[i]._type = t_EI) or (tek_alg.m_el[i]._type = t_EB) or (tek_alg.m_el[i]._type = t_E) or (tek_alg.m_el[i]._type = t_CB) or (tek_alg.m_el[i]._type = t_CE))) then pred_bl_el_sh := tek_el_shemy; (*i*) (*рис . .ТЭЛС *) //tek_el_shemy := m_lsw[i]; //для старого m_lsw tek_el_shemy.ind := tek_alg.m_el[i].ind; tek_el_shemy._type := tek_alg.m_el[i]._type; tek_el_shemy.n_strz := tek_alg.m_el[i].n_strz; tek_el_shemy.ind_m_el := i; tek_el_shemy.n_str := i; (*i*) give_stek_lsw(0); //_>.36. (*рис . .ВСЛС *) (*i*) (*рис . .ПОЛС *) prow_oshibki_struktury(Sender); //_>.12. (*i*) if (osh_sozd_shemy <> SHEMA_OK) (*рис .e? . *) then begin (*i*) wetka := 50; (*i*) end else begin (*i*) wetka := 3; (*i*) end; (*i*) end else if (wetka = 3) then begin (*рис . .ОЦЛС *) (*i*) if ((tek_el_shemy._type = t_IF) or (*рис . .НАЧБ *) (tek_el_shemy._type = t_EI) or (tek_el_shemy._type = t_CB)) then begin (*i*) //_>.14. (*рис . .t_IF *) if (tek_el_shemy._type = t_IF) then obr_shemy_dlq_IF(Sender); (*i*) //_>.16. (*рис . .t_EI *) if (tek_el_shemy._type = t_EI) then obr_shemy_dlq_EI(Sender); (*i*) //_>.19. (*рис . .t_CB *) if (tek_el_shemy._type = t_CB) then obr_shemy_dlq_CB(Sender); (*i*) (*рис .e? . *) if (osh_sozd_shemy <> SHEMA_OK) then begin wetka := 50; continue; end; (*i*) (*рис . .ЭВСТ *) push_stek_lsw; //_>.34. (*i*) end else if (*рис . .t_EB *) (tek_el_shemy._type = t_EB) then begin (*i*) (*рис . .t_EB *) obr_shemy_dlq_EB(Sender); //_>.17. (*i*) (*рис .e? . *) if (osh_sozd_shemy <> SHEMA_OK) then begin wetka := 50; continue; end; (*i*) end else if (*рис . .t_E *) (tek_el_shemy._type = t_E) then begin (*i*) (*рис . .t_E *) obr_shemy_dlq_E(Sender); //_>.18. (*i*) (*рис .e? . *) if (osh_sozd_shemy <> SHEMA_OK) then begin wetka := 50; continue; end; (*i CB *) (*рис . .ПОВТ *) repeat (*i*) (*рис .e? . *) if (el_steka_lsw.used = NO) then begin osh_sozd_shemy := SHEMA_no_IF_for_E; break; // а не continue, потому что // мы во внутреннем цикле end else begin pop_stek_lsw; //_>.35. извлечь элемент из стека ЛСП end; (*i CE *) (*рис . . КЦ *) until (el_steka_lsw._type = t_IF); (*i*) (*рис .e? . *) if (osh_sozd_shemy <> SHEMA_OK) then begin wetka := 50; continue; end; (*i*) end else if (*рис . .t_CE *) (tek_el_shemy._type = t_CE) then begin (*i*) (*рис . .t_CE *) obr_shemy_dlq_CE(Sender); //_>.20. (*i*) (*рис .e? . *) if (osh_sozd_shemy <> SHEMA_OK) then begin wetka := 50; continue; end; (*i*) (*рис .e? . *) if (el_steka_lsw.used = NO) then begin osh_sozd_shemy := SHEMA_no_CB_for_CE; wetka := 50; continue; end; (*i*) (*рис . .ЭИСТ *) pop_stek_lsw; //_>.35. (*i*) end else begin (*i*) (*рис . .ОБРД *) obr_shemu_dlq_HD_A_AD(Sender); //_>.21. (*i*) (*рис .e? . *) if (osh_sozd_shemy <> SHEMA_OK) then begin wetka := 50; continue; end; (*i*) end; (*i*) if (i < (tek_alg.kol_elem - 1)) (*рис . .СЦЛС *) then begin inc(i); (*i*) wetka := 2; (*i*) end else begin (*i*) wetka := 4; (*i*) end; (*i*) end else if (wetka = 4) then begin (*рис . .ЗДЕЙ *) (*i*) (*рис . .ВСЛС *) give_stek_lsw(0); //_>.36. (*i*) (*рис .e? . *) if (el_steka_lsw.used = YES) then begin osh_sozd_shemy := SHEMA_el_w_steke_LSW; wetka := 50; continue; end; (*i*) (*рис . .ПСЛС *) obr_shemy_w_konce_lsw(Sender); //_>.25. (*i*) if (osh_sozd_shemy = SHEMA_OK) (*рис . .СХОК *) then begin (*i*) if (dalvjaz_shema_schitana = YES) (*рис . .СХСЧ *) then begin (*i*) (*рис .10 . *) //form_dalvjaz.wywod_shemy(Sender); //_>1.21. (*i*) (*рис . .ЗЛСП *) //zagruzka_LSW(Sender); //_>.33. (*i*) (*рис . .ВВЛС *) (*ListBox1.Selected[lsw_selected] := true;*) (*i*) end; (*i*) (*рис . .СОХС *) //fajly.sohr_shemu(Sender); //_>2.25. (*i*) end; (*i*) wetka := 50; (*i*) end else if (wetka = 50) then begin (*рис . .ООШВ *) (*i*) (*рис .er . *) if (osh_sozd_shemy <> SHEMA_OK) then begin obrabotka_oshibok(Sender); fl_oshibki := YES; if (komanda_ot = 1) then begin form_dalvjaz.komanda_ot := 2; form_dalvjaz.zagruzka_shemy(Sender); form_dalvjaz.komanda_ot := 1; end; end else begin if (komanda_ot = 1) then m_fajlow[fajly.tek_fajl].fl_red := YES; end; (*i*) wetka := 0; (*i*) end; (*i CE *) end; (*рис . . КЦС *) (*i ВЫХОД *) end; (*i КОНЕЦ *) А схема получается вот такой: Вложение: .................................................... замечание от 11.12.2012 Ну тогда, Владислав, положите скриншот, чтобы было понятно, что там у Вас было .................................................... служебную информацию скрывать конечно можно и если у программы появятся пользователи и поднимут этот вопрос, то он так или иначе будет решен. А сейчас, не получая никаких откликов, я часто делаю как быстрее (т.к. эта программа пока всего лишь макет) |
Автор: | Владислав Жаринов [ Вторник, 11 Декабрь, 2012 04:42 ] |
Заголовок сообщения: | Re: Программы AB_VJAZ и DAL_VJAZ |
Получается, служебные фразы находятся "на одном уровне" с ЯВУ-текстом в организации содержания ДАЛВЯЗ-вершин? Потому и после импорта текста в схему всё оказывается вместе?.. Да, и наличие служебных данных принципиально? текст без них (скажем, на обычном Паскале/Обероне в формате какой-то среды типа ТП/ББ) на данный момент импортировать невозможно?.. Насчёт обрезки окон - как говорил, это касается не главного, а бокса вершины (открываемого по щелчку на ней). Кстати, проверял тоже в ХР... |
Автор: | Владислав Жаринов [ Среда, 12 Декабрь, 2012 13:14 ] |
Заголовок сообщения: | Re: Программы AB_VJAZ и DAL_VJAZ |
Случайно обнаружил дополнение в посте Дмитрия с ответами на мой... просто по привычке сравнивать тексты иногда... Вид как-нибудь выложу. Да, по ЦС - это всё ж вариант именно ЦД, а не силуэта. Силуэт можно преобразовать в ЦД (ну и в ЦС) по "теореме о переписываемости спагетти-кода по Дейкстре" ((С) Info21). Однако всегда ли надо - вопрос... О разнице тут: viewtopic.php?p=75896#p75896. В частности, п. 3 конкретизирует Ваше утверждение, т.е. за счёт чего именно силуэт шире автомата. По вопросу о линиях кросса - Г.Н. правильно его поставил (что имеет отношение и к сказанному о линиях в ДАЛВЯЗ). |
Автор: | Дмитрий_ВБ [ Суббота, 22 Декабрь, 2012 23:34 ] |
Заголовок сообщения: | Re: Программы AB_VJAZ и DAL_VJAZ |
Вот и начали рассылать по эл. почте новогодние поздравления. И я решил не отставать и выложить в качестве новогоднего поздравления схему сюжета сказки "Морозко". Вложение: Сначала хотел вставить с обоями, но получилось 1.5 М и движок не пропустил, поэтому я ограничился равномерным фоном закраски. Помимо создания предпраздничного настроения это демонстрация работы с полноценными jpg-файлами в программе dal_vjaz_2. Раньше у меня были только маленькие bmp-значки, они остались и сейчас, но переведены в jpg-формат. значок кодируется мнемоникой или 2-значным числом, а полноценный jpg-файл кодируется трехзначным числом. Ниже я привожу текстовый файл данных, кодирующий вышеприведенную схему. Текст новой версии пока не выкладываю - есть там еще кое-какие глюки, а отлаживаться перед Новым Годом возможности уже нет, так что новую версию выложу уже после Нового Года, а как скоро, пока не знаю. По схеме только одно замечание: [-] обозначает сервисную строку, которая в блок элемента не выводится. Код: СХЕМА.1. МОРОЗКО [-] РИС .001
ПРЕЗЕНТАЦИЯ (схема сюжета сказки) * [-] РИС .002 Жил-был Иван, вдовий сын. Ваня - парень хоть куда: и рыбак, и охотник, и пахарь, и плотник. И воинским навыкам обучен. * [-] РИС .003 Однажды в лесу повстречался Иван с разбойниками. * [-] РИС .004 Пока разбойники делили содержимое его мешка, Иван решил силушкой своей богатырской потешиться и зашвырнуть в небо дубинки разбойников * [-] РИС .005 Иван: К зиме, разойнички, вернутся ваши дубинки. Разбойники: Ну и силища ... * [-] РИС .14 . В то же самое время * если [-] Основной сюжет * [-] РИС .14 . В то же самое время * если [-] Настя * [-] РИС .006 Настя - девица-краса. Настя живет в деревне вместе с отцом, мачехой и ее дочкой Марфушенькой. Настя работает по хозяйству с утра до ночи, как Золушка (см. сказку "Золушка") *Незадолго до Нового Года Настя решила прогуляться по зимнему лесу. "А вдруг Деда Мороза встречу с мешком подарков?" - подумала она. Глядя на нее и Марфушенька вслед за Настей засобиралась в зимний лес * [-] РИС .007 Ух ты ! Да это же настоящий Дед Мороз ! * [-] РИС .008 Приход Деда Мороза сопровождался резким похолоданием * если [-] РИС .009 Тепло ли тебе, девица ? * [-] РИС .012 Издеваешся, старый хрен ? Не видишь, у меня все руки и ноги замерзли ! * [-] РИС .013 Организована доставка Марфушеньки домой гужевым транспортом * иначе * [-] РИС .010 Тепло, Морозушко * [-] РИС .011 Эвакуация обмороженной Насти силами Деда Мороза * [-] РИС .014 Состояние Насти критическое. Она находится в коме и подключена к аппаратуре искусственного жизнеобеспечения * конец * иначе если [-] Иван * Иван встретил Настю лишь на несколько минут, а полюбил ее на всю жизнь. Но судьба жестоко разлучила их, и с тех пор Иван все ходит по белому свету, ища Настю. * [-] РИС .015 Даже пришлось Бабу-Ягу спросить: - Где мне Настеньку найти, как мне Настеньку спасти ? * цикл [-] Иван вышвыривает леших из избушки Бабы-Яги * [-] РИС .016 * конец цикла [-] Лешие кончились ? * [-] РИС .017 Иван спешит на помощь Насте * иначе * конец * [-] РИС .018 Любовь творит чудеса * [-] РИС .019 Иван и Настя собираются ехать на свадьбу * [-] РИС .020 По наущению Бабы-Яги разойники устроили засаду Ивану и Насте * [-] РИС .021 Иван сражается с разбойниками * иначе если [-] Полет дубинок * [-] РИС .022 ДУБИНКИ ВЫШЛИ ЗА ПРЕДЕЛЫ ЗЕМНОЙ АТМОСФЕРЫ. ПОЛЕТ НОРМАЛЬНЫЙ * [-] РИС .023 ДУБИНКИ ВЫШЛИ НА ОКОЛОЗЕМНУЮ ОРБИТУ. ПОЛЕТ НОРМАЛЬНЫЙ * [-] РИС .14 Шло время. И вот незадолго до Нового Года ... * [-] РИС .024 ДУБИНКИ ВЫПОЛНИЛИ ШТАТНЫЙ СХОД С ОКОЛОЗЕМНОЙ ОРБИТЫ. ВХОД В ПЛОТНЫЕ СЛОИ АТМОСФЕРЫ * иначе * конец * Дубинки возвращаются [-] РИС .025 * [-] РИС .026 Поражение разбойников упавшими с неба дубинками * [-] РИС .027 Совет да любовь ! * МЧС [-] РИС .028 * С Новым Годом ! [-] РИС .029 * выход [-] РИС .030 Рисунки для презентации сделаны на основе фото из Интернета, с огрублением по цветности и разрешению и прорисовкой вручную нужных деталей * КОНЕЦ СХЕМЫ |
Автор: | SergeyNK [ Воскресенье, 23 Декабрь, 2012 12:57 ] |
Заголовок сообщения: | Re: Программы AB_VJAZ и DAL_VJAZ |
Прикольно! Спасибо за оригинальное позитивное поздравление! |
Страница 5 из 6 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |