Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
10
Добавлен:
05.06.2015
Размер:
44.03 Кб
Скачать

Міністерство освіти і науки, молоді та спорту України

Кіровоградський національний технічний університет

Механіко-технологічний факультет

Кафедра програмного забезпечення

Дисципліна: “Логічне програмування”

Лабораторна робота №2

на тему: “Багатомісні предикати, комутативність і асоціативність”

Виконав: ст. гр. КІ-08-2

Безкостний С.М.

Перевірив: викладач

Савеленко О.К.

Тема: Багатомісні предикати, комутативність і асоціативність.

Ціль: Розглянути структуру багатомісних предикатів та правила описання властивостей комутативності і асоціативності на мові програмування Turbo Prolog.

Завдання:

1. Задано співвідношення між прямими а, b і с по варіантам (номер варіанту визначається за формулою (N mod 12) + 1, де N – номер по журналу):

1. а║b, b║с 7. с┴а, а┴b

2. а║b, b┴с 8. с║а, а┴b

3. а┴b, b┴с 9. с║b, b║а

4. а┴b, b║с 10. с║b, b┴а

5. с┴а, а║b 11. с┴b, b┴а

6. с║а, а║b 12. с┴b, b║а

2. Зобразіть прямі на папері.

3. Складіть програму, що містить дані факти і правила, що пов’язують між собою паралельні і перпендикулярні прямі.

4. Задати питання типу:

- Чи паралельні вказані прямі?

- Чи перпендикулярні вказані прямі?

- Які прямі паралельні (перпендикулярні) вказаній прямій?

- Які прямі паралельні чи перпендикулярні вказаній прямій?

- Чи існують прямі, одночасно паралельні і перпендикулярні?

Лістинг програми:

domains

s = symbol

predicates

paralel(s, s)

perpend(s, s)

paralel_2(s, s)

it_paralel(s, s)

perpend_2(s, s)

it_perpend(s, s)

clauses

paralel(a, b).

perpend(b, c).

paralel_2(X, Y):- paralel(X, Y); paralel(Y, X).

it_paralel(X, Y):- paralel_2(X, Z), paralel_2(Z, Y); paralel_2(Y, Z), paralel_2(Z, X); paralel_2(X, Y).

perpend_2(X, Y):- perpend(X, Y); perpend(Y, X).

it_perpend(X, Y):- perpend_2(X, Z), paralel_2(Z, Y); perpend_2(Y, Z), paralel_2(Z, X); perpend_2(X, Y).

Контрольні питання:

1. Що таке багатомісні предикати? Наведіть приклади.

Це предикати, які містять в собі декілька аргументів. Наприклад при описі паралельності або при описі відношення батько – син та багато інших.

2. Чому для описання відношення асоціативності та комутативності на мові Turbo Prolog треба використовувати новий предикат?

Тому що в протилежному випадку заголовок правила уніфікувався б з однією з умов, яка, в свою чергу, уніфікувалася б з заголовком. Процес продовжувався б до тих пір, поки б не відбулося переповнення стека. Зв’язок двох відношень зручно оформити новим предикатом з тих же міркувань.

3. Якими значками на мові Turbo Prolog передаються союзи „і” та „або”?

Союз “і” на мові програмування Prolog заміняє символ “,”, союз “або” на мові програмування Prolog заміняє символ “;”.

Соседние файлы в папке СПЗ