
- •Лабораторна робота 14
- •1. План виконання лабораторної роботи
- •2. Основні теоретичні відомості
- •2.1. Вступні пояснення до лабораторної роботи
- •2.2. Приклад роботи з потоками параметрів у процесі логічного програмування мовою Пролог
- •3. Методичні рекомендації до опрацьовування контрольних питань і виконання контрольних завдань лабораторної роботи
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ |
||||
ХЕРСОНСЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ |
||||
Кафедра інформаційних технологій |
||||
|
||||
ЗВІТ З ЛАБОРАТОРНОЇ РОБОТИ 14 |
||||
|
з дисципліни „Логічне програмування” |
|||
|
студента третього курсу денної форми навчання |
|||
|
напряму підготовки 6.050102 “Комп’ютерна інженерія” |
|||
|
з професійною орієнтацією “Комп’ютерні системи та мережі” |
|||
|
галузі знань 0501 “Інформатика та обчислювальна техніка” |
|||
|
факультету кібернетики |
|||
|
Бойко Тараса |
|||
|
||||
Дата проведення лабораторної роботи: |
|
«04» грудня 2012р. |
||
Дата подання звіту за графіком: |
|
«11» грудня 2012р. |
||
|
|
|
||
Дата подання звіту студентом: |
|
____________________ |
||
Підпис студента: |
|
____________________ |
||
|
|
|
||
Позначка викладача про результати та дату перевірки звіту: |
|
____________________ |
||
|
|
|
||
Відомості про викладача, що виконував перевірку звіту (прізвище, ініціали, посада, науковий ступінь, вчене звання): |
|
Веселовська Г.В., доцент кафедри інформаційних технологій ХНТУ, к.т.н., доцент |
||
|
|
|
||
Підпис викладача, що виконував перевірку звіту : |
|
_____________________ |
||
|
||||
Херсон – 2012р. |
Лабораторна робота 14
Тема: Типові приклади застосування логічного програмування мовою Пролог. Частина 2. Робота з потоками параметрів у процесі логічного програмування мовою Пролог.
Мета: отримання знань, умінь і навичок аналізу та контролю потоків параметрів у логічних програмах, створених засобами мови Пролог.
1. План виконання лабораторної роботи
1. Вивчити основні теоретичні відомості до лабораторної роботи.
2. Ознайомитися з методичними вказівками для самостійної роботи студентів до лабораторної роботи 14.
3. Дати відповіді на контрольні питання.
4. Виконати завдання для самоперевірки.
5. Виконати контрольні завдання.
6. Оформити та захистити звіт з лабораторної роботи (вимоги до оформлення та захисту лабораторної роботи знаходяться в Додатку А, а зразок оформлення титульного аркуша звіту про виконання лабораторної роботи знаходиться в Додатку Б).
2. Основні теоретичні відомості
2.1. Вступні пояснення до лабораторної роботи
У процесі звертання до предикату, його аргументи розглядаються як параметри, а саме:
– аргументи з відомими значеннями – як вхідні параметри (input, i);
– аргументи з невідомими значеннями – як вихідні параметри (output, o).
Список вхідних і вихідних параметрів деякого предикату звичайно називають потоком параметрів даного предикату.
Наприклад, якщо предикат має два параметри, то існує чотири можливих варіанти потоку параметрів, позначення яких представлено в таблиці 14.1.
Таблиця 14.1
Приклад позначення можливих варіантів потоку параметрів
для предикату з двома параметрами
№ з/п |
Повні позначення |
Скорочені позначення |
1 |
(input, input) |
(i, i) |
2 |
(input, output) |
(i, o) |
3 |
(output, input) |
(o, i) |
4 |
(output, output) |
(o, o) |
Для кожного стандартного предикату в документації описано потоки параметрів, з якими він може бути викликаний.
У тому випадку, коли стандартний предикат викликається з неіснуючим потоком параметрів, видається повідомлення про помилку.
Для того, щоб мати можливість аналізувати та контролювати потік параметрів, надаються стандартні предикати Прологу, основні з яких представлено в таблиці 14.2.
Таблиця 14.2
Основні стандартні предикати, покладені в основу
здійснення аналізу та контролю потоку параметрів
№ з/п |
Найменуванняпредикатів |
Кількість параметрів предикатів |
Призначення предикатів |
1 |
bound |
1 |
перевіряє, чи є змінна зв'язаною |
2 |
free |
1 |
перевіряє, чи є змінна вільною |
2.2. Приклад роботи з потоками параметрів у процесі логічного програмування мовою Пролог
У наведеному далі лістингу 14_1 представлено приклад Пролог-програми, в якій визначено предикат plus (X, Y, Sum, Rez) для роботи з потоком параметрів, який забезпечує наступні можливості:
– приймає в якості вхідного потоку параметрів два цілочисельних доданки X, Y та їх суму Sum, яка може бути як коректною, так і помилковою;
– може бути викликаний із будь-яким варіантом потоку параметрів;
– перевіряє, чи являють собою параметри вхідного потоку зв'язані змінні, за допомогою послідовності підцілей bound (X), bound (Y), bound (Sum), встановлюючи таким чином синтаксичну безпомилковість вхідного потоку параметрів і, відповідно, можливість здійснення його подальшої обробки;
– якщо потік параметрів виявляється помилковим, ігнорує його подальшу обробку, попереджуючи можливі помилки періоду виконання програми.
Обробка потоку вхідних параметрів передбачає наступні дії:
– обчислюється нове правильне значення суми параметрів-доданків X, Y за допомогою підцілі Rez = X+Y;
– на екран комп`ютеру виводиться як початковий потік параметрів X, Y, Sum, так і скорегований потік параметрів X, Y, New_sum, який містить нове значення суми, представлене змінною Rez.
Розділ GOAL програми містить дві тестові підцілі:
– підціль plus (2, 3, 125, Rez) має безпомилковий потік вхідних параметрів, які є зв'язаними змінними, що дозволяє здійснити обробку (корекцію) зазначеного потоку в повному обсязі;
– підціль plus (A, B, C, D) має помилковий потік вхідних параметрів, який складається виключно з незв'язаних змінних, що призводить до ігнорування подальшої обробки зазначеного потоку.
% Sheet 14_1. Primer 1 on the working for the stream of parameters
PREDICATES
plus (integer, integer, integer, integer)
CLAUSES
% (input, input, input, output)
plus (X, Y, Sum, Rez):-
bound (X), bound (Y), bound (Sum),
Rez = X+Y,
write ("Initial stream"), nl,
write ("of parameters,"), nl,
write ("with possible error"), nl,
write ("on addition:"), nl,
write ("X = ", X, ", ", "Y = ", Y, ", ", "Sum = ", Sum), nl,
write ("New stream"), nl,
write ("of parameters,"), nl,
write ("with correct result"), nl,
write ("on addition:"), nl,
write ("X = ", X, ", ", "Y = ", Y, ", ", "New_sum= ", Rez), nl, nl.
GOAL
plus (2, 3, 125, Rez),
write ("------------------------"),
plus (A, B, C, D).
Результати роботи програми є наступними:
Initial stream of parameters, with possible error on addition:
X = 2, Y = 3, Sum = 125
New stream of parameters, with correct result on addition:
X = 2, Y = 3, New_sum = 5