Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Логическое программирование1 / 1-3_ЛР_4КСМ_Логічне_прогр._2014-15.doc
Скачиваний:
20
Добавлен:
07.02.2016
Размер:
396.8 Кб
Скачать

Лабораторна робота 3

Тема: Синтаксис і семантика мов логічного програмування. Частина 1.

Мета: Практичне знайомство з функціональними можливостями та інструментальними засобами мов логічного програмування; практичне опановування базового синтаксису та семантики, особливостей подання та застосування основоположних структур даних логічних програм.

1 План виконання лабораторної роботи

1. Вивчити основні теоретичні відомості до лабораторної роботи.

2. Опрацювати контрольні питання.

3. Вивчити вимоги до оформлення, захисту та оцінювання лабораторних робіт (Додаток А).

4. Виконати індивідуальні контрольні завдання.

5. Скласти звіт.

6. Захистити звіт.

2 Основні теоретичні відомості

2.1. Основи логічного програмування мовою Пролог

Структура та синтаксис Пролог-програм відображають концепції логіки предикатів.

Пролог-програма складається з наступних розділів: 1) розділ опису доменів; 2) розділ бази даних; 3) розділ опису предикатів; 4) розділ опису цілі; 5) розділ опису тверджень.

Початок зазначених розділів позначають наступні ключові слова: domains, database, predicates, goal і clauses.

Призначення розділів Пролог-програми є наступним:

розділ domains містить визначення доменів, які описують різні класи об`єктів, використаних у програмі;

розділ database містить твердження бази даних, які є предикатами динамічної бази даних;

розділ predicates призначений для опису предикатів (відносин між об`єктами);

розділ goal містить формулювання цілі – призначення створюваної Пролог-програми (складовими частинами цілі можуть бути деякі підцілі, з яких формується єдина ціль програми);

розділ clauses містить факти та правила (дані, що необхідні для роботи програми).

Більшість Пролог-програм не містить усіх названих вище розділів (якщо деякі розділи не вимагаються, то вони можуть бути опущені).

Пролог забезпечує можливість включення до програми коментарів, які: можуть бути поміщені до будь-якої ділянки програми; повинні розташовуватися між спеціальними символами «/*» і «*/»; не мають обмежень за довжиною.

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

Програма "Словник" (лістинг 1) є наочним прикладом завершеної Пролог-програми, створеної з використанням тверджень і предикатів. Метою програми є пошук і друк синоніму слова brave, яким є слово daring.

Наступне твердження вказує на синонімічність слів brave і daring:

synonym(brave, daring). /* daring – синонім brave */

Термом даного предикату є synonym, а об`єктами – brave та daring.

Опис предикату для зазначеного вище твердження буде виглядати наступним чином: synonym(word,syn). Об`єктами даного предикату є word і syn.

Опис доменів об`єктів word і syn є наступним: word,syn = symbol.

Даний опис показує, що обидва об`єкти предикату synonym являють собою символічні імена.

Предикат synonym використовується у чотирьох твердженнях, у кожному з яких на першій позиції знаходиться деяке слово, а на другій – його синонім: synonym(brave,daring), synonym(honest,truthful), synonym(modern,new), synonym(rare,uncommon).

/* Лістинг 1. Програма: Словник */

/* Призначення: Демонстрація асоціацій слів */

/* за допомогою словника синонімів та антонімів */

domains

word, syn ,ant = symbol

predicates

synonym(word,syn)

antonym(word,ant)

goal

synonym(brave,X),

write("A synonym for 'brave' is "), nl,

write("'",X,"'."), nl.

clauses

synonym(brave,daring).

synonym(honest,truthful).

synonym(modern,new).

synonym(rare,uncommon).

antonym(brave,cowardly).

antonym(honest,dishonest).

antonym(modern,ancient).

antonym(rare,common).

/***** кінець програми *****/

Програма "Словник-2" (лістинг 2) є дещо ускладненою версією програми "Словник" (удосконаленим прикладом електронного словника), де: предикат synonym містить чотири об`єкти (слово та три його синоніми); додатково введено предикат antonym із такою ж кількістю об`єктів; внутрішню ціль скомпоновано з двох підцілей (видача трьох синонімів слова brave; видача трьох антонімів слова rare).

У запису цільового твердження присутнє ключове слово and, яке використовується в якості розділювача (відіграє ту ж роль, що й кома у конструкції цілі попередньої програми).

/* Лістинг 2. Програма: Словник-2 */

/* Призначення: Демонстрація асоціацій слів */

/* за допомогою розширеного словника синонімів та антонімів */

domains

word, syn1, syn2, syn3, ant1, ant2, ant3 = symbol

predicates

synonym(word,syn1,syn2,syn3)

antonym(word,ant1,ant2,ant3)

goal

synonym(brave,S1,S2,S3) and

write("The synonyms for 'brave' are ") and nl and

write(S1,",",S2,",",S3,".") and nl and

antonym(rare,A1,A2,A3) and

write("The antonyms for 'rare' are") and nl and

write(A1,",",A2,",",A3,".") and nl.

clauses

synonym(brave,daring,defiant,courages).

synonym(honest,truthful,open,sincere).

synonym(modern,new,novel,recent).

synonym(rare,uncommon,scarce,infrequent).

antonym(brave,cowardly,fearful,timid).

antonym(honest,dishonest,crooked,deceithful).

antonym(modern,ancient,old,obsolete).

antonym(rare,common,ordinary,ubiqutious).

/***** кінець програми *****/