![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Списковые структуры помогают решать множество задач, в которых необходима последовательная обработка однотипных данных. Пролог обладает мощными средствами обработки сложных иерархических структур, которые удобно представлять с помощью деревьев(их называют термами или структурами). Для использования структур их надо описать в разделе domains, так как структура – нестандартный тип данных.
Использование структур рассмотрим на примере простой базы данных, содержащей информацию о семьях.
Пусть знания о семьях можно представить с помощью следующих структур:
Пример программы, использующей данную структуру:
domains
first_name,second_name,place_of_work,month=string
number,year,rate_of_pay=integer
date_of_birthday=date(number,month,year)
inf_about_work= work(place_of_work,rate_of_pay)
member_of_family=member(first_name,second_name, date_of_birthday,
inf_about_work)
list_of_members= member_of_family*
children=childs(list_of_members)
predicates
family(member_of_family, member_of_family, children)
husband(member_of_family)
child(member_of_family)
wife(member_of_family)
exist(member_of_family)
belong(member_of_family, list_of_members)
date_of_birth(member_of_family, date_of_birthday)
income(member_of_family, rate_of_pay)
clauses
family(member(“Roman”,“Kustov”,date(5,“may”,1964),
work(“TRTU”,500)),
member(“Irina”,“ Kustova”,date(10,“may”,1962),
work(“Belii Aist”,1200)),
childs([member(“Vasy”,“Kustov”,date(10,“april”,1982),
work(“net”,0)),
member(“Vera”,“ Kustova”,date(9,“ april”,1989),
work(“net”, 0))])).
husband(X):-
family(X,_,_).
wife(X):-
family(_,X,_).
child(X):-
family(_,_,childs(Y)),
belong(X,Y).
exist(X):-
husband(X);
wife(X);
child(X).
belong(X,[X|T]).
belong(X,[Y|T]):-
belong(X,T).
date_of_birth(member(X,Y,Date,Z),Date):-
exist(member(X,Y,Date,Z)).
Income(member(X,Y,Z,work(U,S)),S):-
exist(member(X,Y,Z,work(U,S))).
Дата публикования: 2015-10-09; Прочитано: 118 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!