Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Часть 5. S-FLOGOL-система функционально-логического программирования

.pdf
Скачиваний:
18
Добавлен:
28.06.2014
Размер:
721.37 Кб
Скачать

5. S-FLOGOL-СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ

объектов и редактирование автоматически созданной корректной пустой сети нужного сорта с помощью специальных инструментов. Основой гра-

фического построения сетей правил грамматики являются добавление в сеть элементов, обозначающих отношения, и последующее слияние точек,

соответствующих связанным входам или выходам элементов. Заметим, что при добавлении нового элемента в сеть, одновременно с ним добавляются и все точки, связанные с его входами и выходами. В распоряжение пользо-

вателя также предоставлены вспомогательные инструменты, облегчающие процесс графического построения правил грамматики, такие как коорди-

натная сетка, скроллинг и масштабирование. Для комфортного отображе-

ния сетей применены специальные методы формирования изображения и его прорисовки [8], что позволило обеспечить плавное перемещение объ-

ектов при любом масштабе изображения. Большинство команд редактора доступно как через основное меню программы, так и через панель инстру-

ментов и контекстное меню, что позволяет пользователю работать при-

вычным для него образом.

В связи с тем, что вычисление направленных отношений, заданных сетевой грамматикой, производится сетевым ядром вычислений, а резуль-

Рис.5.5.. Окно графического редактора

FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 21

5. S-FLOGOL-СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ

таты вычисления в некоторых режимах представляются в сетевой форме, в

графический редактор внесены и интерфейсные элементы управления процессом вычислений. На рис. 5.5 показан пример интерфейсного окна пользователя при работе с графическим редактором.

Для решения задачи автоматического построения изображения сети по ее внутреннему сетевому представлению в графическом редакторе реа-

лизована подсистема автоматического формирования графического изоб-

ражения сети. Формирование изображения происходит в три этапа:

начальная расстановка, основная силовая расстановка и постобработка по-

лученного изображения. На этапе начальной расстановки элементы сети получают геометрические размеры и положение, позволяющие использо-

вать последующий силовой метод расстановки, причем положение вход-

ных и выходных элементов сети приближено к левой и, соответственно, к

правой границам изображения. Основной этап расстановки основан на мо-

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

ров объектов. При расчете сил отталкивания не учитывается взаимное вли-

яние объектов, расположенных далеко друг от друга. На этом этапе разме-

щения используется метод оболочек, позволяющий либо рассчитывать си-

лы с учетом геометрических размеров объектов, либо рассматривать объ-

екты как геометрические точки, либо вообще не рассчитывать их взаимо-

действие. Силы притяжения имеют линейную зависимость от расстояния между объектами, а зависимость сил отталкивания определена специаль-

ным распределением, гарантирующим максимальное сопротивление на границе внутренней оболочки объекта и минимальное на границе внешней оболочки. Для сглаживания скачкообразного движения объектов исполь-

FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 22

5. S-FLOGOL-СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ

зуется моделирование вязкости окружающей среды по квадратичному за-

кону.

FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 23

5. S-FLOGOL-СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ

ЛИТЕРАТУРА

1.Кутепов В.П., Фальк В.Н. Направленные отношения: теория и приложения // Изв. РАН. Техническая кибернетика, 1994. №4,5.

2.Фальк В.Н. FLOGOL – входной язык системы функциональнологического программирования // Сб. науч. статей к НТК МИРЭА (ТУ).1998.

3.Фальк В.Н. Теория направленных отношений и ее приложения // Автореф. дисс. … докт. техн. наук. -М: МЭИ. -2001.-40 с.

4.Бебчик Ал.М., Бебчик Ан.М., Фальк В.Н. Система функциональнологического программирования S-FLOGOL // Труды IX-ой национальной конференции по искусственному интеллекту с международным участием КИИ-2004. Том.1. М.:Физматлит, 2004. –С. 210–217.

5.Бебчик Ал.М., Бебчик Ан.М., Фальк В.Н. Инструментальные средства разработки и отладки программ системы функционально-логического программирования S-FLOGOL // Труды IX-ой национальной конференции по искусственному интеллекту с международным участием КИИ2004. Том.1. М.:Физматлит, 2004. –С. 896–901.

6.Бебчик Ал.М. Контекстно-зависимый структурный редактор выражений системы функционально-логического программирования высокого уровня. // Международный форум информатизации – 2002: Доклады международной конференции "Информационные средства и технологии". 14-16 октября 2003г., т.3. – М.:Янус-К, 2003.

