FLIDE Система функционально-логического программирования на языке S-FLOGOL

Содержание

Слайд 2

Язык S-FLOGOL Основан на теории направленных отношений (НО) (Фальк В.Н., Кутепов

Язык S-FLOGOL

Основан на теории направленных отношений (НО)
(Фальк В.Н., Кутепов В.П.).
Имеет

развитые средства схемного описания НО.
Допускает использование:
индексированных имен НО,
параметризованных НО.
Поддерживает объектно-ориентированный стиль программирования.
Позволяет строить многомодульные программы.
Обладает средствами ограничения области видимости определяемых отношений (Private-домены).
Слайд 3

Направленные отношения Направленным отношением R арности (n,m) на носителе D называется

Направленные отношения

Направленным отношением R арности (n,m) на носителе D называется множество

упорядоченных пар кортежей элементов D длины n и m, соответственно.

НО R(n,m) может моделироваться (n+m)-арным отношением R’ на D:

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

Слайд 4

Семантические объекты Функция Предикат Константа НО общего вида

Семантические объекты

Функция
Предикат
Константа
НО общего вида

Слайд 5

Варианты определения НО Пример: определение натурального числа 3 Nat3= Null∙Succ∙Succ∙Succ В

Варианты определения НО

Пример: определение натурального числа 3

Nat3= Null∙Succ∙Succ∙Succ

В форме графика:

В форме

композиции:

Nat3= {:Succ(Succ(Succ(Null))))}

При помощи свертки:

Nat3= Null∙(∙ I=1..3)Succ

Слайд 6

Определение НО в виде графика В форме графика НО задается в

Определение НО в виде графика

В форме графика НО задается в виде
R

= { Терм1 : Терм2 ? Формула } , где
Терм1 – входной терм (образец аргументов вызова),
Терм2 – выходной терм (результат вызова),
Формула – набор ограничений вида Терм = Терм, Терм <> Терм.
Слайд 7

Композиционное определение НО Последовательная композиция Параллельная композиция

Композиционное определение НО

Последовательная композиция

Параллельная композиция

Слайд 8

Представление натуральных чисел Число 2 (сеть): (0:1)Null; (1:1)Succ; Nat2={:Succ(Succ(Null))}; Nat3={:Succ(Succ(Succ(Null)))}; Число 3 (сеть): Числа 2,3 (текст):

Представление натуральных чисел

Число 2 (сеть):

(0:1)Null;
(1:1)Succ;
Nat2={:Succ(Succ(Null))};
Nat3={:Succ(Succ(Succ(Null)))};

Число 3 (сеть):

Числа 2,3 (текст):

Слайд 9

Отношения над числами Пример: НО (0:1)Null; (1:1)Succ; (2:1)Add={Null,x:x}; (2:1)Add={Succ(x),y:Succ(@(x,y))} или (2:1)Add={Null,x:x}U{Succ(x),y:Succ(@(x,y))}

Отношения над числами

Пример: НО

(0:1)Null;
(1:1)Succ;
(2:1)Add={Null,x:x};
(2:1)Add={Succ(x),y:Succ(@(x,y))}
или
(2:1)Add={Null,x:x}U{Succ(x),y:Succ(@(x,y))}

Слайд 10

Отношения над числами Пример: НО (0:1)Null; (1:1)Succ; (2:1)Mult={Null,x:Null}; (2:1)Mult={Succ(x),y:Add(@(x,y),y)} или (2:1)Mult={Null,x:Null}U{Succ(x),y:Add(@(x,y),y)}

Отношения над числами

Пример: НО

(0:1)Null;
(1:1)Succ;
(2:1)Mult={Null,x:Null};
(2:1)Mult={Succ(x),y:Add(@(x,y),y)}
или
(2:1)Mult={Null,x:Null}U{Succ(x),y:Add(@(x,y),y)}

Слайд 11

