Как с помощью программы dal2851 по-быстрому изготовить
поздравительную открытку
(программа dal2 v.0.85.1 выложена 22.12.2013 в теме
"Визуализация процедур и html")
Вложение:
ng1.jpg [ 126.33 КБ | Просмотров: 10049 ]
Вложение:
ng2.jpg [ 136.72 КБ | Просмотров: 10049 ]
Вложение:
ng3.jpg [ 136.2 КБ | Просмотров: 10049 ]
1. Генерация поздравительной открытки из структурного псевдокода
в режиме dal2html
Код:
Чтобы перейти в режим dal2html, нужно перед запуском программы
в файле dal2htm.cfg задать следующее значение параметра
__создание_htm_и_jpg_файлов "1" ; 0/1
; ; 0 - режим dal_vjaz_2
; ; 1 - режим dal_2_html
Ваша открытка, несколько строчек ...
Вот текст псевдокода, генерирующий новогоднее поздравление:
СХЕМА.1. [-]
М.Ю. Лермонтов
Когда волнуется желтеющая нива
* если [-]
Иллюстрация
* [-] РИС .002
* иначе если [-]
Стихотворение
* [-]
Когда волнуется желтеющая нива
И свежий лес шумит при звуке ветерка
И прячется в саду малиновая слива
Под тенью сладостной зеленого листка,
* [-]
Когда студеный ключ, играя по оврагу
И погружая мысль в какой-то смутный сон,
Лепечет мне таинственную сагу
Про мирный край, откуда мчится он,
* [-]
Тогда смиряется души моей тревога,
Тогда расходятся морщины на челе,
И счастье я могу постигнуть на земле,
И в небесах я вижу Бога.
* конец
* выход [-]
С Новым Годом !
* КОНЕЦ СХЕМЫ
1.1. Задаем имя файла псевдокода
Имя текстового файла с псевдокодом для схемы задается в файле
dal2htm.cfg при помощи следующих параметров:
__каталог02 " " ; это значит, что каталог не задан,
; поэтому файл нужно поместить в тот же
; каталог, что и exe-файл программы
; в htm-файл:
; N модуля N ссылочный имя 1: схемы
; ката- N модуля файла 2: схемы и
; лога м.б.>100 ПРОСМ/--- текстовые записи
; 3: схемы и все записи
__модуль01 "02> 3 kogda.txt ПРОСМ 3"
в результате задано имя файла kogda.txt, находящегося в том же каталоге, что
и exe-файл программы.
1.2. Вводим текст поздравления
В качестве шаблона берем приведенный выше псевдокод, генерирующий
новогоднее поздравление.
Сначала в заголовке схемы вводим нужный текст, например:
Поздравление для нашей Маши
Затем в действиях (они начинаются после строки "Стихотворение") пишем
несколько поздравительных четверостиший.
Затем во 2-й строке действия * выход пишем заключительное поздравление,
например:
Поздравляю с Днем Рождения,
Желаю счастья в личной жизни !
[Винни-]Пух
1.3. Вводим стили для блоков схемы
Определитель рисунка и стиля имеет вид РИС .N1 .N2 и помещается в первой
строке элемента схемы.
N1 - это номер пиктограммы (двузначное число) или jpg-файла (трехзначное
число;
N2 - это номер стиля.
Если задается только рисунок, то определитель имеет вид РИС .N1
Если задается толькл стиль, то определитель имеет вид РИС . .N2
Т.к. стиль в строке заголовка схемы задается для всей схемы в целом
(если стиль для схемы явно не задан, по умолчанию задается стиль 1),
то стиль для заголовка схемы задается в файле styles.cfg, в последнем
параметре стиля с названием НСЗС - номер стиля для заголовка схемы.
Для других элементов схемы стиль элемента задается в определителе
рисунка и стиля для этого элемента или, если он явно не задан, то по
умолчанию принимается равным стилю схемы.
Для выравнивания блоков действий по левому краю нужно в файле dal2htm.cfg
задать:
__коэф_выравн_блоков "85" ; коэффициент выравнивания блоков вертикали
; по левой границе (0, от 65 до 100)
1.4. Задаем рисунок для иллюстрации и рисунок-подложку
jpg-файлы рисунков помещаем в каталог \images и даем им имена начиная с
001.jpg и далее по порядку.
масштаб отображения рисунков на схеме задается в файле dal2htm.cfg
параметром
__масштаб_рисунков "1/2" ; масштаб вставляемых в схему рисунков:
; 1/1, 1/2, 1/4, 1/8
для рисунка-подложки масштаб всегда равен 1/1, а номер рисунка-подложки
задается в файле styles.cfg в строке стиля параметром
НРП - трехзначный номер рисунка-подложки,
000 - рисунок-подложка для схемы отсутствует
Для изменения положения схемы на подложке нужно поменять следующие
параметры в файле dal2htm.cfg:
__отступ_схемы_слева "100"
__отступ_схемы_справа "100"
__отступ_схемы_сверху "100"
__отступ_схемы_снизу "90"
1.5. Куда попадает и как называется файл сгенерированной открытки
Куда попадает:
это определяется следующими параметрами файла dal2htm.cfg:
__рабочий_каталог ".\rk"
;
__каталог__схем ".\rk\gfiles" ; каталог схем должен быть
; ; подкаталогом рабочего каталога
__каталог_схем_htm "./gfiles"
Как называется:
т.к. в приведенном в начале примере номер схемы равен 1, а номер модуля
тоже равен 3 (см. п.1), то для схемы в подкаталоге \gfiles будет
сформирован файл 3_1.jpg
Если качество получившегося jpg-изображения Вас не устраивает, то тогда
нужно в файле dal2htm.cfg установить
__генерация_bmp "1" ; 0/1 - установить в 1, если возникают
; проблемы с генерацией jpg
тогда в подкаталоге \gfiles будет сформирован файл 3_1.bmp
Для приведенного примера bmp-файл открытки получился чуть больше 3-х Мб,
сущая мелочь по нынешним временам.
2. Создание поздравительной открытки в графическом редакторе в режиме
dalvjaz2
Код:
Чтобы перейти в режим dalvjaz2, нужно перед запуском программы
в файле dal2htm.cfg задать следующее значение параметра
__создание_htm_и_jpg_файлов "0" ; 0/1
; ; 0 - режим dal_vjaz_2
; ; 1 - режим dal_2_html
2.1. Общие замечания
Все-таки я решил выложить обновление к Новому Году.
Программа dal2851 - это результат сгребания за 2 дня в одно целое
моих наработок за последние 3 месяца с удалением из текста программы
явно не отлаженных частей программы.
Ни о каком рефакторинге в стиле ЛВУ (логики высокого уровня) при таком
подходе говорить не приходится.
Программа dal2851 в режиме dalvjaz2 может работать одновременно как
с файлами исходного кода, так и с файлами псевдокода, которые могут
ссылаться друг на друга (подробнее см. файл dal2htm.cfg).
Возможен просмотр и редактирование (пока не отлажено на 100%) достаточно
больших схем типа "Дачные прогулки" (см. тему "Визуализация процедур и
html").
Код:
Задаются следующие ключевые слова для псевдокода (могут быть изменены
пользователем):
__строка_док_IF "* если"
__строка_док_EI "* иначе если"
__строка_док_EB "* иначе"
__строка_док_END "* конец"
__строка_док_CB "* цикл"
__строка_док_CE "* конец цикла"
__строка_док_A "*"
__строка_док_RET "* выход"
__строка_док_STOP "* КОНЕЦ СХЕМЫ"
__проверка_ветки "ветка = "
__переход_к_ветке "ветка :="
Ключевые слова и символы для программы:
<открывающий комментарий> + <ключевые слова для псевдокода>
простейшее задание действия без текста для программы: (**)
Вывод комментариев и исходного кода для процедуры:
при создании схемы процедуры в блоках как правило будет выводиться
только текст комментариев; полный текст действия можно просмотреть
во всплывающем окне блока для минимизированной формы схемы или после
перехода к тексту действия по щелчку левой кнопкой мыши на блоке
действия; в приводимом ниже примере в блоке действия появятся только
первые 2 строки (при этом символы комментария видны не будут):
(** это действие содержит
операторы "+" и "*" *)
a := b + c;
d := e * f;
Служебные комментарии по умолчанию:
(** если *)
(** иначе если *)
(** цикл *)
(** конец цикла *)
(**)
(** выход *)
Если первая строка действия состоит из одного из
вышеуказанных служебных комментариев, а за ней следуют
несколько строк исходного кода, то при формировании
текста блока такие служебные комментарии отображаться
не будут, а сразу будут выводиться следующие за ними строки
исходного кода; чтобы сделать эти служебные комментарии
отображаемыми, нужно либо добавить любой символ (например, пробел)
внутри комментария, например,
(** если *)
либо добавить пробел после комментария, чтобы строка не
кончалась с последним символом комментария.
Пример процедуры со служебными комментариями по умолчанию:
(* i.2. П2__СЧИТАТЬ_СХЕМУ *)
ПРОЦЕДУРА П2__СЧИТАТЬ_СХЕМУ;
НАЧАЛО
(**)
команда(К2__НАЧАЛО_ЧТЕНИЯ_СХЕМЫ);
(** цикл *)
ЦИКЛ_ПОКА ((запрос(З2__КОНЕЦ_ЧТЕНИЯ_СХЕМЫ) = ОТВЕТ_НЕТ) &
(запрос(З2__НЕТ_ВЫХОДА_ИЗ_ЦИКЛА) = ОТВЕТ_ДА))
ДЕЛАТЬ
(**)
команда(К2__ЧТЕНИЕ_СТРОКИ);
(**)
команда(К2__ПРОВЕРИТЬ_НАЧАЛО_ЭЛЕМЕНТА);
(** если *)
ЕСЛИ (запрос(З2__ЗАГОЛОВОК_СЧИТАН) = ОТВЕТ_ДА) ТО
(** если *)
ЕСЛИ (запрос(З2__НАЧАЛО_ЭЛЕМЕНТА) = ОТВЕТ_ДА) ТО
(**)
команда(К2__НАЧАТЬ_ЧТЕНИЕ_ЕЛЕМЕНТА);
(** иначе *) ИНАЧЕ
(**)
команда(К2__ПРОДОЛЖИТЬ_ЧТЕНИЕ_ЭЛЕМЕНТА);
(** конец *) КОНЕЦ;
(** иначе *) ИНАЧЕ
(**)
команда(К2__ЧИТАТЬ_ЗАГОЛОВОК);
(** конец *) КОНЕЦ;
(** конец цикла *)
КОНЕЦ_ЦИКЛА_ПОКА;
(**)
команда(К2__ОКОНЧАНИЕ_ЧТЕНИЯ_СХЕМЫ);
(** выход *)
ВЫХОД;
КОНЕЦ_ПРОЦЕДУРЫ П2__СЧИТАТЬ_СХЕМУ;
(** КОНЕЦ СХЕМЫ *)
Вложение:
chs.jpg [ 76.03 КБ | Просмотров: 10049 ]
Код:
Упрощенный вариант ЛВУ
Т.к. изложенный мной в теме "Программная логика верхнего уровня"
вариант ЛВУ, не смотря на некоторые достоинства, главным из которых
является полная логическая изоляция ЛВУ от логики нижнего уровня,
является слишком громоздким, то можно легко использовать при написании
программ упрощенный вариант ЛВУ, например:
(* i.5. читать схему *)
procedure chitatx_shemu;
begin
(** начало чтения схемы *)
form1.nachalo_chteniq_shemy;
(** цикл пока не конец чтения схемы и
нет выхода из цикла*)
while ((form1.konec_chteniq_shemy = NO) and
(form1.net_wyh_iz_cikla = YES)) do begin
(** чтение строки *)
form1.chtenie_stroki;
(** проверить начало элемента *)
form1.proweritx_nachalo_el;
(** если заголовок считан *)
if (form1.zagol_schitan = YES) then begin
(** если начало элемента *)
if (form1.nachalo_el = YES) then begin
(** начать чтение элемента *)
form1.nachatx_chtenie_el;
(** иначе *) end else begin
(** продолжить чтение элемента *)
form1.prodolvitx_chtenie_el;
(** конец *) end;
(** иначе *) end else begin
(** читать заголовок *)
form1.chitatx_zagol;
(** конец *) end;
(** конец цикла *)
end;
(** окончание чтения схемы *)
form1.okonchanie_chteniq_shemy;
(** выход *)
end;
(** КОНЕЦ СХЕМЫ *)
2.2. Общие правила работы с редактором
Вложение:
red.JPG [ 99.18 КБ | Просмотров: 10049 ]
Интерфейс редактора dalvjaz2 я постарался по возможности приблизить к
интерфейсу ДРАКОН-редактора Степана Митькина.
Для вызова окна редактирования элемента нужно кликнуть по элементу
левой кнопкой мыши.
Для добавления нового элемента в схему нужно кликнуть левой кнопкой мыши
по одной из четырех быстрых кнопок задания элементов: "действие",
"условие", "ветка условия" (дополнительное условие сложного условия),
"цикл", после чего подвести указатель мыши к нужному элементу схемы и
щелкнуть по нему левой кнопкой мыши.
Элемент "ветка условия" можно вставлять только по щелчку на элементе
"условие" или на другом элементе "ветка условия".
Элементы "иначе" и "конец" блока условия на схеме обозначены кружочками
и вставлять новые элементы в схему можно по щелчку внутри кружочков
"иначе" и "конец". Флажок "Кружочки" позволяет включать или отключать
отображение на схеме элементов "иначе" и "конец".
Для удаления элемента или группы элементов сначала нужно выделить эти
элементы, а затем отправить их в буфер вырезанных элементов, нажав на
кнопку "ножницы".
Для начала выделения элементов нужно или нажать клавишу Ctrl, когда
указатель мыши находится на пустом пространстве схемы, либо навести
указатель мыши на элемент, щелкнуть правой кнопкой мыши и выбрать пункт
контекстного меню "начать выделение".
Для выделения элемента нужно провести указатель маши над этим элементом.
Для окончания выделения нужно либо отпустить клавишу Ctrl, либо щелкнуть
правой кнопкой мыши по пустому пространству схемы.
Если при выделении был выделен старший элемент блока, то после окончания
выделения автоматически будут выделены и все подчиненные элементы блока,
например:
- для начала условия: все элементы условия;
- для дополнительного условия: все элементы ветки дополнительного условия;
- для начала цикла: все элементы цикла.
Выделение можно отменить, щелкнув левой кнопкой мыши по пустому
пространству схемы.
Восстановить элементы из блока вырезанных элементов можно, выбрав кнопку
"восстановить для ножниц" (загнутая стрелка и ножницы), а затем щелкнув
по нужному элементу схемы.
Аналогично выполняется копирование и вставка элементов для буфера
"копирование" (листочки).
Кнопка "откат" сейчас работает только для последнего действия.
Кнопка "Созд.зап" (создать новую запись после текущей) - пытается создать
запись с индексом и названием, указанными в строке комбобокса. При этом
выполняется проверка на уникальность индекса создаваемой записи для
текущего файла.
Флажок "N стр" - разрешает или запрещает отображение для блоков их
начальных номеров строк в текстовом файле.
Флажок "F2" - переход к минимизированной форме схемы.
При работе с минимизированной схемой для перехода к нужному элементу
полной формы схемы следует навести указатель мыши на нужный элемент
минимизированной схемы, после чего нажать клавишу "F2".
Кнопки "Конф" и "Стили" вызывают для редактирования текстовые файлы
dal2htm.cfg и styles.cfg как они есть. Ответственность за аккуратное
редактирование лежит на пользователе. При необходимости испорченные
файлы конфигурации можно восстановить из архива программы.
Кнопки навигации между схемами файла: "|<","<",">",">|". Нужную схему
можно выбрать и в комбобоксе.
Флажок "схема" позволяет просмотреть (но не редактировать) схему в
текстовом формате. Редактируйте текст схемы в текстовом редакторе,
а после сохранения изменений программа автоматически считает новую
версию текстового файла.
Кнопка "Сохр." - сохранение измененного файла в рабочем каталоге.
Кнопка "<" в левом верхнем углу окна программы - возврат после перехода
по ссылке (подробнее см. файл dal2htm.cfg).
При редактировании схемы, если для нее задан рисунок-подложка, то при
сдвиге схемы подложка сдвигается или остается на месте в зависимости
от параметра
__двигать_подложку "ДА" ; (ДА/НЕТ) - при сдвиге схемы подложка
; ; сдвигается вместе со схемой или
; ; остается на месте
Т.к. у меня не было времени для тщательной отладки редактора, то
сохранение отредактированного файла выполняется в рабочий каталог
(см. п.1.5), откуда потом этот файл можно скопировать в каталог файлов
исходного кода.
Впрочем, если совместить рабочий каталог с каталогом файлов исходного
кода, то редактирование станет боевым. Но это уже на усмотрение
пользователя, мое дело - предупредить.
Программа dal2851 является бесплатным концептуальным макетом, поставляется
"как есть" и предназначена для развития и совершенствования другими
программистами, если у них возникнет такое желание. Поэтому все замечания
об отсутствии нормального интерфейса я не принимаю - бесплатный макет
и должен выглядеть как макет, а не как вылизанное проприетарное ПО.
2.3. Новые стили
В версии 0.85.1 были добавлены новые стили для фона блока схемы, что
видно по 3-м приведенным и отличающимся друг от друга вариантам
поздравительной открытки.
Эти новые стили так описаны в файле styles.cfg:
ЦФБ - цвет фона блока, служебные значения:
300 300 300 - выводятся только контур и текст блока, а фон прозрачный;
400 400 400 - выводится только текст блока на фоне схемы или на фоне
рисунка-подложки, если он задан для схемы.
2.4. Создание поздравительной открытки
Для создания поздравительной открытки в редакторе dalvjaz2 нужно:
- cкачать и распаковать архив с программой dal2851, проверить
exe-файл на вирусы или собрать проект заново в Delphi 4.0 или выше;
- запустить dal2851 в режиме dalvjaz2 и перейти к файлу kogda.txt;
- создать запись "СХЕМА.2.";
- создать элемент "условие";
- для условия создать элемент "ветка условия";
- для условия добавить действие;
- для ветки условия добавить 3 действия;
- перейти к схеме 1, открыть окно редактирования заголовка,
- скопировать оттуда все содержимое кроме 1-й строки, вернуться к
схеме 2, открыть окно для заголовка и вставить туда скопированный текст
из заголовка схемы 1; чтобы запомнить исправление, нужно щелкнуть
левой кнопкой мыши по пустому пространству схемы; выход без сохранения
по клавише Esc;
- скопировать из схемы 1 и перенести в схему 2 текст и для остальных
элементов, тут уже нужно копировать и переносить весь текст для блока;
- когда вы попытаетесь скопировать поздравление "С Новым Годом!", то
в строке состояния программы может появиться сообщение "Не хватает места
слева или снизу для окна редактирования"; в этом случае нужно сдвинуть
схему вверх при помощи полосы прокрутки или нажать правую кнопку мыши на
свободном пространстве схемы и протащить схему в нужном направлении,
после чего отпустить правую кнопку мыши;
- чтобы вернуть схему в начальное положение, нажмите кнопку "ХУ0" в левом
нижнем углу окна программы;
- отключите флажок "Кружочки";
- перехватите экран, загрузите его в редактор Paint, вырежте открытку и
сохраните ее в нужном вам формате;
- сохрание текстовый файл kogda.txt в рабочем каталоге;
- в случае, если созданная схема не умещается в экран целиком, нужно
после ее сохранения в рабочем каталоге выйти из программы, установить
в файле dal2htm.cfg режим dal2html и сгенерировать схему, для чего
запустить программу, выбрать строку с именем файла для схемы и нажать
кнопку "Создать html-файл". Где после этого искать сгенерированную схему,
подробно описано в п.1.5.
Замечание: программа создавалась и отлаживалась при разрешении экрана
1280 * 1024; если у вас разрешение экрана меньше, то перед запуском
программы в режиме dalvjaz2 исправьте файл formsize.dat, задающий
координаты левого верхнего и правого нижнего углов окна программы
на эране при запуске программы