
- •1. Парадигмы императивного и декларативного программирования.
- •2. Основные задачи для функционального и логического программирования.
- •3. Основные понятия систем ии.
- •4. Понятие функционального программирования и основные положения по а.П. Ершову.
- •5. Понятие функциональности.
- •10. Свойства функционального программирования в постановке а. П. Ершова.
- •11. Структура символьного выражения в Лиспе.
- •12. Символы, атомы, константы, t, nil, списки.
- •13. Список как основная структура функционального и логического программирования.
- •14. Префиксная нотация Лиспа, вычисление арифметических выражений.
- •15. Понятие псевдофункции.
- •16. Псевдофункция статического связывания объекта.
- •21. Основные примитивы Лиспа для обработки списка.
- •22. Графическое представление списка.
- •23. Принципы работы с памятью функциональной и логической программы
- •24. Автоматические сборщики мусора
- •25. Старт-стопные сборщики мусора и сборщики мусора реального времени
- •Ключевой параметр optional, key, res.
- •33. Карринговая форма записи функций нескольких переменных.
- •48. Функция принадлежности аргумента списка, декларативное определение
- •56. Генератор в программировании, понятие вычислительного контекста
- •57. Связь дисциплины логического программирования с дисциплиной "базы данных"
- •65. Резолюция, правило резолюции как процедура вывода решений
- •66. Сопоставление в логическом программировании
- •81. Оператор присваивания в прологе
- •82. Детерминированные и недетерминированные предикаты
- •83. Отсечение, операционная модель Пролога в случае применения отсечения.
- •88. Рекурсивное логическое программирование
- •105. Металогические предикаты
- •106. Металогические предикаты для анализа структуры термы
- •107. Металогические предикаты для определения типа переменных
65. Резолюция, правило резолюции как процедура вывода решений
Метод резолюции формируется следующим образом: если выводимы дизъюнкты P \/ Q и ~P \/ R, где P - атомарная формула, а Q и R обозначают остальные части дизъюнктов (возможно пустые), то выводим и дизъюнкт Q \/ R, называемый резольвентой.
66. Сопоставление в логическом программировании
Выполнение сопоставления может производиться либо явно, в теле правила с помощью встроенного предиката X=Y, либо неявно, при сопоставлении цели с фактом или головой правила. Сопоставление реализует основные операции обработки данных в логическом программировании:
однократное присваивание,
передача параметров,
создание структурных объектов,
доступ к полям структурных объектов с возможностью одновременного чтения/записи.
67. Понятие инверсных вычислений
Уникальное чертой логического программирования является - инверсность вычислений: переменные в определении процедуры не делятся явно на входные и выходные. Переменные, определенные как входные, в определенных случаях могут быть и выходными.
68. Структура терма
Составные термы (функции) состоят из имени функции (нечислового атома) и списка аргументов (термов Пролога, то есть атомов, чисел, переменных или других составных термов), заключенных в круглые скобки и разделенных запятыми. итого(клиент(X,23,_), 71)
69. Переменная, конкретизация переменных
Переменная языка ПРОЛОГ - последовательность букв, цифр и знака "подчеркивание", обязательно начинающаяся с прописной буквы.
Конкретизация переменной - связывание переменной языка ПРОЛОГ с конкретным значением.
Конкретизация переменной обеспечивает возврат искомых значений переменных по запросам.
70. Атом
атом представляется последовательностью букв нижнего и верхнего регистра, цифр и символа подчеркивания '_', начинающейся со строчной буквы. Кроме того, любой набор допустимых символов, заключенный в апострофы, также является атомом. Наконец, комбинации специальных символов + - * = < > : & также являются атомами (следует отметить, что набор этих символов может отличаться в различных версиях Пролога).
71. Структура, функтор, компоненты
Структура. Имеет следующий вид:
функтор (компонента1, компонента2, ...)
функтор является предикатным именем и используется для обозначения предметного отношения (законченная информация о предметной сущности). Компоненты - атрибуты этого предметного отношения.
stud(petrov,173,54).
72. Факты, пример записи фактов
Если структура записана в виде константных объектов, то она называется фактом
mem(Atom,[X|Y]):-X=Atom. %-правило
или
mem(X,[X|_]). %факт, аналогичный правилу
73. Правило, пример записи правила
. Правила имеют следующий вид:
p0(x1,x2,xn):-p1(x1,x2,...),p2(),...,pn().
p0 - заголовок правила. p1..pn - подцели. Утверждение заканчивается точкой.
Пример : mem(Atom,[X|Y]):-X=Atom. %-правило
74. Процедура вывода решения, как процедура доказательства теоремы
Доказательство осуществляется методом резолюции.
Метод резолюции формируется следующим образом: если выводимые атомарные формулы (p || q) и (!p || R) то выводимы следующие формулы (Q || R), где p - заголовок атомарной формулы, Q и R - остальная часть формулы, возможно включающая комбинацию из других формул. (Q || R) - дизьюнктор (резолюция).
Процедура логического вывода, основанного на резолюция заключается в следующем: 1) к фразам, описывающих предметную область, добавляется отрицание теоремы. 2) выполняется поиск аксиомы, с которой может быть выполнена резолюция в простом линейном порядке. 3) При нахождении такой аксиомы, к применяется резолюция, и она добавляется во множество аксиом, описывающих предметную область. Эта процедура повторяется до тех пор, пока не будет получен пустой дизьюнкт.
Пустым дизьюнктом называется дизьюнкт следующего вида (p && !p)
В процессе доказательства выполняются унификации атомарных формул, при этом возможна конкретизация переменных. Унификация проходит успешно, если совпадают предикатные имена.
75. Поиск с возвратом
backtracking (поиск с возвратом)Процедура которая обеспечивает возврат в случае неудачи какой-либо из подцели (факт или другие правила), предыдущей ранней успешной подцели, и пересогласование её на новых утверждениях.
76. Сопоставление термов
Операции, которые присущи языкам Erlang, Refal, Prolog. В результате операции сопоставления может быть успех или неуспех. В случае успеха если один сопоставляемый объект является образцом, то переменные не конкретизированные получают какое-то значение.
77. Операционная модель машины вывода Пролога
Машина вывода — программа, которая выполняет логический вывод из предварительно построенной базы фактов и правил в соответствии с законами формальной логики.
Факт в данном случае — утверждение, являющееся постоянно истинным, например: «Адам является человеком».
Правило в данном случае — параметризованное утверждение, состоящее из двух частей: условия и результата,
78. Операторная нотация в прологе
Стандартная форма записи терма в прологе является запись терма в виде структуры, состоящие из функтора и компонента. Наряду с такой формой возможна и операторная нотация, при которой главный функтор структуры объявляется в виде оператора, а компоненты являются операндами. операторная нотация
79. Определение оператора и его свойства.
Cвойства операторов (позиция, приоритет, ассоциативность). Виды операторов: инфиксные, префиксные, постфиксные. :-op(приоритет, тип, функтор).
80. Пример "естественной языковой" записи программы на Прологе.
Например, факт с двумя объектами может быть описан так:
likes(tom,computer).
На естественном языке вышеприведенный факт означает: "Тому нравится компьютер".
Общая форма записи правила имеет вид:
<заголовок правила>:- <тело правила>.
Заголовок представляет собой предикат. Тело состоит из термов, которые могут быть связаны между собой "," или ";". (","- означает И,";"- означает ИЛИ).
Между телом и заголовком стоит символ ":-", который означает ЕСЛИ.