- •Лабораторна робота 1
- •1 План виконання лабораторної роботи
- •2 Основні теоретичні відомості
- •2 Контрольні питання
- •4 Індивідуальні контрольні завдання
- •Лабораторна робота 2
- •2.2. Інструментальне середовище розробника мови Пролог
- •2.2.1. Особливості реалізацій мови Пролог
- •2.2.2. Типові програми для опановування інструментального середовища розробника мови Пролог
- •4. Контрольні питання
- •5. Контрольні завдання
- •5.1. Загальні контрольні завдання
- •5.2. Індивідуальні контрольні завдання
- •Лабораторна робота 3
- •1 План виконання лабораторної роботи
- •2 Основні теоретичні відомості
- •2.1. Основи логічного програмування мовою Пролог
- •2.2. Використання правил у запитах до Пролог-програм
- •2.3. Розміщення предикату not у конструкціях правил Пролог-програм
- •2.4. Робота зі складеними об'єктами у Пролог-програмах
- •2.5. Методичні рекомендації до опрацьовування контрольних питань і виконання контрольних завдань лабораторної роботи
- •3. Контрольні питання
- •4. Завдання для самоперевірки
- •5. Контрольні завдання
- •5.1. Контрольне завдання 1
- •5.2. Контрольне завдання 2
- •6. Література
- •Вимоги до оформлення, захисту та оцінювання лабораторних робіт
- •Зразок оформлення титульного аркуша звіту про виконання лабораторної роботи
Лабораторна робота 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).
/***** кінець програми *****/