Програма на Lisp и Prolog

Информатика и компютърни науки Курсова работа

РУСЕНСКИ УНИВЕРСИТЕТ „АНГЕЛ КЪНЧЕВ“
ФАКУЛТЕТ ПРИРОДНИ НАУКИ И ОБРАЗОВАНИЕ
Катедра „Информатика и информационни технологии в бизнеса”

КУРСОВА РАБОТА ПО НЕПРОЦЕДУРНО ПРОГРАМИРАНЕ
(Курсова работа по специалност ИИТБ)

Изготвил: Проверил:

21. Да се създаде magazine-list, в който всеки елемент съдържа следната информация – име на списанието, година на издаване, тираж, цена.

21.1. Да с
е избере и опише подходящо представяне на информацията чрез средствата на Lisp. Дефинирайте функция get-mag, която пита за година на издаване и извежда списък с имената на списанията, издадени след тази година.

21.2. Да се избере подходящо представяне на информацията на Prolog. Да се дефинира предикат, който извършва същото действие като функцията на Lisp.

21.1: LISP
(defun magazine-list (nom ime1 god1 tiraj1 cena1)
(setf (get nom 'ime) ime1)
(setf (get nom 'god) god1)
(setf (get nom 'tiraj) tiraj1)
(setf (get nom 'cena) cena1)
nom)

(setq l (list
(magazine-list 'n111 ' Cosmopolitan 2004 36593 2.99)
(magazine-list 'n112 ' ELLE 2005 17440 3.99)
(magazine-list 'n113 ' Story 2006 12261 1.99)
)
)
(defun get-mag(sp god)
(cond ((null sp) `())
(> (get(car sp) ‘god) god1))
(cons (get(car sp) ‘ime)(get-mag(cdr sp) god))
(T (get-mag(cdr sp) god)))

Пример:
CL-USER 1 > (defun magazine-list (nom ime1 god1 tiraj1 cena1)
(setf (get nom 'ime) ime1)
(setf (get nom 'god) god1)
(setf (get nom 'tiraj) tiraj1)
(setf (get nom 'cena) cena1)
nom)
MAGAZINE-LIST

CL-USER 2 >
(setq l (list
(magazine-list 'n111 ' Cosmopolitan 2004 36593 2.99)
(magazine-list 'n112 ' ELLE 2005 17440 3.99)
(magazine-list 'n113 ' Story 2006 12261 1.99)
)
)
(N111 N112 N113)

CL-USER 3 > (defun get-mag(sp god)
(cond ((null sp) `())
(> (get(car sp) ‘god) god1))
(cons (get(car sp) ‘ime)(get-mag(cdr sp) god))
(T (get-mag(cdr sp) god)))
GET-MAG

Prolog:
all([magazinelist(name(cosmopolitan),2004,36593,2.99),
magazinelist(name(elle),2005,17440,3.99),
magazinelist(name(story),2006, 12261,1.99)]).
magazinelist(_,[],[]).
magazinelist(DadGod,[magazinelist(name(Name),God,Tiraj,Cena)|T],
[magazinelist(name(Name),God,Tiraj,Cena)|NewT]):-God>DadGod, magazinelist(DadGod,T,NewT).
magazinelist(DadGod,[_|T],L):-magazinelist(DadGod,T,L).

?-all(L),magazinelist(2003,L,NewL),write(NewL),nl.

Пример 1 на PROLOG
Saving.

Compiling the file:
C:\Users\Rulan\Downloads\Untitled Project 2.spj
0 errors, 0 warnings.

[magazinelist(name(cosmopolitan),2004,36593,2.99),magazinelist(name(elle),2005,17440,3.99),magazinelist(name(story),2006,12261,1.99)]
Yes.

Пример 2 на PROLOG

Saving.

Compiling the file:
C:\Users\Rulan\Downloads\Untitled Project 2.spj
0 errors, 0 warnings.

[magazinelist(name(story),2006,12261,1.99)]
Yes.

Преглед на началото - целият файл след изтегляне

Описание

Да се създаде magazine-list, в който всеки елемент съдържа следната информация – име на списанието, година на издаване, тираж, цена. Да се избере и опише подходящо представяне на информацията чрез средствата на Lisp. Дефинирайте функция get-mag, която пита за година на издаване и извежда списък с имената на списанията, издадени след тази година. Да се избере подходящо представяне на информацията на Prolog. Да се дефинира предикат, който извършва същото действие като функцията на Lisp. Дисциплина: Непроцедурно програмиране

0 коментара

Все още няма коментари. Бъдете първият, който ще коментира.

За да коментирате, трябва да сте влезли в профила си.

Влезте