- •Введение
- •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. Построение синтаксического анализатора
Лабораторная работа 3. Построение простой вопросно-ответной системы
Вариант 1.Задача выбора должности для посетителя, желающего работать в фирме.
Если у посетителя нет диплома, то посетителю отказать в приеме на работу.
Если у посетителя есть диплом, то он, возможно, будет принят на работу.
Если посетитель имеет диплом и он сделал важное открытие, то предложить посетителю должность научного сотрудника.
Если средний балл за время учебы >=3.5, то предложить посетителю должность инженера-конструктора.
Если средний балл <3.5 и посетитель работал по специальности >2 лет, то предложить посетителю должность инженера по эксплуатации.
Если средний балл <3.5 лет и стаж работы <2 лет, то посетителю отказать.
Вариант 2.Что делать, если Вы заболели?
Если у Вас грипп и Вы находитесь в уязвимом возрасте, то вызовите врача.
Если у Вас острый фарингит, то вызовите врача.
Если у Вас простуда, то примите аспирин и ложитесь в постель.
Если у Вас грипп и вы не находитесь в уязвимом возрасте, то примите анальгин и ложитесь в постель.
Если у Вас лихорадка и болят мышцы, то это грипп.
Если у Вас насморк, мышечные боли и нет лихорадки, то это простуда.
Если у Вас в горле нарывы и есть лихорадка, то это острый фарингит.
Если Вам меньше 8 или больше 60 лет, то Вы находитесь в уязвимом возрасте.
Лабораторная работа 4. Работа со списками
Вариант 1.Сведения об успеваемости учеников представлены информационными единицами вида:
оценка(фамилия, предмет , список_оценок).
1.Определить предикат не_успевает ученик X по предмету P , если у него есть двойка по этому предмету.
2. Определить предикат двоечник, если ученик не успевает по какому-либо предмету.
3. Определить предикат отлично для ученика X по предмету P, если средний балл по этому предмету близок к 5.
4. С использование предикатов п.3 определить предикаты физик и лирик, если ученик имеет отлично по физике и литературе соответственно.
Вариант 2. В спортивных соревнованиях результат спортсмена оценивается информационной единицей вида:
оценка(фамилия, список_оценок).
Чтобы выставить оценку спортсмену, надо из списка оценок удалить одну минимальную, одну максимальную, а для оставшихся оценок найти среднюю арифметическую.
1. Записать предикат вычисления оценки _спортсмена.
2. Определить предикат мастер, если средняя оценка спортсмена больше 5.5.
3 Определить предикат аутсайдер, если среди оценок есть минимальная (минимальную оценку ввести).
Лабораторная работа 5. Нахождение пути на графе
Вариант 1.Дана следующая база данных, содержащая названия городов и расстояния между ними :
road(tampa, houston, 200).
road(gordon, tampa, 300).
road(houston, gordon, 100).
road(houston, kansas_city, 120).
road(gordon, kansas_city, 130).
road(sedoma,tampa,500).
1. Через предикат road, задающий расстояние между городами Town1 и Town2, определить предикат, задающий расстояние между городами Town2 и Town1.
2. Используя предикат п.1, определить рекурсивный предикат route, вычисляющий расстояние между двумя городами.
3. Определить рекурсивный предикат way, определяющий путь из одного города в другой. Проследить этот путь.
4. Найти путь, проходящий через заданный город.
Вариант 2. Лабиринт представляет собой систему комнат, соединенных между собой переходами. В лабиринте имеется вход и выход, а также комната с золотым кладом. Кроме того, имеются комнаты, запрещенные для посещений: комната монстров, комната разбойников.
1. Найти путь в лабиринте от входа до выхода, не посещая дважды одной и той же комнаты.
2. Найти путь с посещением золотой комнаты.
3. Найти путь, избегающий запрещенных к посещению комнат.
4. Подсчитать количество пройденных комнат.