- •1. Теория направленных отношений.
- •1.1. Основные понятия.
- •2.2. Языки и схемы направленных отношений.
- •2. Сетевое представление направленных отношений.
- •2.1. Формальное определение сетевого представления НО.
- •2.2. Графическая интерпретация сетевого представления.
- •2.3. Вычисление НО на основе КССГ.
- •2.4. Стратегии вычисления НО.
- •3.2. Синтаксис языка и семантика S-FLOGOL.
- •4.1. Базовые средства языка.
- •4.2. Средства схемной надстройки языка S-FLOGOL.
- •4.3. Системные отношения.
- •5. Интегрированная среда разработки программ.
- •5.1. Центральный модуль.
- •5.2. Текстовый редактор.
- •5.3. Графический редактор.
- •5.4. Вычисление запроса.
- •5.5. Отладка программ.
- •Список литературы
МОСКОВСКИЙ ИНСТИТУТ РАДИОТЕХНИКИ, ЭЛЕКТРОНИКИ И АВТОМАТИКИ (ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ)
FLIDE
FLOGOL Integrated Development Environment
Система функционально-логического программирования на языке S-FLOGOL
Руководитель проекта:
д.т.н., проф. Фальк В.Н.
Разработчики:
Бебчик Ал.М. Бебчик Ан.М.
Москва, 2004 г.
Оглавление |
|
|
1. |
ТЕОРИЯ НАПРАВЛЕННЫХ ОТНОШЕНИЙ.......................................................... |
3 |
|
1.1. ОСНОВНЫЕ ПОНЯТИЯ. ................................................................................................ |
3 |
|
2.2. ЯЗЫКИ И СХЕМЫ НАПРАВЛЕННЫХ ОТНОШЕНИЙ........................................................ |
4 |
2. |
СЕТЕВОЕ ПРЕДСТАВЛЕНИЕ НАПРАВЛЕННЫХ ОТНОШЕНИЙ.................. |
6 |
|
2.1. ФОРМАЛЬНОЕ ОПРЕДЕЛЕНИЕ СЕТЕВОГО ПРЕДСТАВЛЕНИЯ НО.................................. |
6 |
|
2.2. ГРАФИЧЕСКАЯ ИНТЕРПРЕТАЦИЯ СЕТЕВОГО ПРЕДСТАВЛЕНИЯ. .................................. |
8 |
|
2.3. ВЫЧИСЛЕНИЕ НОНА ОСНОВЕ КССГ....................................................................... |
10 |
|
2.4. СТРАТЕГИИ ВЫЧИСЛЕНИЯ НО.................................................................................. |
11 |
3. |
ЯЗЫК ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ S- |
|
FLOGOL. ........................................................................................................................... |
12 |
|
|
3.1. ПРИНЦИПЫ ПОСТРОЕНИЯ. ........................................................................................ |
12 |
|
3.2. СИНТАКСИС ЯЗЫКА И СЕМАНТИКА S-FLOGOL. ..................................................... |
17 |
4. |
ОСНОВЫ ПРОГРАММИРОВАНИЯ НА ЯЗЫКЕ S-FLOGOL.......................... |
28 |
|
4.1. БАЗОВЫЕ СРЕДСТВА ЯЗЫКА...................................................................................... |
28 |
|
4.2. СРЕДСТВА СХЕМНОЙ НАДСТРОЙКИ ЯЗЫКА S-FLOGOL. ......................................... |
32 |
|
4.3. СИСТЕМНЫЕ ОТНОШЕНИЯ........................................................................................ |
36 |
5. |
ИНТЕГРИРОВАННАЯ СРЕДА РАЗРАБОТКИ ПРОГРАММ........................... |
37 |
|
5.1. ЦЕНТРАЛЬНЫЙ МОДУЛЬ. .......................................................................................... |
37 |
|
5.2. ТЕКСТОВЫЙ РЕДАКТОР. ............................................................................................ |
39 |
|
5.3. ГРАФИЧЕСКИЙ РЕДАКТОР. ........................................................................................ |
43 |
|
5.4. ВЫЧИСЛЕНИЕ ЗАПРОСА. ........................................................................................... |
49 |
|
5.5. ОТЛАДКА ПРОГРАММ................................................................................................ |
50 |
СПИСОК ЛИТЕРАТУРЫ............................................................................................... |
51 |
2
1. Теория направленных отношений.
Теория направленных отношений, разработанная Фальком В.Н., и Кутеповым В. П. [1,2], является универсальной теоретической моделью, позволяющей в естественной форме описывать и вычислять рекурсивно заданные объекты некоторой предметной области. На базе теории направленных отношений был разработан функционально-логический язык программирования высокого уровня S-FLOGOL, поддерживающий основные тенденции развития современных языков программирования и позволяющий в компактной схемной форме задавать определения конструктивных объектов в терминах направленных отношений (язык S-FLOGOL является представительным подмножеством языка FLOGOL, разработанного Фальком
В.Н. [3,4]).
1.1.Основные понятия.
Воснове теории направленных отношений лежит понятие направленного отношения (НО). Различают два вида направленных отношений – бестиповые и типизированные.
Направленным отношением типа |
(ϑ',ϑ") , |
ϑ',ϑ" T * , на носителе D |
||||
называется график соответствия из |
Dϑ' |
в |
Dϑ" . Пара (|ϑ'|,|ϑ"|) называется |
|||
арностью этого |
НО. Подкласс НО на |
D |
типа |
(ϑ',ϑ") (арности |
(n',n") ) |
|
обозначается |
RD( ϑ ',ϑ ") (соответственно, |
RD( n ',n ") ). |
Тип или арность |
НО при |
||
необходимости указываются в виде правого верхнего индекса. |
|
|||||
В случае, |
если в качестве |
D |
выбирается односортный |
носитель |
(универсум), то тип любого НО на D вполне определяется его арностью. В языке программирования FLOGOL в качестве носителя выбран односортный носитель, поэтому язык можно считать нетипизированным. Однако
вследствие того, что многосортный носитель может быть легко
промоделирован с использованием односортного носителя, введение в язык пользовательских типов данных затруднений не вызывает.
НО R−1 называется обратным для НО R , если
α β((α, β) R ≈ (β,α) R−1 ) .
3
НО могут обладать некоторыми фундаментальными свойствами, в определенном смысле не зависящими от выбора носителя. К таким свойствам относятся функциональность и тотальность.
НО R арности на D называется тотальным, если
α(α Dn' β(β Dn" & (α, β) R)).
d -Отношение R называется функциональным, если
α β ' β"((α, β ') R & (α, β") R β '= β") .
Этими свойствами могут обладать как само НО, так и для обратное ему НО (свойства функциональности и тотальности, определенные для обратного отношения, будем называть свойствами обратной функциональности и тотальности).
Свойства функциональности и тотальности играют значительную роль в
процедурах редукции, использующихся в базовой модели вычисления направленных отношений и в вычислительной подсистеме системе функционально-логического программирования на языке S-FLOGOL.
2.2.Языки и схемы направленных отношений.
Воснову построения языка S-FLOGOL положено определенное в [3] понятие языка схем НО. Для задания языка схем НО необходимо определение области интерпретации, символов элементарных констант и переменных, связок и операторов. Связки используются для обозначения результатов применения операций композиции НО на области интерпретации.
Область интерпретации задается уточнением носителя. Бинарными операциями, рассматриваемыми в теории на правленых отношений, являются: последовательная композиция, параллельная композиция,
конкатенация, условная композиция, эквализация (унификация), операции
объединения и пересечения типизированных НО.
Последовательная композиция НО R1 и R2 обозначается через R1 •R2
и определяется как произведение графиков R1 и R2 :
R1 •R2 {(α, β) | γ((α,γ) R1 & (γ, β) R2 )}.
4
Если |
R1 |
и R2 – НО арностей |
(n',n) |
и (n,n") , соответственно, то |
R1 •R2 – |
НО |
арности (n',n") . Операция |
последовательной композиции |
|
ассоциативна. |
|
|
|
|
Параллельная композиция НО R1 |
и R2 |
обозначается через R1 # R2 и |
определяется как раздельное декартово произведение компонентов графиков R1 и R2 :
R1 # R2 {(α1α2 , β1β2 ) | (α1 , β1 ) R1 & (α2 , β2 ) R2 }.
Если R1 |
и |
R2 – НО арности (n'1 ,n"1 ) |
и (n'2 ,n"2 ) , то |
R1 # R2 – НО |
||
арности |
(n'1 +n'2 ,n"1 +n"2 ) . |
Операция |
параллельной |
композиции |
||
ассоциативна. |
|
|
|
|
|
|
Объединение |
НО R1 и |
R2 обозначается через |
R1 R2 |
и |
||
определяется как теоретико-множественное объединение НО R1 и R2 |
как |
графиков. Объединение накладывает требование равенства арности НО R1
и R2 , причем результат объединения имеет ту же самую арность. Операция объединения ассоциативна и коммутативна.
Пересечение НО R1 и R2 обозначается через |
|
R1 ∩R2 |
и |
определяется как теоретико-множественное пересечение НО |
R1 |
и R2 |
как |
графиков. Пересечение накладывает требование равенства арности НО R1
и R2 , причем результат пересечения имеет ту же самую арность. Операция пересечения ассоциативна и коммутативна.
Конкатенация НО R1 и R2 определяется как декартово произведение вторых компонентов графиков при равных первых компонентах:
R1 R2 {(α, β1 β2 ) | (α, β1 ) R1 & (α, β2 ) R2 }.
Конкатенация определена для НО R1 и R2 , имеющих арности (n, n1 ) и (n,n2 ) , соответсвенно. Результат операции будет иметь арность (n,n1 +n2 ) .
Эквализация (унификация) НО R1 и R2 определяется как декартово произведение первых компонентов графиков при равных вторых
компонентах:
R1 R2 {(α1α2 , β) | (α1 , β) R1 & (α2 , β) R2 }.
5