7.Бебчик Ал.М. Алгоритм автоматического структурирования текста программ языка программирования S-FLOGOL. // Микроэлектроника и информатика – 2004. 11-я Всероссийская межвузовская научнотехническая конференция студентов и аспирантов: Тезисы докладов. – М.:МИЭТ, 2004.

8.Бебчик Ан.М. Проблемы реализации ядра графического редактора системы программирования на языке S-FLOGOL. // Микроэлектроника и информатика – 2004. 11-я Всероссийская межвузовская научнотехническая конференция студентов и аспирантов: Тезисы докладов. – М.:МИЭТ, 2004.

9.Бебчик Ан.М. Технология графического построения функциональнологических программ на языке S-FLOGOL // «Информационные технологии в науке, образовании и производстве» (ИТНОП). Материалы международной научно-технической конференции. 11-12 мая 2004г., – Орел: ОрелГТУ, 2004, т.5.

FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 24

5. S-FLOGOL-СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ

ПРИЛОЖЕНИЕ

Технология текстового построения программ на языке функ- ционально-логического программирования высокого уровня

S-FLOGOL

Бебчик Ал. М.

Язык S-FLOGOL принадлежит к языкам декларативной парадигмы программирования. В отличие от языков императивной парадигмы, к кото-

рым относятся такие языки, как C и Pascal, программа в языках деклара-

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

ния. Напротив, программы, написанные на языках декларативного типа,

имеют достаточно компактную форму, что позволяет использовать новые нетрадиционные технологии их построения.

Рассмотрим кратко основные технологии ввода программ, применя-

ющиеся в современных средах программирования. Базовым методом по-

строения программ в традиционных технологиях является ручной ввод текста программы в поле ввода. Для современных сред программирования характерно также использование контекстной подсказки в виде всплыва-

ющей строки, содержащей краткие сведения о тех элементах программы,

которые должны или могут быть введены в текущей позиции курсора. Так,

например, при вызове функции в подобной строке размещаются сведения о спецификации параметров вызова. В случае если, исходя из контекста,

FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 25

5. S-FLOGOL-СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ

имеется возможность определить несколько вариантов продолжения про-

граммы, то список таких вариантов появляется во встраиваемом в поле ввода специальном окне и программисту предлагается выбрать один из данных вариантов. Однако программист вправе отказаться от выбора вари-

анта из списка и продолжить ввод программы по своему усмотрению. Из вспомогательных средств также следует отметить выделение группирую-

щих парных скобок при установке курсора на символ скобки, а также вы-

деление ключевых слов языка. Фактически, основой подобных технологий ввода является простой текстовый редактор с контекстной подсказкой.

Средства выбора варианта продолжения описания программы из списка определены лишь для ограниченного набора случаев и носят необязатель-

ный характер.

Следует отметить, что на данный момент не существует существен-

ных различий в средствах ввода программ императивной и декларативной парадигм программирования, хотя в большинстве случаев среда разработ-

ки и отладки программ для языков декларативного типа вообще ограничи-

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

вило, производится по запросу программиста или непосредственно перед компиляцией программы, однако встроенных средств, предупреждающих ввод синтаксически некорректных конструкций, в подобных технологиях не предусмотрено.

Достоинством применения традиционных технологий ввода про-

грамм является относительная простота реализации текстового редактора и удобство работы с большими текстами. К недостаткам следует отнести возможность ввода некорректных с точки зрения синтаксиса языка про-

грамм и необходимость ручного ввода элементов, входящих в синтаксиче-

ски определенное множество ключевых слов и конструкций языка. Не-

FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 26

5. S-FLOGOL-СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ

смотря на указанные недостатки, традиционные технологии ввода доста-

точно просты, удобны и универсальны, благодаря чему они и получили широкое признание в сфере разработки программных средств. Однако специфические особенности программ языков функционально-логического программирования позволяют нам разработать новую оригинальную тех-

нологию ввода программ, учитывающих эту специфику.

П.1. Специализированная технология ввода функциональнологических программ.

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

В данной технологии было решено отказаться от предоставления программисту возможности ручного ввода основных синтаксических бло-

ков, за исключением идентификаторов и числовых констант. Построение программы в общем случае производится простым выбором варианта про-

должения описания текущего элемента программы, на котором установлен курсор. Этому действию соответствует выбор определенного грамматиче-

ского правила, левая часть которого ассоциирована с текущим элементом.

