- •Введение
- •1. Организация вычислительного процесса
- •2. Основные элементы языка
- •2.1. Имена
- •2.2. Типы данных
- •2.3. Константы и переменные
- •2.4. Программные секции Пролога
- •2.4.1. Секция Domains
- •2.4.2. Секция Ppredicates
- •2.4.3. Секция Database
- •2.4.4. Секция Clauses
- •2.4.5. Секция Goal
- •3. Примеры программ
- •3.1. Программы с фактами и простыми правилами
- •3.2. Рекурсии
- •3.3. Программирование циклов
- •3.4. Работа со списками
- •3.5. Нахождение пути на графе
- •3.6. Использование структур
- •Vife(X):–family(_,X,_). % X – жена
- •3.7. Динамическая база данных
- •It_is("хищник"),
- •Xpositive(X, y), !. % в базе данных
- •3.8. Обработка текстов
- •Verb( string ) % Глагол
- •4. Стандартные предикаты
- •4.1. Ввод/вывод
- •4.2. Управление экраном и оконная система
- •4.3. Обработка строк
- •4.4. Преобразование типов
- •4.5. Работа с базой данных
- •4.6. Управляющие предикаты
- •4.7. Прочие стандартные предикаты
- •4.8. Арифметические и логические предикаты
- •5. Использование языка Пролог для построения экспертных систем
- •5.1. Оболочка экспертной системыGeni
- •5.2. Оболочка экспертной системы pexpert
- •5.2.1. Синтаксис правил
- •5.2.2. Функции
- •5.2.3. Взгляд на работу программы
- •5.2.4. Команды верхнего уровня
- •5.2.5. Команды оценки правил
- •5.2.6. Команды, действующие во время ввода данных
- •Рекомендуемая литература
- •Приложение. Варианты лабораторных работ Лабораторная работа 1. Работа с простой базой данных
- •Лабораторная работа 2. Программа “Родственные отношения”
- •Лабораторная работа 3. Построение простой вопросно-ответной системы
- •Лабораторная работа 4. Работа со списками
- •Лабораторная работа 5. Нахождение пути на графе
- •Лабораторная работа 6. Работа с базой данных с использованием структур
- •Лабораторная работа 7. Построение экспертной системы
- •Лабораторная работа 8. Построение синтаксического анализатора
Рекомендуемая литература
1. Д. Марселлус. Программирование экспертных систем на Турбо-Прологе. – М.: Финансы и статистика, 1994.
2. И. Братко. Программирование на языке Пролог для искусственного интеллекта. – М.: Мир, 1990.
3. А. Янсон . Турбо-Пролог в сжатом изложении. М.: Мир, 1991.
4. Дж. Малпас. Реляционный язык Пролог и его применение. М.: Наука, 1990.
5. Ц. Ин, Д. Соломон. Использование Турбо-Пролога. М.: Мир, 1993.
6. Л. Стерлинг, Э.Шапиро . Искусство программирования на языке Пролог. М.:Мир, 1990.
7. Язык Пролог в пятом поколении ЭВМ: Сб.статей 1983-1986 гг.: Пер. с англ./ Сост. Н.И. Ильинский. – М.: Мир, 1990.
8. Дж. Доорс , А. Рейблейн, С. Вадера. Пролог – язык программирования будущего. – М.: Финансы и статистика, 1990.
9. К. Кларк , Ф. Маккейб. Введение в логическое программирование на микро- Прологе. – М.: Радио и связь, 1987.
10. У. Клоксин, К. Меллиш. Программирование на языке Пролог. – М.: Мир, 1987.
11. PDC Prolog version 3.30. User’s Guide. Prolog Development Center. H.J. Holst Vej 5A, DK – 2605 Broendly, Copenhagen, Denmark.
Приложение. Варианты лабораторных работ Лабораторная работа 1. Работа с простой базой данных
Меню ресторана представляет собой небольшую базу данных, которая описана следующим образом:
закуска(артишоки).
закуска(трюфели).
закуска(салат с яйцом).
мясо(жаркое).
мясо(цыпленок табака).
рыба(окунь жареный).
рыба(судак).
десерт(мороженое).
десерт(клубника со сливками).
десерт(дыня).
Вариант 1.
1. Определить, является ли закуской а) салат с яйцом; б) салат из помидор.
2. Определить те блюда Е, которые являются закусками.
3. Определить предикат второе_блюдо(Р), если Р- мясное или рыбное блюдо. Получить список вторых блюд.
4. Определить предикат обед тройкой (Е,Р,Д), где Е – закуска, Р – второе блюдо, Д – десерт. Получить список обедов.
5. Определить обеды с блюдом из рыбы.
6. Используя предикат п.5, определить обед с рыбным блюдом и дыней на десерт.
7. Для каждого блюда добавить еще один аргумент – калорийность. Определить калорийность обеда. Получить список обедов калорийности меньше заданной.
Вариант 2.
1. Определить, является ли десертом а) мороженое; б) пирожное.
2. Определить те блюда D, которые являются десертом.
3. Определить предикат второе_блюдо(Р), если Р- мясное или рыбное блюдо. Получить список вторых блюд.
4. Определить предикат обед тройкой (Е,Р,Д), где Е – закуска, Р – второе блюдо, Д – десерт. Получить список обедов.
5. Определить обеды с блюдом из мяса.
6. Используя предикат п.5, определить обед с мясным блюдом и мороженым на десерт.
7. Для каждого блюда добавить еще один аргумент – стоимость. Определить стоимость обеда. Получить список обедов стоимости меньше заданной.
Лабораторная работа 2. Программа “Родственные отношения”
1. Составить родословную своей семьи, использовав 10-12 отношений родитель. Определить предикат пол для каждого члена семьи.
2. Определить предикаты мать, отец, дядя, тетя, кузен, дед, внук.
3. Определить рекурсивный предикат предок.
4. Оттранслируйте следующие утверждения в правила на Прологе:
а) всякий, кто имеет ребенка – счастлив;
б) всякий Х, имеющий ребенка, у которого есть сестра, имеет двух детей.
5. Определить предикат найти_тетю(Х) , выдающий информацию о наличии (отсутствии) тети у личности Х. Определить предикаты о наличии прочих родственников у личности Х.
6. Определить предикат, дающий список всех родственников личности Х. Переменную Х ввести.