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

Содержание

Слайд 2

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

Язык S-FLOGOL

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

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

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

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

Отношение
Функция
Предикат
Константа

Слайд 4

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

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

Пример: быстрая сортировка

Слайд 5

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

Пример: быстрая сортировка

Слайд 6

Композиции и свертки Пример: определение натурального числа 3 Nat3= Null∙Succ∙Succ∙Succ В

Композиции и свертки

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

Nat3= Null∙Succ∙Succ∙Succ

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

В форме

композиции:

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

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

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

Слайд 7

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

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

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

[0]Nat= Null;
(∙ 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;

Слайд 8

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

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

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

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

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

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

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

text’).

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

Слайд 10

Общий вид системы

Общий вид системы

Слайд 11

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

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

Слайд 12

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

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

Слайд 13

Инструменты ввода

Инструменты ввода

Слайд 14

Ввод выбором альтернатив MODULE Common= Дом END Определение: Спец [СпИнд]ИдОтн[СпПар]=Рел Конструктор:

Ввод выбором альтернатив

MODULE Common=
Дом
END

Определение:
Спец [СпИнд]ИдОтн[СпПар]=Рел
Конструктор:
Спец [СпИнд]ИдОтн

MODULE Common=

Спец [СпИнд]ИдОтн[СпПар]=Рел
END

Вызов отношения:
ИмяОтн
График:
{Терм:Терм?Формула}

MODULE Common=
Спец [СпИнд]ИдОтн[СпПар]={Терм:Терм?Формула}
END

Текст программы:

Выбор альтернативы:

Слайд 15

Ввод идентификаторов MODULE Common= Спец [СпИнд]ИдОтн[СпПар]=Рел END Текст программы: Раскрыть: Текст

Ввод идентификаторов

MODULE Common=
Спец [СпИнд]ИдОтн[СпПар]=Рел
END

Текст программы:

Раскрыть:
Текст

Действие:

Форма ввода:

MODULE Common=
Спец

[СпИнд]Add[СпПар]=Рел
END
Слайд 16

Ввод выражений: операции ∙ * ∇ → # ∪ ∩ ~

Ввод выражений: операции


*


#


~

MODULE Common=
(0:1)[1]Nat=Рел
END

Текст программы:

Операция:

MODULE Common=
(0:1)[1]Nat=Рел∙Рел
END

MODULE Common=


(0:1)[1]Nat=Null∙Succ
END


Слайд 17

Ввод выражений: IF, Свертка. Условная конструкция IF MODULE Common= (0:1)R=Succ END

Ввод выражений: IF, Свертка.

Условная конструкция IF

MODULE Common=
(0:1)R=Succ
END

Текст программы:

Действие:

MODULE Common=


(0:1)R=IF Лог THEN Рел ELSE Succ
END

MODULE Common=
(0:1)R=(ИдСв=СпЗнач)Succ
END

Свертка

Кнопка:

Кнопка: