- •Введение
- •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. Построение синтаксического анализатора
Лабораторная работа 6. Работа с базой данных с использованием структур
Вариант 1.
1. Построить БД "семья", взяв 3-4 предиката.
2. Определить предикат существует(Член_семьи), учитывающий всех людей в базе данных (муж, жена или ребенок).
3. Используя этот предикат, найти имена и фамилии людей, которые не работают и родились до заданного года.
4. Определить селектор доход(Человек,Д). Используя этот предикат, определить рекурсивный предикат доход_семьи(Список_людей, Сумма_доходов). Найти семьи, имеющие небольшой общий доход.
5. Найти в базе данных всех работающих детей, определив предикат дети_работают(Список_детей).
Вариант 2.
1. Построить БД "семья", взяв 3-4 предиката.
2. Определить предикат существует(Член_семьи) , учитывающий всех людей в базе данных (муж, жена или ребенок).
3. Используя этот предикат, найти пожилых людей, чей доход меньше заданного.
4. Определить селектор доход(Человек,Д). Используя этот предикат, определить рекурсивный предикат общий_доход(Список_людей, Сумма_доходов). Найти семьи, имеющие большой общий доход.
5. Найти семьи, имеющие близнецов, определив предикат близнецы(Ребенок1, Ребенок2).
Лабораторная работа 7. Построение экспертной системы
Постройте небольшую классификационную экспертную систему, выбрав одну из предложенных тем:
а) приобретение автомобиля (в зависимости от марки машины, стоимости, места сборки и т.д.);
б) выбор подарка в магазине (мужчине, женщине, возраст, стоимость и т.д.);
в) выбор книги для чтения в библиотеке;
г) где провести каникулы (зимой, летом, дом отдыха, турбаза, развлечения);
д) определитель растений, птиц, грибов и т.д.;
е) куда пойти учиться?
Лабораторная работа 8. Построение синтаксического анализатора
Напишите систему грамматического разбора предложения по группам подлежащего, сказуемого, предлога и т.д., для одного из следующих примеров:
John makes good coffee for his friends.
Starkid paints his spaceship every year.
I usually get up at seven o’clock.
First I bought new space shoes.
The sport shop is opposite the hotel.