Главная страница

С чего начался КОНЦЕПТ

Первоначальная идея заключалась в создании технологии максимально простого перехода от конкретного текста (протокола, заявки, договора, доверенности и т.д.) к программе, автоматизирующей создание (т.е. генерацию) документов по шаблону. Вот почему доменное имя этого сайта называется "gendoc" - сокращенно от "генерация документов".

Ниже приведен пример для иллюстрации этой идеи.

Постановка задачи

Пусть целью является разработка программы для автоматизированного создания текстов писем-приглашений.

Посмотреть листинг итоговой программы
Посмотреть скриншот результата

Шаг 1.Выбираем конкретный текст приглашения

Пусть текст приглашения выглядит следующим образом:

Уважаемый Иван Иванович!
Приглашаем Вас на встречу выпускников,
которая состоится 10.12.2010г. в 17:00
в ресторане "Вечерний".
Приходите обязательно!
С уважением,
Дирекция школы N4

Шаг 2.Превращаем текст в программу

Для этого в начало каждой строки текста достаточно поместить символ >. Для интерпретатора КОНЦЕПТ это является командой вывода строки в выходной поток.

>Уважаемый Иван Иванович! 
>Приглашаем Вас на встречу выпускников, 
>которая состоится 10.12.2010г. в 17:00 
>в ресторане "Вечерний". 
>Приходите обязательно! 
>С уважением, 
>Дирекция школы N4 

Это уже не просто текст, а программа КОНЦЕПТ, которую можно скопировать и выполнить в интерпретаторе здесь. Это касается также всех последующих примеров на этой странице.

Шаг 3.Параметризуем текст

Чтобы перейти от конкретного текста к шаблону, нужно в тексте выделить переменные (т.е. изменяемые) фрагменты. В КОНЦЕПТ такие переменные фрагменты называются подстановками или просто переменными и заключаются в [].

В рассматриваемом примере логично выделить следующие переменные части: кому адресовано приглашение, название мероприятия, дата и время начала, место, подпись приглашающего.

>Уважаемый [Иван Иванович]
>Приглашаем Вас [на встречу выпускников]
>которая состоится [10.12.2010г.] в [17:00] 
>[в ресторане "Вечерний"]
>Приходите обязательно! 
>С уважением, 
>[Дирекция школы N4] 

Если выполнить этот текст/шаблон/программу в интерпретаторе КОНЦЕПТ, то пользователю последовательно будет задано шесть вопросов, по одному для каждой подстановки. Ниже приведены протокол запуска последнего примера и полученный в результате текст.

Введите значение переменной "Иван Иванович": Петр Петрович
Введите значение переменной "на встречу выпускников": на соревнование по легкой атлетике
Введите значение переменной "10.12.2010г.": 22.06.2011
Введите значение переменной "17:00": 10:00
Введите значение переменной "в ресторане "Вечерний"": на стадионе "Метеор"
Введите значение переменной "Дирекция школы N4": Городской спорткоммитет

Уважаемый Петр Петрович!
Приглашаем Вас на соревнование по легкой атлетике,
которая состоится 22.06.2011 в 10:00
на стадионе "Метеор".
Приходите обязательно!
С уважением,
Городской спорткоммитет

Шаг 4.Переименовываем переменные

Переменным шаблона нужно задать более общие наименования. Этот шаг можно было бы объединить с предыдущим.

>Уважаемый [Имя и отчество приглашаемого]
>Приглашаем Вас [Название мероприятия]
>которая состоится [Дата проведения мероприятия] в [Время начала] 
>[Место проведения мероприятия]
>Приходите обязательно! 
>С уважением, 
>[Подпись] 

Шаг 5.Улучшаем интерфейс ввода данных

На предыдущих шагах для определения значений переменных использовался встроенный механизм интерпретатора КОНЦЕПТ:
1) значения переменных запрашиваются в порядке их появления в тексте
2) используется типовой запрос 'Введите значение переменной:"<имя_переменной>":'
3) начальным значением является пустая строка и отсутствует возможность выбора значения из списка возможных

На данном шаге используются команды КОНЦЕПТ "присвоить" и "ввести" для улучшения интерфейса ввода данных рассматриваемого примера. Команда КОНЦЕПТ - это фраза, начинающаяся с новой строки одним или двумя ключевыми словами, за которыми следует список аргументов, разделенных одним или несколькими пробелами. Если строка начинается с символа *, то она является комментарием.

* Запрос значений переменных 
ввести переменная 'Имя и отчество приглашаемого' 'Кого пригласить?'  
ввести меню1 'Название мероприятия' 'Какое мероприятие?' 'на встречу выпускников;на соревнование по легкой атлетике;на званый ужин'
ввести переменная 'Дата проведения мероприятия' 'Когда?' [$Сегодня]  
ввести меню1 'Время начала' 'Время?' '10:00;12:00;14:00;17:00;19:00'  
ввести меню1 'Место проведения мероприятия' 'Где?' 'в ресторане "Вечерний";на стадионе "Метеор";у меня дома'
присвоить Подпись 'Иван Петров'  

