20977

Организация сетей фреймов

Лабораторная работа

Информатика, кибернетика и программирование

setq TodayYear 2010 deframeq Book1 Nazvanie value Programmirovanie_na_FRL Author value Book2 status: indirect slot: author Year value 2003 PageNum value 672 Popularity value 2000 Quantity value GetQuantity PARM: TodayYear STATUS: EVAL deframeq Book2 Nazvanie value Programmirovanie_na_LISP Author value Chernov_PBajdun_VBunin_A Year value 1993 PageNum value 40 Popularity value 600 Quantity value GetQuantity PARM: TodayYear STATUS:...

Русский

2013-08-02

33.02 KB

2 чел.

Лабораторная работа № 9.

Организация сетей фреймов.

  1.  С  помощью косвенного наследования задать часть информации во фрагменте библиотечной системы.

(setq TodayYear 2010)

(deframeq Book1

(Nazvanie  ($value (Programmirovanie_na_FRL)))

(Author  ($value (Book2 (status: indirect) (slot: author))))

(Year   ($value (2003)))

(PageNum  ($value (672)))

(Popularity  ($value (2000)))

(Quantity  ($value (GetQuantity (PARM: TodayYear) (STATUS: EVAL))))

)

(deframeq Book2

(Nazvanie  ($value (Programmirovanie_na_LISP)))

(Author  ($value (Chernov_P)(Bajdun_V)(Bunin_A)))

(Year   ($value (1993)))

(PageNum  ($value (40)))

(Popularity  ($value (600)))

(Quantity  ($value (GetQuantity (PARM: TodayYear) (STATUS: EVAL))))

)

(deframeq Book3

(Nazvanie  ($value (C++)))

(Author  ($value (Stroustrup_B)))

(Year   ($value (2008)))

(PageNum  ($value (1104)))

(Popularity  ($value (2500)))

(Quantity  ($value (GetQuantity (PARM: TodayYear) (STATUS: EVAL))))

)

(deframeq Book4

(Nazvanie  ($value (PHP_5/6)))

(Author  ($value (Kuznecov_M)))

(Year   ($value (2010)))

(PageNum  ($value (1024)))

(Popularity  ($value (1800)))

(Quantity  ($value (GetQuantity (PARM: TodayYear) (STATUS: EVAL))))

)

(deframeq Book5

(Nazvanie  ($value (JavaScript)))

(Author  ($value (Flanagan_D)))

(Year   ($value (2009)))

(PageNum  ($value (992)))

(Popularity  ($value (1900)))

(Quantity  ($value (GetQuantity (PARM: TodayYear) (STATUS: EVAL))))

)

(passertq GetQuantity (Y)

(

(setq P (- (car (fget :FRAME Popularity)) (* 200 (- Y (car (fget :FRAME Year))))))

(cond

 ((> P 0) P)

 (T 0)

)

))

пример

(fget book1 author)  =>  (Chernov_P Bajdun_V Bunin_A)

  1.  Задать  информацию  о фрагменте библиотечной системы с помощью AKO-иерархии.

(deframeq Library

(Nazvanie  ($value (Biblioteka_im_Lenina)))

(count   ($value (575)))

(instance  ($value (Programming) (Mathematics)))

)

(deframeq Programming

(Nazvanie ($value (Programming_Languages)))

(count  ($value (554)))

(AKO  ($value (Library)))

(instance  ($value (C++) (LISP) (FRL)))

)

(deframeq Mathematics

(Nazvanie ($value (Mathematics)))

(count  ($value (21)))

(AKO  ($value (Library)))

(instance  ($value (Algebra) (Geometry)))

)

(deframeq C++

(Nazvanie ($value (C++)))

(count  ($value (21)))

(AKO  ($value (Programming)))

(instance  ($value (book_1) (Book_2)))

)

(deframeq Lisp

(Nazvanie ($value (LIST_Processing)))

(count  ($value (320)))

(AKO  ($value (Programming)))

(instance  ($value (book_3)))

)

(deframeq FRL

(Nazvanie ($value (Frame_representative_language)))

(count  ($value (213)))

(AKO  ($value (Programming)))

(instance  ($value (book_4)))

)

(deframeq Algebra

(Nazvanie ($value (Algebra)))

(count  ($value (15)))

(AKO  ($value (Mathematics)))

(instance  ($value (book_5)))

)

(deframeq Geometry

(Nazvanie ($value (Geometry)))

(count  ($value (6)))

(instance  ($value (book_6)))

(AKO  ($value (Mathematics)))

)

(deframeq book_1

(Nazvanie  ($value (C++_Language)))

(count  ($value (18)))

(AKO  ($value (C++)))

)

(deframeq book_2

(Nazvanie  ($value (C++_for_professionals)))

(count  ($value (3)))

(AKO  ($value (C++)))

)

