- •Часть 1
- •1. Введение
- •2. Теоретические основы логического программирования.
- •2.1 Основные определения логики предикатов первого порядка
- •2.2 Стандартные формы представления формул исчисления предикатов.
- •3. Синтаксис языка программирования Пролог.
- •3.1. Основные элементы языка Пролог.
- •3.2.2. Вопросы.
- •3.2. Представление клауз Хорна на языке Пролог. Факты. Правила. Вопросы.
- •3.2.1. Представление фактов в Пролог—программах.
- •3.2.3. Правила.
- •3.2.4. Подстановки и примеры утверждений.
- •3.2.5. Пример Прологпрограммы.
- •4. Семантика языка программирования Пролог.
- •4.1 Декларативная и процедурная семантика программ на языке Пролог.
- •4.2. Вычислительная модель логической программы.
- •4.2.1. Унификация термов.
- •4.2.2. Общая схема согласования целевых утверждений.
- •4.2.3 Механизм поиска с возвратом.
- •5. Рекурсивное программирование на языке Пролог.
- •5.1 Рекурсивные правила.
- •5.2 Схема поиска решений в рекурсивных программах.
- •5.3. Списки и их представление на Прологе.
- •Основные определения.
- •Унификация списков.
- •Предикат list.
- •Типовые процедуры обработки списков на языке Пролог.
- •Предикат length.
- •5.4.2. Предикат member.
- •Предикат first.
- •Предикат last.
- •Предикат next.
- •Предикат append.
- •Предикат add.
- •Предикаты revers1 и revers2.
- •Предикат delete.
- •5.4.10. Предикат number_list.
- •5.4.11. Предикат sumlist.
- •5.4.12. Предикат delrepeat.
- •5.5 Множества и их представление на языке Пролог. Простые программы обработки множеств.
- •Основные определения.
- •Предикат unionset.
- •Пересечение множеств.
- •Разность множеств.
- •Определение подмножества.
- •5.5.6. Декартово произведение множеств.
- •Прологпрограммы сортировки списков.
- •Метод прямого выбора.
- •Метод вставки.
- •5.6.3. Метод перестановок.
- •6. Стандартные предикаты языка Пролог.
- •Арифметические предикаты.
- •6.2. Предикаты сравнения арифметических выражений и символьных термов.
- •6.3. Предикаты определения типов термов.
- •6.4. Примеры программ с использованием арифметических предикатов.
- •6.5. Предикаты вводавывода термов и символов.
- •6.5.1. Ввод/вывод термов.
- •6.5.2. Ввод/вывод символов.
- •6.6. Стандартные предикаты управления логическим выводом.
- •6.7. Стандартные предикаты обработки списков.
- •6.8. Стандартные предикаты обработки строк.
- •7. Система программирования Arity Prolog 5.0.
- •Описание среды программирования Arity Prolog 5.0.
- •Методические указания по лабораторным работам.
- •7.2.1. Лабораторная работа № 1. Простейшая программа на языке Пролог.
- •7.2.2. Лабораторная работа № 2. Использование арифметических операций и унификации арифметических выражений.
- •7.2.3. Лабораторная работа 3.1. Создание базы данных “Cессия” и запросов к этой базе данных на языке Пролог с использованием стандартного предиката fail.
- •Приложение 2. Варианты заданий по лабораторной работе 4.
- •Приложение 3. Варианты заданий по лабораторной работе 5.
- •Список литературы.
Методические указания по лабораторным работам.
7.2.1. Лабораторная работа № 1. Простейшая программа на языке Пролог.
Необходимо выполнить следующие действия:
Описать с помощью фактов 4-уровневовое генеалогическое дерево в Прологпрограмме “Родственники”, включающей предикаты parent и person.
Написать правила, определяющие следующие отношения:
“X является отцом Y” .
“X является бабушкой Y” .
“X является сестрой Y” .
“X является племянником Y” .
“X является племянницей Y” .
“X является родителем родителя Y” .
“X является прадедушкой Y” .
“X является двоюродным братом Y” .
Отладить программу с помощью интерпретатора Arity Prolog.
Продемонстрировать работу программы с помощью вопросов.
Составить отчет по лабораторной работе.
7.2.2. Лабораторная работа № 2. Использование арифметических операций и унификации арифметических выражений.
Необходимо следующее задание:
написать правила определения значения функции в зависимости от условия по индивидуальному заданию (варианты приведены в приложении 1);
написать правила определения того, находится ли точка с заданными координатами в области, определенной графически по индивидуальному заданию (варианты приведены в приложении 1);
отладить программу с помощью интерпретатора Arity Prolog;
продемонстрировать работу программы с помощью вопросов;
составить отчет по лабораторной работе.
7.2.3. Лабораторная работа 3.1. Создание базы данных “Cессия” и запросов к этой базе данных на языке Пролог с использованием стандартного предиката fail.
База данных “Сессия” содержит факты, которые описывают отношения двух типов:
1) lector(<фамилия>,<дисциплина>,<номер группы>,<дата экзамена>
2) student(<фамилия>,<номер группы>,<номер зачетки>).
В работе необходимо выполнить следующие действия:
Создать с помощью фактов базу данных «Сессия», включающую предикаты lector и student.
Написать правила, обеспечивающие ответ на следующие вопросы:
А) Выдать на экран фамилии всех студентов, которые сдают экзамен определенного числа, дата задается следующим образом: ‘хх.хх.xxxx’.
Например, ’10.01.2001’.
Б) Выдать на экран фамилии всех студентов, которые сдают экзамен определенному лектору.
В) Выдать на экран названия дисциплин, по которым будет сдавать экзамен определенный студент.
Г) Выдать на экран фамилии преподавателей, которые принимают экзамены в данной группе.
Д) Выдать на экран фамилии всех студентов, которые учатся в данной группе.
Е) Выдать на экран названия дисциплин, по которым принимает экзамен данный преподаватель.
Отладить программу с помощью интерпретатора Arity Prolog.
Продемонстрировать работу программы с помощью вопросов.
Составить отчет по лабораторной работе.
7.2.4. Лабораторная работа 3.2. Использование стандартного предиката отсечения в правилах на языке Пролог.
В лабораторной работе 2 выбрать соответствующий вариант задания на вычисление y=f(x) в зависимости от условия, и переписать правила с использованием стандартного предиката отсечения «!».
7.2.5. Лабораторная работа №4. Рекурсивные программы.
Выполнить следующие действия.
Разработать рекурсивную программу на языке Пролог в соответствии с заданным вариантом.
Отладить программу с использованием системы Arity Prolog.
Продемонстрировать работу программы с помощью запросов.
Составить отчет по лабораторной работе.
Варианты лабораторных работ приведены в Приложении 2.
7.2.6. Лабораторная работа №5. Программы обработки списков.
Выполнить следующие действия.
Разработать рекурсивную программу на языке Пролог в соответствии с заданным вариантом.
Отладить программу с использованием системы Arity Prolog.
Продемонстрировать работу программы с помощью запросов.
Составить отчет по лабораторной работе.
Варианты приведены в Приложении 3.
Приложение 1. Варианты заданий по лабораторной работе 2
1.
2
.
3.
4
.
5. 6.
7
.
8.
9
.
1
0.
11.
12.
13.
1
4.
15.
1
6.
1
7.
18.
1
9.
20. 21.
2
2. 23.
24.
