МегаПредмет

ПОЗНАВАТЕЛЬНОЕ

Оси и плоскости тела человека Оси и плоскости тела человека - Тело человека состоит из определенных топографических частей и участков, в которых расположены органы, мышцы, сосуды, нервы и т.д.


Отёска стен и прирубка косяков Отёска стен и прирубка косяков - Когда на доме не достаёт окон и дверей, красивое высокое крыльцо ещё только в воображении, приходится подниматься с улицы в дом по трапу.


Дифференциальные уравнения второго порядка (модель рынка с прогнозируемыми ценами) Дифференциальные уравнения второго порядка (модель рынка с прогнозируемыми ценами) - В простых моделях рынка спрос и предложение обычно полагают зависящими только от текущей цены на товар.

Т е м а: Лінійні списки. Операції над лінійними списками

ЛАБОРАТОРНІ РОБОТИ

З курсу

“Логічне програмування”

 

З а в д а н н я

Та вказівки для їх виконання

 

Завдання підготував: Василенко Я.П.

 

 

Тернопіль – 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 год)

Т е м а: Лінійні списки. Операції над лінійними списками

М е т а: Навчитися описувати , формувати лінійні списки та виконувати над ними типові операції

З а в д а н н я та в п р а в и:

1. Розгляньте та проаналізуйте роботу готових Пролог–програм Exampl11, Exampl12, Exampl19, Exampl20, Exampl25 із каталогу D:\PROLOG\EXAMPLE. Запити до них придумайте самостійно.

2. За допомогою предиката conc (склеювання списків) вилучіть із заданого списку L три останні елементи. Результатом повинен бути новий список L1.

3. Вилучити із заданого списку три перші і три останні елементи.

4. Опишіть відношення last(El, List) для перевірки того, чи El є останнім елементом списку List. Складіть два варіанти програми з використанням відношення conc та без нього.

5. Складіть процедури для визначення того, чи заданий список має парну чи непарну довжину. Скористайтесь, наприклад, предикатами odd(List) (список непарної довжини) та even(List) (список парної довжини). Вказівка: Виразіть предикат odd через even та навпаки.

6. Опишіть відношення invert(L, L1) для отримання оберненого до L списку L1.

7. Описати предикат palindrom(L) для перевірки того, чи заданий список є паліндромом.

8. Виконати за допомогою предиката shift(L,L1) циклічний зсув заданого списку на один елемент вліво. Наприклад,

? – shift([1,2,3], L)

L=[2,3,1]

9. Скласти процедуру для переведення списку цифр в список атомів, які синтаксично співпадають з назвами відповідних цифр. Наприклад, предикат translate([3,5,9],[three, five,nine]) володіє значенням “істина”.

Вказівка: В якості допоміжного використайте предикат

is(0, zero).

is(1, one).

Is(2, two).

...

10. Описати відношення subset(S,SubS) для перевірки того, чи SubS є підмножиною множини S. S і SubS подаються у вигляді списків. Бажано, щоб за допомогою цього відношення можна було не тільки перевірити, чи одна множина є підмножиною іншої, але і породити всі можливі підмножини заданої множини.

11. Описати предикат dividelist(L,L1,L2)) для розбиття списку L на два списки L1 і L2 приблизно однакової довжини (списки L1 і L2 повинні відрізнятися не більше ніж на один елемент). Наприклад,
dividelist([a,b,c,d,e],[a,c,e],[b,d]).

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

1. Що називають лінійним списком в мові Пролог?

2. Які синтаксичні форми задання списків використовуються в мові Turbo–Prolog?

3. Які типові операції над лінійними списками використовуються?

Лабораторна робота № 4 (4 год)

Т е м а: Використання операцій в Пролог–програмах

М е т а: Засвоїти правила використання арифметичних, логічних операцій та операцій порівняння в програмах на мові Пролог.

З а в д а н н я:

1. Описати відношення max(X,Y,M) так, щоб M дорівнювала найбільшому із чисел X і Y.

2. Знайти максимальний елемент заданого списку.

3. Обчислити суму елементів заданого списку.

4. Описати предикат для перевірки того, що заданий список чисел є впорядкованим за зростанням.

5. Описати предикат subsum(Set,Sum,SubSet) для знаходження підмножини SubSet заданої множини Set, сума елементів якої дорівнює Sum. Sum і SubSet подаються у вигляді списків. Наприклад, ?- subsum([1,2,5,3,2],5,Ss)

Ss=[1,2,2]

Ss=[2,3]

Ss=[5]

...

6. За допомогою перебору знайти всі цілі числа, які задовольняють умові N1<=X<=N2, N1, N2 — задані цілі числа.

7. Знайти суму всіх чисел списку, які знаходяться в ньому на непарних місцях, та суму всіх чисел списку, які знаходяться в ньому на парних місцях.

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

1. Які операції дозволені для використання в мові Turbo–Prolog?

2. Що є областю дії змінної в мові Пролог?

 

Лабораторна робота № 5 (2 год)





©2015 www.megapredmet.ru Все права принадлежат авторам размещенных материалов.