- •Лабораторне заняття № 1
- •1. Теоретичні відомості
- •2. Практична частина
- •2.1. Програма роботи та завдання.
- •Лабораторне заняття № 2
- •1. Теоретичні відомості
- •2. Практична частина
- •2.1. Програма роботи та завдання.
- •Лабораторне заняття № 3
- •1. Теоретичні відомості
- •2. Практична частина
- •2.1. Програма роботи та завдання.
- •Лабораторне заняття № 4
- •1. Теоретичні відомості
- •2. Практична частина
- •2.1. Програма роботи та завдання.
- •Лабораторне заняття № 5
- •1. Теоретичні відомості
- •2. Практична частина
- •2.1. Програма роботи та завдання.
- •Лабораторне заняття № 6
- •1. Теоретичні відомості
- •2. Практична частина
- •2.1. Програма роботи та завдання.
- •Лабораторне заняття № 7
- •1. Теоретичні відомості
- •2. Практична частина
- •2.1. Програма роботи та завдання.
- •Лабораторне заняття № 8
- •1. Теоретичні відомості
- •2. Практична частина
- •2.1. Програма роботи та завдання.
- •Лабораторне заняття № 9
- •1. Теоретичні відомості
- •2. Практична частина
- •2.1. Програма роботи та завдання.
- •Лабораторне заняття № 10
- •1. Теоретичні відомості
- •2. Практична частина
- •2.1. Програма роботи та завдання.
- •Лабораторне заняття № 11
- •1. Теоретичні відомості
- •2. Практична частина
- •2.1. Програма роботи та завдання.
- •Лабораторне заняття № 12
- •1. Теоретичні відомості
- •1. Стара графіка.
- •2. Черепахова графіка (Turtle graphics).
- •2. Практична частина
- •2.1. Програма роботи та завдання.
- •Лабораторне заняття № 13
- •1. Теоретичні відомості
- •2. Практична частина
- •2.1. Програма роботи та завдання.
- •Лабораторне заняття № 14
- •1. Теоретичні відомості
- •2. Практична частина
- •2.1. Програма роботи та завдання.
- •Лабораторне заняття № 15
- •1. Теоретичні відомості
- •2. Практична частина
- •2.1. Програма роботи та завдання.
- •Лабораторне заняття № 16
- •1. Теоретичні відомості
- •2. Практична частина
- •2.1. Програма роботи та завдання.
- •43018, М. Луцьк, вул.Львівська, 75
2. Практична частина
Приклад 1.
domains
per=symbol
predicates
fa(per,per)
mo(per,per)
parents(per,per)
grandfa(per,per)
sister(per,per)
brother(per,per)
male(per)
famale(per)
uncle(per,per)
clauses
mo("Olya","Svyatoslav").
fa("Igor","Svyatoslav").
fa("Svyatoslav","Jaropolk").
fa("Svyatoslav","Oleg").
fa("Svyatoslav","Vladimir").
fa("Vladimir","Jaroslav").
fa("Vladimir","Svyatopolk").
male("Svyatoslav").
male("Igor").
male("Jaropolk").
male("Oleg").
male("Izyaslav").
male("Jaroslav").
male("Vladimir").
male("Svyatopolk").
famale("Olya").
parents(X,Y):-fa(X,Y);mo(X,Y).
grandfa(X,Y):-fa(X,Z),parents(Z,Y).
brother(X,Y):-male(X),parents(D,X),parents(D,Y),X<>Y.
sister(X,Y):-famale(X),parents(F,X),parents(F,Y),X<>Y.
uncle(X,Y):-fa(Z,Y),brother(X,Z),X<>Z.
Приклад 2.
domains
x=real
z=symbol
predicates
fn(x,x,x,x,x,x,z)
goal
write("Input x1"), readreal(X1), write("Input y1"), readreal(Y1),
write("Input x2"), readreal(X2), write("Input y2"), readreal(Y2),
write("Input x3"), readreal(X3), write("Input Y3"), readreal(Y3),
fn(X1,Y1,X2,Y2,X3,Y3,Z), write("Z=",Z).
clauses
fn(X1,Y1,X2,Y2,X3,Y3,Z):-(Y2-X2*(Y1-Y2)/(X1-X2))>0,
(Y3-X3*(Y2-Y3)/(X2-X3))>0, (Y1-X1*(Y3-Y1)/(X3-X1))>0,Z="No";Z="Yes".
2.1. Програма роботи та завдання.
2.1.1. Створити в середовищі Turbo Prolog програму подібну прикладу 1 та дослідити її.
2.1.2. Задати різні варіанти цілей та проаналізувати отримані результати.
2.1.3. Дослідити програму прикладу 2 з подальшою модифікацією за вибором студента.
2.1.4. Зафіксувати у звіті вихідні коди створених програм та логіку їх роботи.
2.1.5. Відповісти письмово на контрольні питання.
Контрольні питання:
Які є основні розділи програми в Turbo Prolog?
Які є домени?
Які розділи використовують найчастіше?
Яка є характерна особливість в Turbo Prolog визначення роботи програми?
Лабораторне заняття № 3
Тема: Дослідження вбудованих предикатів та анонімних змінних
Мета роботи. Проілюструвати особливості використання вбудованих предикатів та анонімних змінних на прикладі простої експертної системи; зафіксувати висновки у звіті; проаналізувати отримані результати.
1. Теоретичні відомості
Анонімні змінні використовуються у випадку, коли потрібна часткова інформація із запиту. За допомогою анонімних змінних ігноруються не потрібні значення. Продемонстру-ємо на прикладі використання анонімних змінних.
predicates
male(symbol)
female(symbol)
parent(symbol, symbol)
clauses
male(bill).
male(joe).
female(sue).
female(tammy).
parent(bill, joe).
parent(sue, joe).
parent(joe, tammy).
Анонімна змінна може бути використана на місці будь-якої змінної. Відмінність полягає в тому, що анонімна ніколи не отримає значення.
Наприклад, якщо вам потрібна інформація тільки про батьків, тоді можна використати запит
Goal:parent(Who, _),
де символ «_» позначає анонімну змінну. Система видасть результат:
Who=bill
Who=sue
Who=joe
3 Solution.
Анонімні змінні можуть також використовуватись і у фактах:
owns(_,shoes).
eats(_).
У цьому випадку анонімна змінна зрівнює все.
