
- •Дисциплина математическая логика и теория алгоритмов
- •Краткие сведения из теории
- •Описание системы программирования «Пролог-д».
- •1. Интерфейс и синтаксис логического языка программирования «Пролог-д».
- •Пример построения дерева опровержения
- •П1. Арифметика в языке Пролог-д.
- •П2. Графические возможности «Пролог-д».
Пример построения дерева опровержения
Пусть дано дерево родства:
Получим Пролог-программу:
отец(Иван,Сидор).
Факты, описывающие
родственные связи.
отец(Сидор,Макар).
отец(Яков,Платон).
Правила
дядя(Х,У):-отец(З,У),брат(Х,З).
Вопросы
?дядя(У,Х).
Дерево опровержения для вопроса «Яков брат ли Сидору?»:
О(и,с),О(и,я),О(с,м),О(я,п),
{(u,z)(c,x)}
{я,y}
{я,w}
Æ ДА
Дерево опровержения для вопроса «Пётр брат ли Сидору?»:
О(и,с),О(и,я),О(с,м),О(я,п),
{(u,z)(c,x)}
{я,y}
{я,w}
Нет
Модифицированное дерево для определения братьев Сидора:
О(и,с),О(и,я),О(с,м),О(я,п),
{(u,z)(c,x)}
{я,y}
{я,w}
Б(с,я)
ПРИЛОЖЕНИЕ.
П1. Арифметика в языке Пролог-д.
В языке Пролог-Д имеются встроенные предикаты, в частности предикаты арифметики и сравнения. Их описание находится в файле помощи – кнопка или окно Помощь, Язык, Встроенные предикаты, Арифметика. Найдите, откройте и просмотрите его.
Для освоения принципов работы со встроенными арифметическими предикатами и встроенными предикатами сравнения рассмотрим следующие задачи.
Например, выражение Z = X*Y запишется на Прологе в следующем виде :
?УМНОЖЕНИЕ(X,Y,Z).
Задание П1.1. На языке Пролог-Д необходимо описать вычисление объема параллелепипеда высотой h, в основании которого прямоугольник, имеющий стороны длиной a и b.
Известна формула определения объема параллелепипеда:
Vпар=a*b*h.
Предикат, который будет выполнен, если будет вычислен объем параллелепипеда, должен иметь четыре аргумента - длины сторон a и b, высоту h и величину объема. Целесообразно, чтобы Имя предиката отражало его назначение - этому критерию удовлетворит имя объем. Данный предикат будет составным:
объем(a,b,h,V):-УМНОЖЕНИЕ(a,b,S),УМНОЖЕНИЕ(S,h,V).
К базе знаний можно задать вопросы:
?объем(10,20,5,V).
ответ системы Пролог-Д:
V=1000.
Как и прежде предикат объем обратим, это означает, что используя это описание можно вычислить не только объем по заданным сторонам и высоте, но и любую (одну) сторону или высоту по заданным высоте, стороне и объему.
Задайте вопрос: ?объем(а,20,5,1000). Ответ : а = 10.
Задание П1.2: Если необходимо вычислить число x=2*3+1, то для этого достаточно набрать на клавиатуре вопрос:
?УМНОЖЕНИЕ(2,3,1,x). (<Enter>)
ответ системы:
x=7
Реализация деления x=z/y.
ДЕЛЕНИЕ(z,y,x):-УМНОЖЕНИЕ(x,y,z).
Реализация вычитания x=y-z.
ВЫЧИТАНИЕ(y,z,x):-СЛОЖЕНИЕ(x,z,y).
В данных случаях во встроенных предикатах переменные как бы перевернуты на оборот.
П2. Графические возможности «Пролог-д».
Они предназначены для выполнения вывода графики и других подобных операций. Встроенные предикаты, если они записаны в вопросе, должны выполняться одинаково, независимо от того, записана в память машины база знаний или нет, и какая это база знаний. В определенном смысле это напоминает непосредственный режим работы в языке БЕЙСИК. Например, если необходимо построить на экране отрезок, соединяющий две точки с координатами (10,10) и (200, 200), то достаточно задать вопрос:
?ЗАПИСЬ_В(“grp:”),ЛИНИЯ(10,10,100,100,1).<Enter>
Графические возможности «Пролог-Д» более подробно описаны в файле помощи – кнопка или окно Помощь, Язык, Встроенные предикаты, Графика .
ЗаданиеП2.1: введите вышеуказанное выражение и запустите его. Требуемый отрезок появится на экране. Дополнительно ниже начертите три параллельных линии разного цвета, а также нарисуйте крест (две пересеченные линии разного цвета).
Примечание: используйте файл помощи – кнопка или окно Помощь, Язык, Встроенные предикаты, Графика .
Упражнение: Попробуйте набрать вопрос:
?ЛИНИЯ(x, 10, 100, 100, 1). (<Enter>).
Объясните результат и запишите исходный текст (задание) упражнения.
Результат представить преподавателю.