Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекц1-3.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
259.58 Кб
Скачать

1.7 Кон’юнкція в правилах.

Додамо ще одне відношення в базу даних, унарне, що визначає стать.

male(tom).

male(bob).

male(jim).

female(liz).

female(pam).

female(pat).

female(ann).

Тепер визначимо відношення mother. Воно описується в такий спосіб:

Для всіх X Y, X -mother Y, if X- parent Y і X -female.

У такий спосіб правило буде mother(X, Y):-parent(X, Y), female(X).

Можна записати mother(X, Y):-parent(X, Y), female(X).

Або mother(X, Y):-parent(X, Y), female(X).

Кома між двома умовами означає кон’юнкцію цілей. Це означає, що дві умови повинні бути виконані одночасно.

Як система відповість на запитання?

?-mother (pam, bob).

yes

Знаходиться правило mother, виробляється підстановка

X=pam

Y=bob

Одержуємо правило mother(pam, bob):-parent(pam, bob), female(pam).

Спочатку задовольняються parent , а потім female

Пролог відповідає: yes

Питання:

?-mother (X, bob).

X=pam

1.8 Змінні в тілі правила.

Визначимо відношення sister.

Для будь-яких X і Y, X sister Y, if у X і Y є загальний батько, і X female

Запишемо правило на пролозі

sister (X, Y):- parent(Z,X), parent(Z,Y), female(X).

Тут Z-загальний батько. Z-деякий, довільний.

Можна запитати

?-sister(ann, pat).

yes

?-sister(pat, pat).

yes

Відповідь буде "yes". Тому що ми не вказали, щоб X і Y були різні.

Додамо відношення different (X, Y), що вказує, що X і Y різні.

sister (X, Y):- parent(Z,X),

parent(Z,X),

female(X),

different (X, Y).

1.9 Структура пролог-програми.

пропозиція

-

факт,

правило,

питання

clause

fact,

rule,

goal

склад

head

head

.

..

?

|

|

body

body

.

.

Лекція 2 Синтаксис Прологу. Арифметика. Співставлення.

Зміст

2.1. Синтаксис прологу

2.1.1. Константи

2.1.2. Змінні

2.1.3. Структури

2.1.4. Оператори – теж функтори

2.2. Арифметика

2.3. Операції порівняння

2.4. Співставлення

2.5. Друге значення операції = в Пролозі

2.6. Приклади співставлення структур

2.1 Синтаксис прологу.

Програма на пролозі складається з пропозицій. Пропозиції трьох видів: факти, правила, питання. Усі пропозиції будуються з термів.

Терм є синтаксичною одиницею.

2.1.1 Константи.

Константи - це пойменовані конкретні об'єкти або відносини.

Атоми - аналогічні атомам або символам у ліспі.

Атоми можуть задаватися:

- ланцюжком букв, цифр і символом підкреслення '_', починаючи з малої літери.

A

sister

x_23

- спеціальними символами *: ====>

Числа:

- цілі (діапазон -32768 – 32767)

- дійсні (діапазон 1Е-307 – 1Е+308)

2.1.2 Змінні.

Змінні служать для позначення об'єктів, значення яких міняються в ході виконання програми.

Імена змінних можуть починатися:

- або з прописної букви

- або із символу підкреслення

X

Y

Result

_result

Якщо значення змінної не цікавить, то можна використовувати анонімні змінні у вигляді символу підкреслення '_'.

Наприклад, haschild(X):-parent(X, Y).

Тут значення Y не цікавить, можна записати haschald(X):-parent(X, _).

Значення анонімної змінної не виводиться на друк. Якщо декілька анонімних змінних, то вони всі різні.

Використання анонімних змінних дозволяє не видумувати імена змінних, коли не треба.

Нехай задане відношення parents для двох батьків.

parents(ann, tom, bob).

Тоді в правилі child(X):-parents(_, _, X).

Y Z обидві анонімні змінні різні.

Область дії змінних - одна пропозиція.

Однойменні змінні в різних пропозиціях можуть мати різні значення.