* Шаблон текста 
>Уважаемый [Имя и отчество приглашаемого]
>Приглашаем Вас [Название мероприятия]
>которая состоится [Дата проведения мероприятия] в [Время начала] 
>[Место проведения мероприятия]
>Приходите обязательно! 
>С уважением, 
>[Подпись] 

Шаг 6.Добавляем логику

Одним из недостатков программы, представленной на Шаге 5, является отсутствие согласования окончания слова "которая" с выбранным названием мероприятия. Для рассматирваемого примера правильными являются следующие сочетания: "встреча-которая", "соревнование-которое", "ужин-который". Чтобы это исправить, можно добавить в программу КОНЦЕПТ дополнительный код, как показано ниже.

* Запрос значений переменных 
ввести переменная 'Имя и отчество приглашаемого' 'Кого пригласить?'  
ввести меню1 'Название мероприятия' 'Какое мероприятие?' 'на встречу выпускников;на соревнование по легкой атлетике;на званый ужин'
ввести переменная 'Дата проведения мероприятия' 'Когда?' [$Сегодня]  
ввести меню1 'Время начала' 'Время?' '10:00;12:00;14:00;17:00;19:00'  
ввести меню1 'Место проведения мероприятия' 'Где?' 'в ресторане "Вечерний";на стадионе "Метеор";у меня дома'
присвоить Подпись 'Иван Петров'  

* Логическая обработка 
присвоить употребление_который который  
выбрать [Название мероприятия]  
вариант 'на встречу выпускников'  
  присвоить употребление_который которая  
вариант 'на соревнование по легкой атлетике'  
  присвоить употребление_который которое  
конецВыбора  

* Шаблон текста 
>Уважаемый [Имя и отчество приглашаемого]
>Приглашаем Вас [Название мероприятия]
>[употребление_который] состоится [Дата проведения мероприятия] в [Время начала]
>[Место проведения мероприятия]
>Приходите обязательно! 
>С уважением, 
>[Подпись] 

Даже для такого простого примера блок логической обработки может быть существенно развит. Например, можно менять обращение "Уважаемый/Уважаемая" в зависимости от того, направляется приглашение мужчине или женщине. Вставлять или не вставлять слово "Уважаемый" и менять "Вас" на "тебя" в зависимости от признака официальное/фамильярное приглашение.

Шаг 7.Формирование приглашений по списку

Для генерации приглашений по списку используется команда КОНЦЕПТ "для..следующий". Список приглашенных лиц помещается в переменную "ПРИГЛАСИТЬ". Внутри цикла используется встроенная переменная "$ОбъектЦикла", которая при каждом проходе цикла последовательно принимает значения из списка "ПРИГЛАСИТЬ".

* Запрос значений переменных 
присвоить ПРИГЛАСИТЬ 'Иван Иванович;Пер Петрович;Анна Александровна;Дмитрий Дмитриевич'
ввести меню1 'Название мероприятия' 'Какое мероприятие?' 'на встречу выпускников;на соревнование по легкой атлетике;на званый ужин'
ввести переменная 'Дата проведения мероприятия' 'Когда?' [$Сегодня]  
ввести меню1 'Время начала' 'Время?' '10:00;12:00;14:00;17:00;19:00'  
ввести меню1 'Место проведения мероприятия' 'Где?' 'в ресторане "Вечерний";на стадионе "Метеор";у меня дома'
присвоить Подпись 'Иван Петров'  

* Логическая обработка 
присвоить употребление_который который  
выбрать [Название мероприятия]  
вариант 'на встречу выпускников'  
  присвоить употребление_который которая  
вариант 'на соревнование по легкой атлетике'  
  присвоить употребление_который которое  
конецВыбора  

для [ПРИГЛАСИТЬ]  
* Шаблон текста 
>Уважаемый [$ОбъектЦикла]
>Приглашаем Вас [Название мероприятия]
>[употребление_который] состоится [Дата проведения мероприятия] в [Время начала]
>[Место проведения мероприятия]
>Приходите обязательно! 
>С уважением, 
>[Подпись] 

следующий  

Шаг 8.Форматирование текста приглашения

Для того, чтобы придать тексту приглашения более красивый вид, можно использовать возможности форматирования HTML.
Чтобы иметь возможность просматривать в HTML-браузере результат работы программы и печатать список приглашений, нужно сформировать HTML файл. По умолчанию, программа КОНЦЕПТ выводит строки в окно результата интерпретатора. Для перенаправления вывода строк в файл, нужно использовать команду "ФАЙЛ ПИСАТЬ". Для форматирования текста используются стандартные тэги HTML, о которых можно прочитать в любом справочнике или книге с описанием HTML.

Посмотреть листинг итоговой программы
Посмотреть скриншот результата