- •Методические указания к выполнению лабораторных работ
- •Лабораторная работа «Установка и проверка работы Visual Prolog»
- •ПрОграммирование в лоГике
- •Описание окон Visual Prolog, перечень окон
- •Задание Создание проекта и настройка компилятора
- •Запуск и тестирование работы программы
- •Вопросы для самоконтроля
- •Лабораторная работа «Создание программы с использованием предложений, предикатов, доменов и целей. Создание составных целей»
- •Файлы используемые в проекте
- •Структура программы на Visual Prolog
- •Создание программы на языке Visual Prolog
- •1. В первую очередь необходимо определить факты.
- •2. Необходимо определить правила
- •3. После определения предложений необходимо сформулировать цель на языке Пролог
- •3. Далее в разделе предикатов необходимо описать пользовательские предикаты. Это можно сделать двумя способами
- •Задание Создание программы с использованием предложений, предикатов, доменов и целей
- •Организация запросов
- •Вопросы для самоконтроля
- •Лабораторная работа «Создание составных целей с конъюнкцией и дизъюнкцией»
- •Сложная цель с конъюнкцией и дизъюнкцией
- •Задание Внесение правил
- •Настроить проект как в лабораторной работе №1. * применить к каждой лабораторной работе
- •Организация запросов
- •Лабораторная работа «Использование отладчика приложения для составления целевого дерева»
- •Унификация и поиск с возвратом
- •Поиск с возвратом
- •Детальный поиск с возвратом
- •Задание
- •Создание программы
- •Использование отладчика приложения (Debugger)
- •Вопросы для самоконтроля
- •Лабораторная работа «Управление поиском решения»
- •Управление поиском решений
- •Прерывание поиска с возвратом (отсечение)
- •Использование предиката Fail
- •Предотвращение поиска с возвратом к предыдущей подцели в правиле
- •Использование предиката Not
- •Задание Создание программы поиска с предикатами !, not
- •Лабораторная работа «Организация пользовательского меню»
- •Детерминизм и отсечение
- •Использование правил для условного ветвления
- •Задание
- •Вопросы для самоконтроля
- •Лабораторная работа «Составные объекты»
- •Простые и составные объекты
- •Простые объекты данных
- •Составные объекты данных и функторы
- •Унификация составных объектов
- •Объявление составных доменов
- •Задание
- •Создание программы
- •Вопросы для самоконтроля
- •Лабораторная работа «Списки»
- •Задание
- •Вопросы для самоконтроля
- •Используемая литература
Задание Создание программы с использованием предложений, предикатов, доменов и целей
Запустить среду визуальной разработки Visual Prolog.
Создать новое окно редактирования File/New. В окне с именем Noname внести текст:
domains % раздел доменов
name, sex = symbol % домены имя и пол – символьные
age, telefon = integer% домены возраст и телефон – числовые
predicates % раздел предикатов
person (name, sex, age, telefon) % задание предиката персона с указанием
имени, пола, возраста и телефона
clauses % раздел предложений для задания пользовательских предикатов,
правил, фактов
person (frank, m, 45, 345679)
person (lina, w, 19, 123456)
person (tom, m, 23, 909090)
person (vika, w, 24, 787878)
person (dolli, w, 20, 909090)
person (dic, m, 47, 909087)
person (tom, m, 35, 906666)
goal % раздел целей (запросов)
person (Name, Sex, Age, 909090). % показать всех персон с телефоном
909090
Сохранить файл с именем lab3.
Организация запросов
Сменить цель. Создать цель с использованием переменных.
Показать всех мужчин;
Показать информацию о dolli.
Создать составную цель
person (Name, Sex, Age, 909090), Age>30 % показать всех персон с
телефоном 909090 и старше 30 лет
Показать женщин и всех персон младше 18 (невоеннообязанных).
Вопросы для самоконтроля
Перечислите файлы используемые в проекте.
Запишите структуру программы Visual Prolog.
Дайте определения:
факт;
правило;
тело правила;
заголовок правила;
переменные;
анонимные переменные.
Перечислите основные стандартные предикаты.
Перечислите как в Visual Prolog можно организовать комментарии.
Опишите алгоритм создания простой программы на Visual Prolog.
Лабораторная работа «Создание составных целей с конъюнкцией и дизъюнкцией»
Тема: Создание составных целей с конъюнкцией и дизъюнкцией.
Цель работы: изучить правила построения сложных целей с конъюнкцией и дизъюнкцией.
Сложная цель с конъюнкцией и дизъюнкцией
Трактовка целей такова: когда вы даете Прологу запрос, в действительности вы даете ему цель для выполнения. Цель, состоящая из двух и более частей, называется сложной целью, а каждая часть сложной цели называется подцелью.
Составные цели: конъюнкция и дизъюнкция
Составные цели можно использовать для поиска решения, в ко тором обе подцели А и В истинны (конъюнкция), разделяя подцели запятой. Вы так же можете искать решения в том случае, если истинна либо подцель А, либо под цель В (дизъюнкция), разделяя подцели точкой с запятой.
Пример сложной цели с конъюнкцией:
Показать все автомобили марки VAZ, стоимость которых не превышает 250000 руб.
сar (vaz, А), А<250000.
Пример сложной цели с дизъюнкцией:
Показать все автомобили марки VAZ, и все машины, стоимость которых не превышает не превышает 250000 руб.
сar (М, А), М=vaz; А<250000.
Задание Внесение правил
Запустить среду визуальной разработки Visual Prolog.
Настроить проект как в лабораторной работе №1. * применить к каждой лабораторной работе
Создать новое окно редактирования File/New. В окне с именем Noname внести текст:
predicates % раздел предикатов
likes (symbol, symbol) % предикат с двумя строковыми аргументами
clauses % раздел предложений
likes ("Ellen", tennis). % Элен любит теннис
likes (tom, football). % Том любит футбол
likes (dic, football). % Дик любит футбол
likes (dic, baseball). % Дик любит баскетбол
likes (in, tennis). % Ин любит теннис
likes (bob, A):-likes ("Ellen", A). % Боб любит то, что любит Элен
likes (bob, reading). % Боб любит читать
likes ("Ellen", reading). % Элен любит читать
likes (dolli, A):-likes (bob, A). % Долли любит то, что любит Боб
goal % раздел целей
likes (bob, tennis). % Боб любит теннис?
Запустить программу для выполнения запроса (меню Project/ Test Goal).
Сохранить файл с именем lab2.
