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

Сетевое представление НО Пример: НО (сумма)

Сетевое представление НО

Пример: НО (сумма)

Слайд 6

Сетевое представление НО Пример: НО (быстрая сортировка)

Сетевое представление НО

Пример: НО

(быстрая сортировка)

Слайд 7

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

Текстовое представление НО

В текстовой форме НО задается в виде
R = {Терм1

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

Текстовое представление НО Пример: НО (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))}

Слайд 9

Текстовое представление НО … 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};

Пример: НО

Слайд 10

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

Композиция НО

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

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

Слайд 11

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

Способы определения НО

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

Nat3= Null∙Succ∙Succ∙Succ

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

В форме

композиции:

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

При помощи свертки по последовательной композиции:

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

Слайд 12

Индексированные имена НО Пример: множество натуральных чисел (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;

Слайд 13

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

Параметризованные определения НО

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

Пример:НО SuccList (инкрементация элементов списка)

Слайд 14

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

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

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

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

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

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

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

Пример

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

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

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

Слайд 17

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

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