
- •Дисциплина математическая логика и теория алгоритмов
- •Краткие сведения из теории
- •Описание системы программирования «Пролог-д».
- •1. Интерфейс и синтаксис логического языка программирования «Пролог-д».
- •Пример построения дерева опровержения
- •П1. Арифметика в языке Пролог-д.
- •П2. Графические возможности «Пролог-д».
1. Интерфейс и синтаксис логического языка программирования «Пролог-д».
Интерфейс логического языка программирования «Пролог-Д» аналогичен интерфейсу и приемам работы в операционной системе WINDOWS.
Для начала работы
с «Пролог-Д»
необходимо зайти в папку под названием
«Пролог-Д»,
расположение которой укажет преподаватель.
Затем выбрать
ярлык Пролога-Д
или
с помощью программ просмотра диска
найти файл с программой prologw.exe
и
двойным нажатием левой клавиши мыши
инициировать его исполнение. На экране
появится заставка системы Пролог-Д
Windows
(рисунок
1).
Рисунок 1 Экран системы Пролог-Д в MS Windows.
Изображенный на рисунке 1.. интерфейс является стандартным для систем, работающих в среде Windows. Управлять системой можно с помощью манипулятора мышь, или с помощью специальной клавиатуры Windows.
Падающее меню Файлы.
Система позволяет работать одновременно с нескольким файлами аналогично работе в ОС WINDOWS.
Элемент меню Исполнение.
Содержит элементы Исполнить, Прервать и Настройки. На рисунке 2 показана панель настроек.
Рисунок 2. Панель настроек режимов исполнения Пролог-программы.
Отмечая или снимая отметки в соответствующих квадратиках панели настроек можно включить и выключить трассировку, вывод вопроса, поручить системе сохранять текст программы при каждом отладочном запуске, а также выбрать, куда направлять вывод в ходе исполнения программы. Мы не будем пока заниматься настройкой исполнения.
Элемент меню Окна.
При выборе этого элемента появляется падающее меню. Выбор элементов меню Каскад, Мозаика, Упорядочить и Свернуть все определяет взаимное расположение окон на экране.
Элемент меню Помощь
При выборе данного элемента меню пользователю предоставляется возможность выбор различных видов помощи, указываемых в падающем меню: помощь о программе и помощь по разделам. Все виды помощи построены по гипертекстовому принципу с использование стандартной подсистемы организации помощи MS Windows(рисунок 3).
Рисунок 3. Подсистема помощи
Синтаксис языка
«Пролог-Д» подробно описан в файле
помощи - кнопка
или окно Помощь,
Язык,
Синтаксис.
Откройте
его и просмотрите.
База знаний.
Синтаксис: БазаЗнаний ::= {Предложение}*
Предложение::= Факт ¦ Правило ¦ Комментарий
Комментарий::= "{СимволASCII}*"
База знаний на Прологе-Д состоит из множества фактов и правил.
Факты.
Синтаксис:
Факт ::= Предикат.
Предикат ::= Имя(Аргумент{,Аргумент}*) ¦ Имя
Имя ::= БукваСимвол{Символ}* Константа::= Целое ¦ Словосочетание
В данной версии Пролога-Д длина имени предикатного символа не ограничена. Аргументом может быть любой терм. Аргументов может и не быть. Факты описывают объекты и отношения между ними. Декларативно Факт P означает, что P безусловно истинно. Процедурно означает, что факт P всегда выполнен.
Правила.
Синтаксис: Правило::= Предикат:-Цель{,Цель}*.
Цель ::= Предикат ¦ !
Правило описывает отношения между объектами. Предикат, стоящий слева от знака импликации :- называется головой, а предикаты, стоящие справа - целями или посылками. Правило может иметь любое число целей. (Правило без целей - это факт). Декларативно правило P0:-P1,..,Pn. читается так: P0 истинный, если P1, .. , Pn истинны. Процедурно это значит, что для удовлетворения P0 необходимо последовательно удовлетворить P1, .. , Pn.
Вопрос.
Синтаксис: Вопрос::= ?Цель{,Цель}*. Процедурно вопрос означает исполнение программы на Прологе-Д.
Примечания:
При описании фактов и правил вместо символа “; - точка с запятой“ допускается использование символа “. - точка“.
При описании правил вместо сочетания символов “<-“ допускается использование сочетания символов “:-“.
Будем заканчивать правила и факты точкой, а в качестве знака импликации использовать символ:-
Задание №1.Программа «Родство»
Пусть дано дерево родства:
Записать и инициировать выполнение программы «Родство», построить в тетради модифицированное дерево опровержения.
отец(Иван,Сидор).
отец(Иван,Яков).
отец(Сидор,Макар).
отец(Яков,Платон).
брат(Х,У):-отец(З,Х),отец(З,У),НЕ(РАВНО(Х,У)).
дядя(Х,У):-отец(З,У),брат(Х,З).
?брат(Сидор,Х).
?дядя(У,Х).
Задание №2.Программа «Автомобили»
Записать и инициировать выполнение программы «Автомобили», построить в тетради модифицированное дерево опровержения.
автомобиль( Сузуки, Япония).
автомобиль (Адмирал, Китай).
автомобиль (Жигули, Россия).
автомобиль (Нива, Россия).
автомобиль (Мерседес, Германия).
автомобиль (Ауди, Германия).
российский(х):-автомобиль(х,Россия).
иномарка(з):-автомобиль(з,Япония).
иномарка(з):-автомобиль(з,Германия).
иномарка(з):-автомобиль(з,Китай).
?российский(у).
Задание №3.Программа «Сократ»
Записать и инициировать выполнение программы «Родство», построить в тетради модифицированное дерево опровержения.
человек(сократ).
смертен(х):-человек(х).
?смертен(х).
Задание№4: Самостоятельное создание базы знаний «Мужские древо»
Создать на языке Пролог-Д базу знаний, описывающую мужское древо некоторой семьи. Составьте запросы к базе знаний, позволяющие выявить:
Сына, задав имя отца;
Всех братьев;
Всех внуков и дедов;
Всех племянников и дядей.
Племянников, задав имя дяди.
Дополнительное задание 5: Разберите программу определения наименьшего общего делителя (алгоритм Эвклида).
НОД(х,х,х).
НОД(х,у,ж):-ВЫЧИТАНИЕ(х,у,р),БОЛЬШЕ(х,у),НОД(р,у,ж).
НОД(х,у,ж):-ВЫЧИТАНИЕ(у,х,л),БОЛЬШЕ(у,х),НОД(х,л,ж).
ВЫЧИТАНИЕ(х,у,р):-СЛОЖЕНИЕ(р,у,х).
ВЫЧИТАНИЕ(у,х,л):-СЛОЖЕНИЕ(х,л,у).
?НОД(3,6,ж).