После того, как такой выбор сделан, на место курсора вставляется новая последовательность элементов, представляющих собой правую часть вы-

бранного правила грамматики для текущего раскрываемого элемента. Та-

ким образом, на каждом шаге построения текст программы содержит син-

таксически корректную последовательность элементов.

Состояние нетерминальных элементов программы, представляющих собой левые части соответствующих правил грамматики, может быть либо не определено, либо определено частично, либо определено полностью.

Элемент считается неопределенным, если ему еще не было сопоставлено

FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 27

5. S-FLOGOL-СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ

какое-либо из правил грамматики. В случае если после применения оче-

редного правила все элементы правой части правила являются терминаль-

ными, то есть представляющими собой зарезервированные ключевые сло-

ва и не входящие во множество левых частей правил грамматики, то такой элемент считается определенным полностью. Частично определенным считается элемент, определение которого не завершено полностью. По-

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

П.2. Альтернативно-списковая грамматика.

Для обеспечения возможности такого поэтапного построения, грам-

матики языка должна быть преобразована в так называемую альтернатив-

но-списковую форму. Данная форма грамматики подразумевает разделе-

ние грамматической схемы на непересекающиеся цепочки элементов, ис-

ключающие циклическое повторение своих элементов. Вместо цикличе-

ских конструкций используются списки. Таким образом, каждая грамма-

тическая схема, определяющая нетерминальный элемент программы, раз-

бивается на множество так называемых альтернативных именованных вет-

вей, соответствующих отдельным правилам грамматики и содержащих данные цепочки элементов. Пример схемы, содержащей альтернативные ветви, приведен на рис.1.

FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 28

5. S-FLOGOL-СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ

Первичное арифметическое выражение

Натуральное число

НатЧис

Вызов функции

ИдФункции ( Параметры )

Кол. выходов

Кол. входов

ИмяОтн

>

>

ИмяОтн

Рис.1. Альтернативные ветви

Согласно приведенному примеру, элемент, имеющий арифметиче-

ский тип выражения, может быть раскрыт либо как натуральное число, ли-

бо как вызов арифметической функции, либо как значение входной или выходной арности отношения.

Как и другие языки программирования, язык S-FLOGOL имеет так называемые опциональные элементы, которые могут быть опущены при построении программы. В традиционных технологиях ручного ввода про-

граммы это не создает каких-либо сложностей для программиста, так как он может просто не водить данный элемент, либо удалить его далее, в про-

цессе редактирования программы. В рассматриваемой технологии подоб-

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

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

следующего просмотра и восстановления. Естественно, что в одной опции могут участвовать сразу несколько элементов, что приводит к необходи-

мости задания так называемых опциональных ветвей. В случае если эле-

мент входит в опциональную ветвь, механизм управления опциями приме-

няется сразу ко всем элементам данной ветви. Заметим, что каждая схема может иметь множество опциональных ветвей, однако ни один из элемен-

FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 29

5. S-FLOGOL-СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ

тов одной опциональной ветви не должен входить в другую опциональную ветвь схемы. Другим ограничением является локализация опциональной ветви внутри соответствующей альтернативной ветви, то есть все элемен-

ты опциональной ветви должны входить в одну и ту же альтернативную ветвь схемы. Пример схемы, содержащей опциональные ветви, приведен на рис. 2.

Вызов отношения

~

ИмяОтн

(

Рис.2. Опциональные ветви

 

Терм

)

Теперь перейдем к рассмотрению списков. Исключив из технологии построения программ циклические замыкания и сведя построение про-

граммы к простому последовательному выбору альтернатив, мы неизбеж-

но сталкиваемся с проблемой построения повторяющихся элементов про-

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

мать последовательность однотипных элементов программы, разделенных специальным разделителем. Таким разделителем может служить терми-

нальный символ, например запятая или точка с запятой. Однако суще-

ствуют и более сложные разделители, представляющие собой нетерми-

нальные элементы. Такие элементы после введения их в программу, долж-

ны быть определены обычным для рассматриваемой технологии образом.

Заметим, что список не может быть пустым, то есть в нем всегда находится хотя бы один элемент. В случае, когда необходимо обеспечить возмож-

ность удаления всего списка элементов, применяется описанный выше ме-

ханизм опций. При заключении в опциональную ветвь элемента, представ-

ляющего собой список, все элементы данного списка принадлежат этой опциональной ветви и при выполнении операции скрытия опции полно-

стью устраняются из текста программы.

FLOGOL: ЯЗЫК И СИСТЕМА ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ 30