Списки Пример: НО (0:1)Nil; (1:1)LCons; (0:1)A; (0:1)B; (0:1)C; (0:1)D; (0:1)List={:LCons(A,LCons(B,LCons(C,LCons(D,Nil)))} [A,B,C,D]

Списки

Пример: НО

(0:1)Nil;
(1:1)LCons;
(0:1)A;
(0:1)B;
(0:1)C;
(0:1)D;
(0:1)List={:LCons(A,LCons(B,LCons(C,LCons(D,Nil)))}

[A,B,C,D]

Слайд 12

Отношения над списками Пример: НО (0:1)Nil; (2:1) LCons; (2:1)Append={Nil,x:x}; (2:1)Append={LCons(x,xs),ys:LCons(x,@(xs,ys))}

Отношения над списками

Пример: НО

(0:1)Nil;
(2:1) LCons;
(2:1)Append={Nil,x:x};
(2:1)Append={LCons(x,xs),ys:LCons(x,@(xs,ys))}

Слайд 13

QuickSort= {LCons(x,xs):Append(@(ls),Append(LCons(x,Nil),@(bs))) ?Partition(xs,x)=ls,bs}; QuickSort={Nil:Nil}; Пример: НО Отношения над списками

QuickSort=
{LCons(x,xs):Append(@(ls),Append(LCons(x,Nil),@(bs)))
?Partition(xs,x)=ls,bs};
QuickSort={Nil:Nil};

Пример: НО

Отношения над списками

Слайд 14

Индексированные имена НО Пример: множество натуральных чисел (I=1..)[I]Nat= Null∙(∙ J=1..I)Succ Эквивалентное

Индексированные имена НО

Пример: множество натуральных чисел

(I=1..)[I]Nat= Null∙(∙ J=1..I)Succ

Эквивалентное множество определений:

[0]Nat= Null;
[1]Nat=

Null∙Succ;
[2]Nat= Null∙Succ∙Succ;
[3]Nat= Null∙Succ∙Succ∙Succ;

Слайд 15

Параметризованные НО Map={LCons(x,xs):LCons(«0»(x),@(xs))}; Map={Nil:Nil}; SuccList = Map[Succ] Пример:НО (инкрементация элементов списка)

Параметризованные НО

Map={LCons(x,xs):LCons(«0»(x),@(xs))};
Map={Nil:Nil};
SuccList = Map[Succ]

Пример:НО

(инкрементация элементов списка)

Слайд 16

где – сорта входных(выходных) данных, определяется в сетевой форме как: Типовые

где – сорта входных(выходных) данных,
определяется в сетевой форме как:

Типовые НО

Типовое отношение

для типа

где – отношение арности (0,1), генерирующее данные сорта t. Описание отношения R типа T будет иметь вид , где e – реляционное выражение, определяющее направленное отношение арности .

Слайд 17

Типизация НО Пример: НО

Типизация НО

Пример: НО

Слайд 18

Типизация НО Пример: типизированное НО

Типизация НО

Пример: типизированное НО

Слайд 19

Системные типы данных Натуральные числа (0,1,2,…). Списки ([ ], [A(B),[D]]). Строки

Системные типы данных

Натуральные числа (0,1,2,…).
Списки ([ ], [A(B),[D]]).
Строки (‘Some text’).

Пример записи

списка [A,B,C] в сетевой форме при помощи конструктора списка и системного генератора списков:
Слайд 20

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

Среда программирования

Проектный подход к организации работы с комплексами программ.
Оригинальные технологии графического

и структурированного текстового построения программ.
Интегрированные средства разработки и отладки.
Собственное сетевое ядро вычислений и компилятор запросов на языке S-FLOGOL.
Возможность ограниченного импорта программ, написанных на языке Пролог.
Реализация в среде C++ Builder 5.0.
Слайд 21

Общий вид интерфейса системы

Общий вид интерфейса системы

Слайд 22

Графический редактор

Графический редактор

Слайд 23

Текстовый редактор

Текстовый редактор