К у р с о в а р а б о т а по непроцедурно програмиране



Дата03.04.2017
Размер25.43 Kb.
#18397


РУСЕНСКИ УНИВЕРСИТЕТ АНГЕЛ КЪНЧЕВ

К У Р С О В А Р А Б О Т А

по

непроцедурно програмиране

на Малвина Владимирова Макариева

от специялност: Имформатика и информационни технологии в бизнеса

фак. № 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.







Сподели с приятели:




©obuch.info 2024
отнасят до администрацията

    Начална страница