ПРОГРАММА  DAL_2_HTML v.0.84
Вложение:dal2_084.rar[720.39 КБ]
Скачиваний: 518


Среда разработки: Delphi 4, проект может быть загружен в Delphi 2009
и выше и собран там без ошибок.
Общий размер файлов исходного кода - чуть меньше 6800 строк исходного
кода и чуть больше 221 Кбайт.
Для запуска программы кроме исполняемого файла dalvjaz2.exe и
задаваемых в конфигурации текстовых файлов нужны файлы dal2htm.cfg и
styles.cfg.
В архиве dal2_084.rar находятся исполняемый файл программы dal2html,
файлы исходного кода, файлы проекта, файлы конфигурации программы
dal2html и каталоги с jpg-файлами.

Сначала несколько рисунков, а пояснения будут ниже.

схема в классическом стиле "черные линии на белом фоне":
Вложение:
51_8.jpg [ 34.42 КБ | Просмотров: 12803 ]

__коэф_выравн_блоков = 85 :
Вложение:
1_23.jpg [ 347.2 КБ | Просмотров: 12803 ]

Вложение:
51_10.jpg [ 156.36 КБ | Просмотров: 12803 ]

__коэф_выравн_блоков = 100, отключена цветность и задан вывод для блоков
их начальных номеров строк в текстовом файле:
Вложение:
1_23_2.jpg [ 274.63 КБ | Просмотров: 12803 ]

Вложение:
51_10_2.jpg [ 126.13 КБ | Просмотров: 12803 ]


Краткое описание работы с программой 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 выравнивать
ветки по высоте можно просто перенося в текстовом редакторе фрагменты
исходного кода из одной ветки в другую.