Т е м а: Структури як складені об’єкти даних. Співставність термів
ЛАБОРАТОРНІ РОБОТИ
З курсу
“Логічне програмування”
З а в д а н н я
Та вказівки для їх виконання
Завдання підготував: Василенко Я.П.
Тернопіль – 2010
Лабораторна робота № 1 (2 год)
Т е м а: Знайомство з системою Turbo–Prolog. Виконання готових програм.
М е т а: Ознайомитися з основними прийомами роботи в системі Turbo–Prolog, навчитися формувати запити для готових програм.
З а в д а н н я: 1. В системі Turbo–Prolog ознайомитися із командами верхнього меню та “гарячими” клавішами для завантаження текстів програм у вікно редактора, запису програм у файли на диски, відкриття вікна редактора для набору нової програми, командами редагування, компіляції, виконання програм тощо. Для пробного виконання вказаних команд скористайтесь прикладами програм, які містяться в каталозі D:\PROLOG\EXAMPLE.
2. Користуючись вказаними нижче програмами, отримати відповіді на наступні питання:
Exampl01:
– Якими видами діяльності займаються tom та bill?
– Хто грає в теніс?
– Чи є особи, які грають у футбол?
– Чи є такий вид діяльності, яким би займався eric?
– Для кожної особи вказати, якими видами діяльності вона займається?
Exampl02:
– Для кожної моделі машин вказати її характеристики: потужність, вік, колір та ціну?
– Визначити, чи є машини з потужністю не меншою за 90000 та ціною не більшою за 30000?
– Які машини мають червоний колір?
Exampl05:
– Визначити батьків alana?
– Знайти дітей для boba?
– Хто є братом для для fay?
– Хто із осіб, інформація про яких занесена в базу фактів, має дядька?
– Хто є дідусем для marilyn?
Exampl06:
Проаналізуйте програму і побудуйте запити самостійно.
Exampl07:
Розділ запитів включений в текст цієї програми. В режимі діалогу визначте телефони людей, які Вас цікавлять.
Exampl08:
Визначте, чи задані символи є літерами.
Exampl10:
Знайти факторіал чисел 5 і 7.
Exampl18:
Придумайте і розв’яжіть квадратні рівняння, які мають 2 корені, 1 корінь та не мають розв’язків.
В к а з і в к и до виконання завдань: Для кожної із програм проаналізуйте структуру програми, опис типів об’єктів та опис предикатів, для розділі clauses виясніть, які із тверджень задають факти, а які правила. Зверніть увагу на те, чи серед правил програми є рекурсивні правила.
К о н т р о л ь н і п и т а н н я:
1. Яка структура prolog–програми?
2. Що таке предикат?
3. Які типи об’єктів використовують в мові Prolog?
4. Яка існує різниця між об’єктами Базисного Прологу та Turbo–Prolog’у?
5. Що розуміють під поняттям атома? Які синтаксичні форми запису він має?
6. В якій формі будуються запити?
7. Що таке анонімна змінна?
Лабораторна робота № 2 (2 год)
Т е м а: Структури як складені об’єкти даних. Співставність термів.
М е т а: Оволодіти способами опису та використання структур в Пролог–програмах. Засвоїти правила співставності термів.
З а в д а н н я: 1. Завантажити програми Exampl13 та Exampl17 із каталога D:\PROLOG\EXAMPLE. Проаналізувати їх та виконати. Запити придумати самостійно.
2. Описати структуру для подання інформації про трикутники на площині. Написати процедури для перевірки того, чи заданий трикутник є правильним, рівнобедреним, прямокутним?
3. Перевірити, чи заданий відрізок лежить на вертикальній прямій x=7. Передбачити подання відрізків за допомогою структур.
4. Нехай прямокутник задається за допомогою структури rectangle(P1,P2,P3,P4), де P1,P2,P3,P4 — вершини прямокутника, вказані в порядку їх обходу за годинниковою стрілкою. Вершини подаються за допомогою структур point(X,Y). Описати відношення regular(R), яке має місце, якщо R — прямокутник із вертикальними та горизонтальними сторонами.
К о н т р о л ь н і п и т а н н я:
1. Як формуються структури в мові Пролог? Навести приклади.
2. Які правила сумісності термів діють в мові Пролог?
3. Як потрібно описувати структури в мові Turbo–Prolog?
Лабораторна робота № 3 (6 год)