Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод. указ к лаб_ПЗ_1..doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
127.49 Кб
Скачать

2. Работа со структурами на языке пролог

Задача 2.1. Составить программу, проверяющую дату рождения сотрудника фирмы, используя первый или второй уровень понимания ИС.

Решение.

birthday(pam,date(21,april,1990)).

birthday(bob,date(22,april,1990)).

birthday(tom,date(23,april,1990)).

birthday(mary,date(24,april,1990)).

getday(X,Y,L,M) :- birthday(X,date(Y,L,M)).

?- getday(X,21,april,1990)?

Ответ системы Пролог:

X=pam.

?- getday(mary,X,Y,Z).

Ответ системы Пролог:

X=24.

Y=april.

Z=1990.

Задача 2.2. Создать объект прямоугольник.

Решение.

point(p1,coord(0,0)).

point(p2,coord(22,22)).

point(p3,coord(0,22)).

point(p4,coord(22,0)).

point(p5,coord(32,22)).

point(p6,coord(32,0)).

point(p7,coord(22,2)).

point(p8,coord(2,22)).

/* квадрат длины отрезка */

leng(X1,Y1,X2,Y2,Z):- Z is(X1-X2)*(X1-X2)+(Y1-Y2)*(Y1-Y2).

/* у прямоугольника равны диагонали и равны противоположные стороны*/

rectangle (P1,P2,P3,P4,Z1,Z2,Z3,Z4) :- point(P1,coord(X1,Y1)),point(P2,coord(X2,Y2)),

point(P3,coord(X3,Y3)),point(P4,coord(X4,Y4)), P1 \= P2, P1 \= P3, P1 \= P4, P2 \= P3, P2 \= P4, P3 \= P4,

leng(X1,Y1,X3,Y3,Z1),leng(X2,Y2,X4,Y4,Z2),Z1=Z2, leng(X1,Y1,X2,Y2,Z3),leng(X3,Y3,X4,Y4,Z4),Z3=Z4.

?- rectangle (X,Y,Z,P,K,_,_,_,_).

Ответ системы Пролог:

X=P1.

Y=P2.

Z=P3.

K=P4.

X=P1.

Y=P3.

Z=P5.

K=P6.

Задача 2.3. Составить базу данных, правила (программу) на языке ПРОЛОГ

для поиска ответа на вопрос:

? – квадрат(Z1,Z2,Z3,Z4).

Решение. Будем использовать предыдущую БД, поменяв последнее правило, получим:

/* у квадрата равны диагонали и равны смежные стороны*/

sqr(P1,P2,P3,P4,Z1,Z2,Z3,Z4) :- point(P1,coord(X1,Y1)),point(P2,coord(X2,Y2)),

point(P3,coord(X3,Y3)),point(P4,coord(X4,Y4)), P1 \= P2, P1 \= P3, P1 \= P4, P2 \= P3, P2 \= P4, P3 \= P4, leng(X1,Y1,X3,Y3,Z1),leng(X2,Y2,X4,Y4,Z2),Z1=Z2, leng(X1,Y1,X2,Y2,Z3),leng(X3,Y3,X4,Y4,Z4),Z3=Z4.

?- sqr(X,Y,Z,P,K,_,_,_,_).

Ответ системы Пролог:

X=P1,

Y=P2,

Z=P3,

K=P4,

Z1=Z2,Z2=484,

Z3=Z4,Z4=968;

X=P1,

Y=P2,

Z=P4,

K=P3,

Z1=Z2,Z2=484,

Z3=Z4,Z4=968;

и тд.

Задача 2. 4. Составить базу данных, правила (программу) на языке ПРОЛОГ

для поиска ответа на вопрос:

? – прямоугольный_треугольник(Z1,Z2,Z3).

Решение. Воспользуемся БД предыдущего примера, вставив правило, определяющее прямоугольный треугольник.

/* у прямоугольного треугольника сумма квадратов сторон равна квадрату гипотенузы*/

right_triangle(X1,Y1,X2,Y2,X3,Y3) :- point(P1,coord(X1,Y1)), point(P2,coord(X2,Y2)), point(P3,coord(X3,Y3)), P1 \= P2, P1 \= P3, P2 \= P3, leng(X1,Y1,X2,Y2,Z1), leng(X1,Y1,X3,Y3,Z2), P is Z1+Z2 , leng(X3,Y3,X2,Y2,Z3), P=Z3.

?- right_ triangle (X1,Y1,X2,Y2,X3,Y3).

Ответ системы Пролог:

X1=Y1,Y1=X2,X2=0,Y2=X3,X3=22,Y3=0.

Задача 2.5. Составить программу на языке ПРОЛОГ для

поиска ответа на вопрос:

? – отрезок(X1,Y1,X2,Y2).

Решение.

point(p1,coord(0,0)).

point(p2,coord(22,22)).

point(p3,coord(0,22)).

point(p4,coord(22,0)).

point(p5,coord(32,22)).

point(p6,coord(0,22)).

point(p7,coord(32,0)).

point(p8,coord(22,2)).

point(p9,coord(2,22)).

segment(X1,Y1,X2,Y2):-point(P1,coord(X1,Y1)),point(P2,coord(X2,Y2)),P1 \= P2.

Ответ системы Пролог:

X1=Y1,Y1=0,

X2=Y2,Y1=22.

Задача 2.6. Составить программу на языке ПРОЛОГ для поиска ответа на

вопрос:

? – прямая(Z,R).

Решение.

point(5,6).

point(5,8).

point(4,2).

point(5,1).

point(3,8).

koeff(5).

koeff(8).

len(15).

removal(0). /* смещение */

removal(1).

/* прямая задается по точке, по коэффициенту и по смещению:

y(x)=k*x+b */

line(K, B,X, Y) :- koeff(K), removal(B), point(X,Y).

?-line(5, 0,5, 6).

Ответ системы Пролог:

Yes.