готов лаби 4 курс 1 сим / ЛП / laba_9_lp (2)
.docКіровоградський національний технічний університет
Механіко-технологічний факультет
Кафедра програмного забезпечення
Дисципліна: «Логічне програмування»
Лабораторна робота №9
Тема: “Творча робота з курсу „Логічне програмування”.
Експертна система пошуку тварин
Виконала:ст. гр.КІ-07-2
Шведченко М.
Перевірив:викладач
Якименко Н. М.
м. Кіровоград 2010
Лабораторна робота № 9
Тема: “Творча робота з курсу „Логічне програмування”.
Мета: Узагальнити знання, отримані під час вивчення курсу та творчо їх використати.
Завдання:
Написати оригінальну програму, яка буде уособлювати в собі всі знання та вміння, набуті вами під час вивчення курсу „Логічне програмування” а також вашу фантазію та творчу думку. Бажано використання меню та графіки.
database
yes(string)
no(string)
maybe(string)
predicates
repeat
run
animal(string)
positive(string)
negative(string)
xpositive(string)
xnegative(string)
ask(string,char)
remember(string,char)
delete_all
clauses
repeat.
repeat:-repeat.
%-----------------------------------------------------------------------------
% описуємо тварин
animal("пiнгвiн"):-positive("плаває"),positive("має рiзнокольорове забарвлення"),
negative("приручено людиною"),
negative("вмiє лiтати"),positive("вiдкладає яйця"),
positive("має пiр`я").
animal("гусак"):-positive("плаває"),positive("має рiзнокольорове забарвлення"),
positive("приручено людиною"),
positive("вмiє лiтати"),positive("вiдкладає яйця"),
positive("має пiр`я").
animal("дика качка"):-positive("плаває"),positive("має рiзнокольорове забарвлення"),
negative("приручено людиною"),
positive("вмiє лiтати"),positive("вiдкладає яйця"),
positive("має пiр`я").
animal("страус"):-negative("плаває"),positive("має рiзнокольорове забарвлення"),
negative("приручено людиною"),
negative("вмiє лiтати"),positive("вiдкладає яйця"),
positive("має пiр`я").
animal("соловей"):-negative("плаває"),negative("має рiзнокольорове забарвлення"),
negative("приручено людиною"),
positive("вмiє лiтати"),positive("вiдкладає яйця"),
positive("має пiр`я").
animal("папуга"):-negative("плаває"),
positive("має рiзнокольорове забарвлення"),
positive("приручено людиною"),
positive("вмiє лiтати"),positive("вiдкладає яйця"),
positive("має пiр`я").
animal("заєць"):-positive("плаває"),positive("має рiзнокольорове забарвлення"),
negative("вмiє лiтати"),
positive("має кiгтi"),
negative("приручено людиною"),
positive("живородяще"),
positive("травоїдне"),
negative("їсть iнших тварин").
animal("крiт"):-negative("вмiє лiтати"),negative("має рiзнокольорове забарвлення"),
positive("має кiгтi"),
negative("приручено людиною"),
negative("плаває"),positive("слiпе вiд народження"),
positive("живородяще"),
positive("травоїдне"),
negative("їсть iнших тварин").
animal("зебра"):-negative("вмiє лiтати"),positive("має рiзнокольорове забарвлення"),
negative("має кiгтi"),
positive("має роги"),
negative("приручено людиною"),
positive("плаває"), positive("має копита"),
positive("живородяще"),
positive("травоїдне"),
negative("їсть iнших тварин").
animal("корова"):-negative("вмiє лiтати"),positive("має рiзнокольорове забарвлення"),
negative("має кiгтi"),
positive("має роги"),
positive("приручено людиною"), positive("має копита"),
positive("плаває"), positive("живородяще"),
positive("травоїдне"),
negative("їсть iнших тварин").
animal("бобер"):-negative("вмiє лiтати"),negative("має рiзнокольорове забарвлення"),
positive("має кiгтi"),
negative("приручено людиною"),
positive("плаває"), positive("живородяще"),
positive("травоїдне"),
negative("їсть iнших тварин").
animal("вовк"):-negative("вмiє лiтати"),negative("має рiзнокольорове забарвлення"),
positive("має кiгтi"),
negative("приручено людиною"),
positive("плаває"),positive("живородяще"),
negative("травоїдне"),
positive("їсть iнших тварин").
animal("тигр"):-negative("вмiє лiтати"),positive("має рiзнокольорове забарвлення"),
positive("має кiгтi"),
negative("приручено людиною"),
positive("плаває"),positive("живородяще"),
negative("травоїдне"),
positive("їсть iнших тварин").
animal("слон"):-negative("вмiє лiтати"),negative("має рiзнокольорове забарвлення"),
positive("має хобот"),
positive("приручено людиною"),
positive("плаває"),positive("живородяще"),
positive("травоїдне"),
negative("їсть iнших тварин").
animal("Вибачте! Такого звiра не знайдено ...").
%-----------------------------------------------------------------------------
% робота з динамiчною базою даних
positive(X):-xpositive(X),!; xnegative(X),!,fail; ask(X,'y').
negative(X):-xnegative(X),!; xpositive(X),!,fail; ask(X,'n').
ask(X,R):-write(X," ? : "),readchar(Reply),write(Reply,"\n"),
remember(X,Reply),R=Reply.
% перевiрка наявностi фактiв в динамiчнiй базi даних
xpositive(X):-yes(X);maybe(X).
xnegative(X):-no(X);maybe(X).
% запам`ятовуємо факт в динамiчнiй базi даних
remember(X,'y'):-asserta(yes(X)).
remember(X,'n'):-assertz(no(X)).
remember(X,'q'):-asserta(maybe(X)).
% очищаємо пам`ять вiд фактiв в динамiчнiй базi даних
delete_all:-retract(yes(_)),delete_all.
delete_all:-retract(no(_)),delete_all.
delete_all:-retract(maybe(_)),delete_all.
delete_all.
%-----------------------------------------------------------------------------
run:-delete_all,
repeat,
write("Вiдповiдати на питання (y-так, n-нi, q-не знаю).\n"),
animal(X),
write("Це тварина : ",X,"\n"),
write("Завершити роботу програми (y/n): "),readchar(Z),
write(Z),nl,
Z='y'.
goal
makewindow(1,10,12," Експертна система пошуку тварин ",0,0,25,80),
nl,
write("--------------------------------------------"),nl,
run.