OberonCore https://forum.oberoncore.ru/ |
|
Визуализация процедур и HTML https://forum.oberoncore.ru/viewtopic.php?f=121&t=4413 |
Страница 1 из 1 |
Автор: | Дмитрий_ВБ [ Понедельник, 29 Июль, 2013 21:23 ] |
Заголовок сообщения: | Визуализация процедур и HTML |
ПРОГРАММА DAL_2_HTML v.0.84 Вложение: Среда разработки: Delphi 4, проект может быть загружен в Delphi 2009 и выше и собран там без ошибок. Общий размер файлов исходного кода - чуть меньше 6800 строк исходного кода и чуть больше 221 Кбайт. Для запуска программы кроме исполняемого файла dalvjaz2.exe и задаваемых в конфигурации текстовых файлов нужны файлы dal2htm.cfg и styles.cfg. В архиве dal2_084.rar находятся исполняемый файл программы dal2html, файлы исходного кода, файлы проекта, файлы конфигурации программы dal2html и каталоги с jpg-файлами. Сначала несколько рисунков, а пояснения будут ниже. схема в классическом стиле "черные линии на белом фоне": Вложение: __коэф_выравн_блоков = 85 : Вложение: Вложение: __коэф_выравн_блоков = 100, отключена цветность и задан вывод для блоков их начальных номеров строк в текстовом файле: Вложение: Вложение: Краткое описание работы с программой dal2html После запуска программы dal2html окно схемы на экране не появляется, а отображаются список заданных в конфигурации файлов, 2 кнопки - "создать html-файл" и "о программе" - и строка состояния в нижней части окна программы. Чтение конфигурации сразу после запуска программы занимает несколько секунд. Чтобы сгенерировать htm-файл, нужно выбрать в окне программы один из списка заданных в конфигурации файлов исходного кода или документации, после чего нажать кнопку "создать htm-файл". htm-файл и вызываемые при его просмотре jpg-изображения будут созданы (jpg-файлы структурных блок-схем создаются из комментариев в исходном коде программы или из текста псевдокода в файле документации) и помещены в рабочий каталог программы, после чего этот htm-файл можно будет просматривать любым интернет-браузером. Для отображения в окне браузера внесеных в текстовый файл изменений нужно заново сгенерировать htm-файл для этого текстового файла, после чего нажать кнопку "обновить" в окне браузера. Логика работы программы dal2html Программа начинает формировать htm-файл с создания его заголовка с параметрами просмотра нижеследующего текста <tt><pre>, что обеспечивает просмотр текста в том виде, как он был набран в текстовом редакторе. После этого программа автоматически генерирует первую запись htm-файла 001 со ссылками на остальные записи файла. На эту запись можно будет ссылаться из других htm-файлов при совместном просмотре в браузере нескольких файлов. Пример 1-й записи сгенерированного htm-файла: Код: 001 - список записей ТЕКСТ.01 -------- СХЕМА.1. u_ls.52 - создание htm-файла ------------------------------------- СХЕМА.2. u_ls.57 - получение html-ссылки ---------------------------------------- СХЕМА.3. u_files.56 - запись ссылочной карты в htm-файл ------------------------------------------------------- СХЕМА.8. простой цикл-силуэт ---------------------------- СХЕМА.10. пробная процедура РИС . .2 --------------------------------------- ТЕКСТ.01 вторая запись htm-файла это ссылки на первые записи других файлов формат ДАЛВЯЗ 2 полученная html-ссылка _>1.001 1.001 ----- _>2.001 2.001 ----- _>3.001 3.001 ----- _>4.001 4.001 ----- В процессе генерации htm-файла программа переводит гипертекстовые ссылки из формата ДАЛВЯЗ 2 в формат HTML, генерирует из текстов программных записей jpg-файлы и привязывает к блокам созданных структурных блок-схем ссылки на другие записи htm-файла при помощи ссылочной карты map. Для каждого блока карты формируется своя строка area со следующими параметрами: - coords: задание координат блока на схеме - href: гипертекстовая ссылка - title: задание текста для всплывающего окна блока Т.к. ссылочная карта при просмотре в браузере не отображается, то сразу после схемы следует некоторое количество пустых строк, ограниченных сверху и снизу строками "ссылки cхемы:" и "конец ссылок схемы". Главные улучшения по сравнению с версией 0.83 программы dalvjaz2 * Переход к html-формату, являющемуся одним из общепризнанных стандартов документирования программ. * Проделана значительная работа по оптимизации построения схемы, в том числе с учетом замечаний Алексея Донского по выравниванию левых границ блоков действий вертикали. В конфигурации введен параметр "__коэф_выравн_блоков" - коэффициент выравнивания блоков вертикали по по левой границе, допустимые значения: 0 и от 65 до 100. Если __коэф_выравн_блоков = 0, то блоки не выравниваются, у каждого из них свой размер и все они центрированы по отношению к своей вертикали. Если __коэф_выравн_блоков >= 65, то блоки выравнимаются по левому краю, при этом если размер блока < "__коэф_выравн_блоков" процентов от ширины максимального блока вертикали, то размер блока по ширине задается равным значению "0.__коэф_выравн_блоков" от размера самого широкого блока вертикали. Когда __коэф_выравн_блоков = 100, то все блоки вертикали, кроме блоков условий и переходов к другим веткам, становятся одинаковыми по ширине и центрированными по отношению к вертикали. * Введен файл стилей, позволяющий по желанию пользователя создавать как традиционные схемы с черными линиями на белом фоне, так и схемы в стиле "оттенки серого" и цветные схемы со вставкой в блоки пиктограмм, полноценных jpg-изображений и с возможностью менять цвета и фонты для всей схемы в целом или для каждого ее блока по отдельности. Более подробное описание настройки конфигурации программы dal2html см. в файлах dal2htm.cfg и styles.cfg. Текст, формирующий приведенный выше цветастый рисунок: Код: СХЕМА.10. пробная процедура РИС . .2 * начало РИС .11 * если (условие 1 = 10) РИС .12 * если (условие 2 = 20) РИС .13 * действие 1 РИС .14 * иначе если (условие 3 = 30) РИС .15 .3 * действие 2 РИС .002 * иначе если (условие 4 = 40) РИС .16 * действие 3 РИС .004 [-] * конец * конец * выход * КОНЕЦ СХЕМЫ И в заключение небольшое рассуждение на отвлеченную тему. В чем разница между автоматным и силуэтным программированием ? У них практически одинаковый логический аппарат, т.к. switch - это (если не использовать фокусы с отсутствием break в конце вариантов switch) всего лишь альтернативный вариант сложного условия: * если * иначе если ... * иначе если * иначе * конец Разница в целях. В автоматном программировании ставится задача - логика программного кода должна описывать логику работы автомата, и эта задача может решаться либо путем использования switch, либо путем использования сложного условия. В силуэтном программировании правилу структурного текстового программирования "текст процедуры должен целиком умещаться в экран" соответствует правило "ветка силуэта должна целиком умещаться в экран". Использование горизонтальной полосы прокрутки позволяет с бОльшим комфортом для глаз, чем при использовании вертикальной полосы прокрутки, просматривать схему алгоритма процедуры. К тому же, в отличие от текстового структурного программирования, просматривается не сам текст процедуры, а комментарии к нему, обведенные в рамки, соединенные линиями логических переходов, что позволяет уменьшить информационное давление на программиста. При необходимости текст процедуры может быть быстро просмотрен во всплывающем окне выбранного блока схемы, или путем перехода к нему по щелчку левой кнопки мыши на выбранном блоке схемы. В силуэтном программировании ветки силуэта могут: - либо соответствовать состояниям автомата в случае решения задачи автоматного программирования; - либо являться средством деления логики процедуры на размещаемые по горизонтали и умещающиеся по высоте в окно просмотра логические фрагменты с целью сделать отображение схемы алгоритма более удобным для восприятия, чем при вертикальной логике отображения алгоритма. Т.е силуэтное программирование кроме решения задачи автоматного программирования может решать и другую задачу, которая и является главной задачей силуэтного программирования - обеспечить удобный для программиса визуальный контроль за развитием логики процедуры в процессе написания процедуры вне зависимости от того, описывает ли эта процедура логику работы автомата или нет. Если процедура не является автоматом, то для ДАЛВЯЗ 2 выравнивать ветки по высоте можно просто перенося в текстовом редакторе фрагменты исходного кода из одной ветки в другую. |
Автор: | Владимир Паронджанов [ Вторник, 30 Июль, 2013 15:04 ] |
Заголовок сообщения: | Re: Визуализация процедур и HTML |
Дмитрий_ВБ писал(а): В силуэтном программировании правилу структурного текстового программирования "текст процедуры должен целиком умещаться в экран" соответствует правило "ветка силуэта должна целиком умещаться в экран". Использование горизонтальной полосы прокрутки позволяет с бОльшим комфортом для глаз, чем при использовании вертикальной полосы прокрутки, просматривать схему алгоритма процедуры. Дмитрий Владимирович, у меня два вопроса. 1. Какой размер экрана у Вашего компьютера в дюймах — 13" или 15" или 15,6" или 17"? Или что-нибудь иное? 2. В некоторых популярных программах горизонтальная прокрутка выполняется колесиком мыши при нажатой клавише Shift. А что Вы рекомендуете? |
Автор: | Дмитрий_ВБ [ Вторник, 30 Июль, 2013 19:09 ] |
Заголовок сообщения: | Re: Визуализация процедур и HTML |
Здравствуйте, Владимир Даниелович. У меня монитор 17" с разрешением 1280 * 1024. А по горизонтали я обычно сдвигаю экран, перетаскивая бегунок скроллера мышью с нажатой левой кнопкой. Хотя и колесиком бы неплохо, но в значительной части программ оно по умолчанию работает с вертикальной полосой прокрутки, поэтому я уже привык двигать по горизонтали мышью с нажатой левой кнопкой. |
Автор: | Дмитрий_ВБ [ Суббота, 03 Август, 2013 20:47 ] |
Заголовок сообщения: | Re: Визуализация процедур и HTML |
РАБОТА С БОЛЬШИМИ ИЗОБРАЖЕНИЯМИ В ПРОГРАММЕ DAL_2_HTML v.0.85 Вложение: В архиве dal2_085.rar, кроме исполняемого файла, файлов исходного кода, файлов проекта и файлов конфигурации программы содержатся текстовый файл и все изображения, нужные для создания схемы "Дачные прогулки" Вложение: Все делается в спешке, т.к. свободного времени как обычно не хватает. Да и на этой неделе свободного времени было мало, поэтому работу с большими визуальными схемами мне удалось проверить только вчера. (но, вообще говоря, как концептуальный макет, пригодный для развития другими программистами, версия 0.84 свою задачу решает, внесенные в версию 0.85 исправления касаются частностей, хотя и имеющих значение при практической работе по созданию визуальных схем) Выяснилась такая вещь. При приближении размера jpg-файла к 1 Мб и размера bmp-файла к 100 Мб библиотеки Delphi 4 (а может, Windows XP) отказываются работать с графическими файлами таких размеров, кстати браузер тоже отказывается открывать bmp-файл такого размера. Понятно, что конкретные цифры тут зависят от объема оперативной памяти компьютера и еще много от чего, но тенденция понятна. Как отказываются ? При генерации htm-файла начинают всплывать окна с сообщениями "JPEG error #36" и "недостаточно памяти для выполнения задачи". Это только одна из причин, почему я не захотел встраивать генерацию htm-файла в графическую оболочку dalvjaz2. А ведь если ты встроил, а у тебя постоянно лезут при малейшем чихе системные сообщения об ошибках, то потенциальные пользователи вряд ли будут в восторге от этого. Понятно, как с этим бороться - нужно искать и подключать специализированные графические библиотеки, а для этого у меня нет ни свободных моральных сил, ни свободного времени, ни желания. Как я это проверял - просто копировал весь текст начиная с первого "* если" и заканчивая последним "* конец" в буфер обмена и вставлял прямо перед действием "* выход" подсистема jpeg не выдержала даже удвоения, т.е. для нее визуальные схемы размера "Морозко" или "Дачные прогулки" уже приближаются к максимальной границе. Подсистема bmp выдержала четырехкратное увеличение размера и заткнулась с сообщением "недостаточно памяти для выполнения задачи" при пятикратном увеличении размера исходного текстового файла. (кстати напомню, что схема "Дачные прогулки" выполнена в формате "таблица-силуэт", где внутри цикла-силуэта друг за другом следуют несколько сложных условий, образующих строки таблицы-силуэта) Для справки приведу сравнительные размеры jpg и bmp файлов: для существующего размера схемы "Дачные прогулки" получаем, что размеры jpg в зависимости от используемых стилей колеблются в пределах от 815Кб до 850Кб, а размер bmp составляет чуть больше 33Мб. (для сравнения - размер цикла-силуэта u_dalvj.23 "подсчитываем размер схемы", не включающего рисунков, равен чуть меньше 315Кб) При двукратном увеличении размера исходного текстового файла, когда jpg уже не работает, размер bmp превышает 52Мб, и браузер этот файл просматривает. Я включил в dal2htm.cfg параметр __генерация_bmp "0" ; 0/1 - установить в 1, если возникают ; проблемы с генерацией jpg Казалось бы - тупик. Даже увеличение схемы "Дачные прогулки" в 2 раза визуально не производит особого впечатления: типа, можно было бы и побольше. Вот тут и вступает в дело html. Допустим, у нас в сгенерированном файле с десяток схем размером со схему "Дачные прогулки". Тогда в действии "* выход" каждой из них можно сделать ссылку "_>.N" на ту схему, которая будет продолжением. Кстати, необязательно в действии "* выход" - ссылку на другие схемы можно вставлять в любом действии. Кроме того я подумал, что было бы удобно, если бы по ссылке действия можно было бы открыть произвольный html-файл. Теперь эта проблема решается так: * если [-] _><a href="../dalvj2.htm#i.2">dalvj2.2</a> т.е. после определителя ссылки программы dal2html помещаем стандартную html-ссылку. html-файл, содержащий только схемы Теперь описание модуля в dal2htm.cfg выглядит так: Код: ; в htm-файл: ; N модуля N ссылочный имя 1: схемы ; ката- N модуля файла 2: схемы и ; лога м.б.>100 ПРОСМ/--- текстовые записи ; 3: схемы и все записи ... __модуль07 "02> 52 dacha.txt ПРОСМ 1" Т.е. html-файл превратился в галерею рисунков, но не простых, а таких, в которых можно задавать логические связи между элементами рисунка, а также гиперссылки на другие рисунки и на произвольные html-файлы. Теперь файлы схем не обязаны находиться в рабочем каталоге, куда будут помещаться сгенерированные html-файлы, а могут находиться и в одном из подкаталогов рабочего каталога, имя которого задается в dal2htm.cfg. При тестировании программы dal2html со схемой "Морозко" (выложенной в конце прошлого года в теме "Программы AB_VJAZ и DAL_VJAZ", у которой размер по вертикали значительно больше размера по горизонтали) с разными стилями отдельных блоков выяснилось, как минимум по оси У есть небольшая погрешность в подсчете размеров схемы, которая при большом размере схемы по У привела к тому, что половина блока "* выход" (конец схемы) выехала за границы схемы. В чем тут дело, я пока не разобрался, поэтому на всякий случай решил окружить схему на листе схемы рамкой размером 100 пикселей и вообще вынести задание расстояний схемы от границ листа схемы в dal2htm.cfg. Кроме того, я вынес в dal2htm.cfg задание базовых размеров схемы bdx и bdy, от размеров которых зависят размеры между элементами схемы по вертикали и горизонтали, а также размеры выступающих треугольников блоков условий. Сейчас bdx и bdy равны: bdx = ширина символа фонта 'Courier New', 9 bdy = (высота символа фонта 'Courier New', 9) + 2 И еще одна особенность, которая была введена в 0.84, но о которой я не упомянул в прошлый раз - теперь возможен одновременный просмотр файлов исходного кода и документации (псевдокода) и задание взаимных ссылок между ними. Эта возможность может быть полезной тем, кто в принципе не хочет писать никаких комментариев в своем исходном коде. |
Автор: | Дмитрий_ВБ [ Понедельник, 05 Август, 2013 20:11 ] |
Заголовок сообщения: | Re: Визуализация процедур и HTML |
Что-то вязко идет у меня процесс обновления версии в этот раз. К сожалению, в программу вкралась ошибка, которая помешает просматривать сгенерированные htm-файлы под linux. Чтобы преодолеть ее, нужно внести 2 исправления: Код: 1) в файл u_ls.pas: 2210 form_ls.polnoe_imq_shemy :=cfg_ctlg_shem + '\' + stm; 2211 *** form_ls.poln_imq_sh_htm :=cfg_ctlg_shem_htm + '/' + stm; 2212 form_ls.imq_shemy := stm; в строке 2211 '\' нужно заменить на '/' (строка показана после исправления) 2) в файл dal2htm.cfg: __каталог_схем_htm "./gfiles" (строка показана после исправления) Выкладываю архив с исправленными u_ls.pas и dal2html.exe А в файл dal2htm.cfg уж пожалуйста, те кому это интересно, внесите исправление сами. Вложение:
|
Автор: | Дмитрий_ВБ [ Среда, 16 Октябрь, 2013 22:18 ] |
Заголовок сообщения: | Re: Визуализация процедур и HTML |
DAL_2_HTML v.0.86 Реализовано разделение проекта на 2 части: - исполняемый файл собирается в BB, его исходный код написан на КП и содержит логику верхнего уровня; - дельфийские формы и процедуры собраны в DLL (подробнее см. в первом сообщении темы "Визуальное программирование\Программная логика верхнего уровня") Вложение:
|
Автор: | adva [ Четверг, 17 Октябрь, 2013 05:32 ] |
Заголовок сообщения: | Re: Визуализация процедур и HTML |
А что надо запустить, что программу открыть? |
Автор: | Дмитрий_ВБ [ Четверг, 17 Октябрь, 2013 18:47 ] |
Заголовок сообщения: | Re: Визуализация процедур и HTML |
Надо разархивировать файл в какой-нибудь каталог, например dal2html, и запустить выполняемый файл dal2html.exe. После этого программа должна запуститься с заданной демонстрационной конфигурацией, включающей написанный на русскоязычной версии КП файл MyD4.txt - в нем только 1 английский идентификатор - название модуля в начале и в конце файла. Чтобы осмысленно начать пользаваться программой, нужно ознакомиться с содержимым файлов dal2htm.cfg и styles.cfg, прочитать с первого сообщения тему "Визуализация процедур и HTML" и скачать одну из предыдущих версий, например, 0.84, чтобы поиграться с файлами, заданными там в конфигурации. Чтобы осмысленно начать редактировать текст программы, надо ознакомиться с работой в средах программирования Delphi (4 и выше) и BlackBox, уметь программировать на паскале и КП и понимать, что такое DLL и как организована работа с ними в вышеуказанных средах программирования. -------------------------------------------------------------- Конечно можно сказать, что программа dalvjaz2, а теперь dal2html развивается медленно. Одна из причин этого в том, что я не знаю, нужна ли эта программа кому-нибудь еще кроме меня. Попробуйте использовать программу dal2html для работы с вашими алгоритмами - ничего сложного тут нет, надо только набрать в текстовом редакторе файл с псевдокодом, вызвать программу и создать одним нажатием кнопки html-файл с подключенными к нему схемами, созданными из псевдокода (программистам я советовать не буду - сами разберутся, если захотят). Пробуйте, задавайте вопросы, делайте замечания, а я по возможности буду на них реагировать. Тогда и программа начнет развиваться быстрее. |
Автор: | adva [ Пятница, 18 Октябрь, 2013 03:48 ] |
Заголовок сообщения: | Re: Визуализация процедур и HTML |
Попробую как будет время, но сразу скажу, мне нужна не сама программа, а лишь некоторые идеи из нее, и возможно алгоритмы посмотреть. Но это тоже пока в планах, хотел просто взглянуть, есть ли чего, что меня заинтересует. |
Автор: | Дмитрий_ВБ [ Воскресенье, 22 Декабрь, 2013 18:52 ] |
Заголовок сообщения: | Re: Визуализация процедур и HTML |
Выкладываю версию 0.85.1, подробные пояснения см. в моем сообщении от 22.12.2013 в теме "КУБ-СИЛУЭТ..." Планирую все обсуждения своих программ перенести туда, а здесь будут новые версии без комментариев. Вложение:
|
Автор: | Дмитрий_ВБ [ Среда, 17 Июнь, 2015 22:37 ] |
Заголовок сообщения: | Re: Визуализация процедур и HTML |
Выкладываю версию 0.87.1, пояснения см. в посте от 17.06.2015 в теме "КУБ-СИЛУЭТ ..." Вложение:
|
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |