РУСЕНСКИ УНИВЕРСИТЕТ АНГЕЛ КЪНЧЕВ
К У Р С О В А Р А Б О Т А
по
непроцедурно програмиране
на Малвина Владимирова Макариева
от специялност: Имформатика и информационни технологии в бизнеса
фак. № 096811, гр.51
Дата на предаване: Проверил:.....................
............................... (Д. Атанасова)
Зад. 7
Да се създаде book-list, в който всеки елемент има следното съдържание : фамилно име на автора,което се използва за ключ към елемента и данните – заглавие на книгата и година на издаването ú. Списъкът е подреден по азбучен ред.
7.1. Да се избере и опише подходящо представяне на дадената изформация чрез средствата на Lisp. Дефинирайте функция get-authors, която пита за клучова дума от книга(т.е. такава, която се съдържа в името ú) и извежда списък на книгите,съдържащи тази дума в заглавието си и техните автори.
Таблица с данни.
№
|
Фамилия на автора
|
Заглавие на книгата
|
Година на издаване
|
1
|
Braun
|
Cifriva krepost
|
2004
|
2
|
Dominges
|
Kyshta ot hartiq
|
2010
|
3
|
King
|
Mizyri
|
1989
|
4
|
Koelu
|
Veshticata ot Poertobelo
|
2005
|
5
|
Lindzi
|
Noshtniq boec
|
2003
|
6
|
Hagins
|
Magiosnika
|
2001
|
(defun book-list(avtor zaglavie1 godina1)
(setf(get avtor 'zaglavie)zaglavie1)
(setf(get avtor 'godina)godina1)
avtor
)
(setq l (list
(book-list 'Braun '(Cifriva krepost) 2004)
(book-list 'Dominges '(Kyshta ot hartiq) 2010)
(book-list 'King '(Mizyri) 1989)
(book-list 'Kuelu '(Veshticata ot Poertobelo) 2005)
(book-list 'Lindzi '(Noshtniq boec) 2003)
(book-list 'Hagins '(Magiosnika) 2001)
))
(defun get-author (l x)
(cond ((null l) '())
((member x (get(car l) 'zaglavie))(cons(car l)(get-author(cdr l) x)))
(t (get-author(cdr l)x)))
)
7.2. Да се избере подходящо представяне на на информацията на Prolog. Да се дефинира предикат, който извършва същото действие като функцията Lisp.
potok([avtor('Braun',[cifrova,krepost],2004),
avtor('Dominges',[kyshta,ot,hartiq],2010),
avtor('King',[mizyri],1989),
avtor('Koelu',[veshticata,ot, poertobelo],2005),
avtor('Lindzi',[noshtniq,boec],2003),
avtor('Hagins',[magiosnika],2001)
]).
member(_,[]):-fail.
member(D,[D|T]):-!.
member(D,[_|T]):-member(D,T).
get_author(D,[],[]):-!.
get_author(D,[avtor(I,Z,G)|T],[avtor(I,Z)|T1]):-member(D,Z),!,get_author(D,T,T1).
get_author(D,[_|T],L1):-get_author(D,T,L1).
?-potok(L),get_author(ot,L,L1),write(L1),nl.
Сподели с приятели: |