(deframeq book_3

(Nazvanie  ($value (Programmirovanie_na_LISP)))

(count  ($value (320)))

(AKO  ($value (lisp)))

)

(deframeq book_4

(Nazvanie  ($value (Programmirovanie_na_FRL)))

(count  ($value (213)))

(AKO  ($value (frl)))

)

(deframeq book_5

(Nazvanie  ($value (Algebra_and_the_begining_of_analis)))

(count  ($value (15)))

(AKO  ($value (algebra)))

)

(deframeq book_6

(Nazvanie  ($value (Decartovi_ploskosti)))

(count  ($value (6)))

(AKO  ($value (geometry)))

)

пример

(fget book_6 nazvanie) =>(Decartovi_ploskosti Geometry Mathematics Biblioteka_im_Lenina)

  1.  Имеется  система  фреймов,  организованная  в  циклическую (круговую) структуру. Обеспечить проход по циклу заданное количество раз в любую сторону, начиная с любого фрейма.

(deframeq Frame1

(Nazvanie  ($value (Frame_1)))

(nums   ($default (0)))

(Next   ($value (Frame2)))

(pred   ($value (Frame6)))

(Dir   ($value) ($default (1)))

(Ako   ($value (GetNext (status: eval) (parm: 'Frame1))))

)

(deframeq Frame2

(Nazvanie  ($value (Frame_2)))

(nums   ($default (0)))

(Next   ($value (Frame3)))

(pred   ($value (Frame1)))

(Dir   ($default (1)))

(Ako   ($value (GetNext (status: eval) (Parm: 'Frame2))))

)

(deframeq Frame3

(Nazvanie  ($value (Frame_3)))

(nums   ($default (0)))

(Next   ($value (Frame4)))

(pred   ($value (Frame2)))

(Dir   ($default (1)))

(Ako   ($value (GetNext (status: eval) (Parm: 'Frame3))))

)

(deframeq Frame4

(Nazvanie  ($value (Frame_4)))

(nums   ($default (0)))

(Next   ($value (Frame5)))

(pred   ($value (Frame3)))

(Dir   ($default (1)))

(Ako   ($value (GetNext (status: eval) (Parm: 'Frame4))))

)

(deframeq Frame5

(Nazvanie  ($value (Frame_5)))

(nums   ($default (0)))

(Next   ($value (Frame6)))

(pred   ($value (Frame4)))

(Dir   ($default (1)))

(Ako   ($value (GetNext (status: eval) (Parm: 'Frame5))))

)

(deframeq Frame6

(Nazvanie  ($value (Frame_6)))

(nums   ($default (0)))

(Next   ($value (Frame1)))

(pred   ($value (Frame5)))

(Dir   ($default (1)))

(Ako   ($value (GetNext (status: eval) (Parm: 'Frame6))))

)

(passertq GetNext (F nDir nNext Vis)

(setq nDir (car (fget1 F Dir)))

(print (car (fget1 F Nazvanie)))

(IF (equal nDir 1)

 (setq nNext (car (fget1 F Next)))

 (setq nNext (car (fget1 F pred)))

)

(Cond

 ((>= (car (fget1 nNext nums)) MaxVisit) Nil)

 (T

  (Setq Vis (car (fget1 F nums)))

  (fdelete F nums)

  (fput F nums $value (+ Vis 1))

  (fdelete nNext Dir $value)

  (fput nNext Dir $value nDir)

  nNext

 )

)

)

(setq Flist '(frame1 frame2 frame3 frame4 frame5 frame6))

(defun Zicl (FStart N)

(Cond

 ((Null (member FStart (cdr *FRAMES*))) Error!_Wrong_frame_argument!)

 ((Not (IntegerP N)) Error!_Wrong_number_of_cicles!)

 (T

  (if (>= N 0)

   (setq RDir 1)

   (setq RDir 0)

  )

  (setq MaxVisit (abs N))

  (FPut FStart Dir $value RDir)

  (Fgetn FStart nums $value)

  (refresh Flist)

 )

)

)

(defun refresh (fl)

(cond

 ((null fl) Finish)

 (T

  (fdelete (car fl) nums $value)

  (fput (car fl) nums $value 0)

  (refresh (cdr fl))

 )

)

)

  1.  Сформировать сетевую структуру фреймов с необходимыми процедурами, описывающую ситуацию на складе (см. задание 30) и обеспечивающую корректировку информации при завозе/вывозе продукции. Предусмотреть, что склад имеет ограниченный фиксированный объем.

(deframeq SKLAD

(kolvo   ($value (SKLADkolvo (status: eval))))

(maxkolvo  ($value (500)))

(instance  ($value (processors) (motherboards) (memory)))

)

(deframeq processors

(instance  ($value (CORE2DUO) (CORE2EXTREME) (CORE2QUAD) (COREi7)))

)

(deframeq motherboards

(instance  ($value (ASUSp6t7) (ASUSp6t6) (INTELdp55kg)))

)

(deframeq memory

(instance  ($value (DDR) (DDR2) (DDR3) (SDRAM)))

)

(deframeq CORE2DUO

(kolvo  ($value (45)))

(AKO   ($value (processors)))

)

(deframeq CORE2EXTREME

(kolvo  ($value (23)))

(AKO   ($value (processors)))

)

(deframeq CORE2QUAD

(kolvo  ($value (69)))

(AKO   ($value (processors)))

)

(deframeq COREi7

(kolvo  ($value (84)))

(AKO   ($value (processors)))

)

(deframeq ASUSp6t7

(kolvo  ($value (40)))

(AKO   ($value (motherboards)))

)

(deframeq ASUSp6t6

(kolvo  ($value (0)))

(AKO   ($value (motherboards)))

)

(deframeq INTELdp55kg

(kolvo  ($value (10)))

(AKO   ($value (motherboards)))

)

(deframeq DDR

(kolvo  ($value (18)))

(AKO   ($value (memory)))

)

(deframeq DDR2

(kolvo  ($value (96)))

(AKO   ($value (memory)))

)

(deframeq DDR3

(kolvo  ($value (14)))

(AKO   ($value (memory)))

)

(deframeq SDRAM

(kolvo  ($value (0)))

(AKO   ($value (memory)))

)

(passertq SKLADkolvo ()

(setq Sum 0)

(setq list1 (fget :frame instance))

(loop

 ((null list1) Sum)

 (setq list2 (fget (car list1) instance))

 (loop

  ((null list2) T)

  (setq Sum (+ sum (car (fget (car list2) kolvo))))

  (setq list2 (cdr list2))

 )

 (setq list1 (cdr list1))

)

)

(defun SKLADwatch (FSklad)

(PRINT --------------------)

(setq list1 (fget Fsklad instance))

(loop

 ((null list1) --------------------)

 (PRINT (car list1))

 (setq list2 (fget (car list1) instance))

 (loop

  ((null list2) T)

  (print (list (car list2) (car (fget (car list2) kolvo))))

  (setq list2 (cdr list2))

 )

 (setq list1 (cdr list1))

)

)

(defun inputx (Fsclad TName N)

(cond

 ((Null (member FSclad (cdr *FRAMES*))) Error!_Wrong_sclad_argument!)

 ((Null (member TName (cdr *FRAMES*))) Error!_Wrong_tovar_argument!)

 ((or (not (numberp N)) (< N 0)) Error!_Wrong_kolvo!)

 (T

  (setq S (car (fget TName kolvo)))

  (setq max (car (fget fsclad maxkolvo)))

  (setq K (car (fget fsclad kolvo)))

  (fdelete Tname kolvo)

  (if (> (+ N S K) max)

   (fput Tname kolvo $value (+ S (- max (+ K S))))

   (fput Tname kolvo $value (+ S N))

  )

 )

)   

)

(defun outputx (Fsclad TName N)

(cond

 ((Null (member FSclad (cdr *FRAMES*))) Error!_Wrong_sclad_argument!)

 ((Null (member TName (cdr *FRAMES*))) Error!_Wrong_tovar_argument!)

 ((or (not (numberp N)) (< N 0)) Error!_Wrong_kolvo!)

 (T

  (setq S (car (fget TName kolvo)))

  (fdelete Tname kolvo)

  (if (>= S N)

   (fput Tname kolvo $value (- S N))

   (fput Tname kolvo $value 0)

  )  

 )

)  

)

пример

(fget sdram kolvo)  => (0)

(inputx sklad sdram 10)

(outputx sklad sdram 2)

(fget sdram kolvo)  => (8)


 

А также другие работы, которые могут Вас заинтересовать

51622. Властивості степенів з натуральним показником 75.5 KB
  Тип уроку : урок застосування отриманих умінь і навичок інтерактивний урок Інтерактивні технології : вирішення проблеми аналіз ситуації займи позицію оцінювальна дискусія Обладнання : підручники збірники задач таблиці інтерактивна дошка диференційовані завдання роздатковий матеріал завдання на картках контрольні запитання Зміст урок Організаційний момент. Перевірка домашнього завдання...
51624. Это я, это я, это все мои друзья 35 KB
  У меня руки чистые я только что их вымыл с мылом Ты не мог их вымыть с мылом потому что первоклассник Пупкин на перемене съел мыло и его отвезли в больницу. Ну правильно я попросил мыло у завхоза. Он не мог тебе дать мыло потому что в стране дефицит и мыло выдают по талонам а у завхоза строгий учет Я подкупил завхоза бутылкой спиртного Гражданам СССР не достигшим 21 года спиртные напитки не отпускаются А у меня папа директор ликеро водочного завода.