20978

Присоединённые процедуры. Организация сетей фреймов

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

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

deframeq flat1 Street value Prospect_Mira house value 8 flat value 10 floor value 2 square value 85 roomsnumber value 2 priceclass value 1 price value GetPrice status: eval deframeq flat2 Street value Gagarina house value 1 flat value 123 floor value 18 square value 78 roomsnumber value 3 priceclass value 2 price value GetPrice status: eval deframeq flat3 Street value Lesnaya house value 6 flat...

Русский

2013-08-02

25.93 KB

1 чел.

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

Присоединённые процедуры. Организация сетей фреймов.

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

(deframeq flat1

(Street  ($value (Prospect_Mira)))

(house  ($value (8)))

(flat  ($value (10)))

(floor  ($value (2)))

(square  ($value (85)))

(roomsnumber ($value (2)))

(priceclass ($value (1)))

(price  ($value (GetPrice (status: eval))))

)

(deframeq flat2

(Street  ($value (Gagarina)))

(house  ($value (1)))

(flat  ($value (123)))

(floor  ($value (18)))

(square  ($value (78)))

(roomsnumber ($value (3)))

(priceclass ($value (2)))

(price  ($value (GetPrice (status: eval))))

)

(deframeq flat3

(Street  ($value (Lesnaya)))

(house  ($value (6)))

(flat  ($value (111)))

(floor  ($value (1)))

(square  ($value (99)))

(roomsnumber ($value (4)))

(priceclass ($value (3)))

(price  ($value (GetPrice (status: eval))))

)

(deframeq flat4

(Street  ($value (Pobedi)))

(house  ($value (2)))

(flat  ($value (121)))

(floor  ($value (5)))

(square  ($value (102)))

(roomsnumber ($value (4)))

(priceclass ($value (1)))

(price  ($value (GetPrice (status: eval))))

)

(deframeq flat5

(Street  ($value (Zheleznodorozhnaya)))

(house  ($value (21)))

(flat  ($value (45)))

(floor  ($value (12)))

(square  ($value (67)))

(roomsnumber ($value (1)))

(priceclass ($value (4)))

(price  ($value (GetPrice (status: eval))))

)

(deframeq flat6

(Street  ($value (Lenina)))

(house  ($value (1)))

(flat  ($value (100)))

(floor  ($value (14)))

(square  ($value (92)))

(roomsnumber ($value (2)))

(priceclass ($value (2)))

(price  ($value (GetPrice (status: eval))))

)

(deframeq flat7

(Street  ($value (Gagarina)))

(house  ($value (16)))

(flat  ($value (230)))

(floor  ($value (24)))

(square  ($value (135)))

(roomsnumber ($value (4)))

(priceclass ($value (2)))

(price  ($value (GetPrice (status: eval))))

)

(deframeq flat8

(Street  ($value (Prospect_Mira)))

(house  ($value (9)))

(flat  ($value (3)))

(floor  ($value (1)))

(square  ($value (54)))

(roomsnumber ($value (1)))

(priceclass ($value (4)))

(price  ($value (GetPrice (status: eval))))

)

(deframeq flat9

(Street  ($value (Prospect_Mira)))

(house  ($value (62)))

(flat  ($value (120)))

(floor  ($value (7)))

(square  ($value (124)))

(roomsnumber ($value (3)))

(priceclass ($value (2)))

(price  ($value (GetPrice (status: eval))))

)

(deframeq flat10

(Street  ($value (Lenina)))

(house  ($value (15)))

(flat  ($value (83)))

(floor  ($value (4)))

(square  ($value (91)))

(roomsnumber ($value (6)))

(priceclass ($value (5)))

(price  ($value (GetPrice (status: eval))))

)

(passertq GetPrice () (* (car (fget :frame square)) (car (fget :frame priceclass)) 20000))

(setq flats '(flat1 flat2 flat3 flat4 flat5 flat6 flat7 flat8 flat9 flat10))

(defun Search (Flist P_Street P_floor P_SquareMin P_SquareMax P_roomsnumber P_Pricemin P_Pricemax)

(cond

((not (isframes Flist)) Error!_Wrong_frames_list!)

((and (not (equal P_floor '*)) (or (not (numberp P_floor)) (<= P_floor 0))) Error!_Wrong_floor_argument!)

((and (not (equal P_SquareMin '*)) (or (not (numberp P_SquareMin)) (<= P_SquareMin 0))) Error!_Wrong_square_diapazon!)

((and (not (equal P_Squaremax '*)) (or (not (numberp P_Squaremax)) (<= P_Squaremax 0))) Error!_Wrong_square_diapazon!)

((and (not (equal P_Squaremax '*)) (equal P_Squaremin '*)) Error!_Wrong_square_diapazon!)

((and (not (equal P_Squaremin '*)) (equal P_Squaremax '*)) Error!_Wrong_square_diapazon!)

((and (not (equal P_roomsnumber '*)) (or (not (numberp P_roomsnumber)) (<= P_roomsnumber 0))) Error!_Wrong_rooms_number_argument!)

((and (not (equal P_priceMin '*)) (or (not (numberp P_priceMin)) (<= P_priceMin 0))) Error!_Wrong_price_diapazon!)

((and (not (equal P_pricemax '*)) (or (not (numberp P_pricemax)) (<= P_pricemax 0))) Error!_Wrong_price_diapazon!)

((and (not (equal P_pricemax '*)) (equal P_pricemin '*)) Error!_Wrong_price_diapazon!)

((and (not (equal P_pricemin '*)) (equal P_pricemax '*)) Error!_Wrong_price_diapazon!)

(T

(setq result '())

(loop

((null flist) (outputresult result))

(if

(and

 (or (equal P_street '*) (equal P_Street (car (fget (car flist) street))))

 (or (equal P_floor '*) (equal P_floor (car (fget (car flist) floor))))

 (or (equal P_squaremin '*) (and (<= P_Squaremin (car (fget (car flist) square))) (>= P_Squaremax (car (fget (car flist) square)))))

 (or (equal P_roomsnumber '*) (equal P_roomsnumber (car (fget (car flist) roomsnumber))))

 (or (equal P_pricemin '*) (and (<= P_pricemin (car (fget (car flist) price))) (>= P_pricemax (car (fget (car flist) price)))))

)

(setq result (append result (list (car flist))))

)

(setq flist (cdr flist))

)

)

)

)

(defun isframes (flist)

(cond

 ((null flist) T)

 ((Null (member (car flist) (cdr *FRAMES*))) NIL)

 (T (isframes (cdr flist)))

)

)

(defun outputresult (flist)

(cond

 ((null flist) NO_matches_found)

 (T

  (loop

   ((null flist) -----------------------------)

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

   (PRINT (car flist))

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

   (PRINT

(list

ULIZA: (car (fget (car flist) street))

D: (car (fget (car flist) house))

KV: (car (fget (car flist) flat))

)

)

   (PRINT (list FLOOR: (car (fget (car flist) floor))))

   (PRINT (list ROOMS: (car (fget (car flist) roomsnumber))))

   (PRINT (list SQUARE: (car (fget (car flist) square))))

   (PRINT (list PRICE: (car (fget (car flist) price)) $))

   (setq flist (cdr flist))  

  )

 )

)

)

пример

(search flast * 1 80 100 * * *)  => ...

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

(deframeq Xframe

(Secret ($value (FRL))

 ($IF-needed (checkpassword (status: eval))))

)

(passertq checkpassword ()

(print PASSWORD?)

(if (equal (read input) qwerty)

 (car (fget :frame secret $value))

 Wrong_password!

)

)

пример

(fneed xframe secret)  => PASSWORD?

1234    => WRONG_PASSWORD!

(fneed xframe secret)  => PASSWORD?

QWERTY   => (FRL)


 

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

36655. ТЕОРІЇ ЕКОНОМІЧНОГО РОЗВИТКУ ТА ЗРОСТАННЯ НАЦІОНАЛЬНОЇ ЕКОНОМІКИ 135.5 KB
  Теорії економічного розвитку та зростання національної економіки ТЕМА 10 ТЕОРІЇ ЕКОНОМІЧНОГО РОЗВИТКУ ТА ЗРОСТАННЯ НАЦІОНАЛЬНОЇ ЕКОНОМІКИ 1. Теорії економічного розвитку країн що розвиваються 3. Концепція сталого розвитку 1. Два останніх передрікали песимістичний сценарій розвитку суспільства голод та вимирання який поки що не справдився.
36656. Облік власного капіталу і розподілу прибутку в товариствах 68.5 KB
  Облік власного капіталу і розподілу прибутку в товариствах. План Суть та порядок створення товариства. Облік власного капіталу товариства. Порядок розподілу прибутку товариства його облік.
36657. ОХОРОНА ПРАВА НА ОБ’ЄКТИ ІНТЕЛЕКТУАЛЬНОЇ ВЛАСНОСТІ 74.5 KB
  Основним способом охорони об’єктів інтелектуальної власності є видача автору або іншому суб’єкту права на об’єкт інтелектуальної власності охоронного документа: патенту чи свідоцтва.
36658. ОБЛІК КОРОТКОСТРОКОВИХ ЗОБОВ’ЯЗАНЬ 85 KB
  ОБЛІК КОРОТКОСТРОКОВИХ ЗОБОВ’ЯЗАНЬ План Поняття оцінка та види короткострокових зобов’язань пасивів. Облік заробітної плати і зобов’язань по заробітній платі. Поняття оцінка та види короткострокових зобов’язань пасивів підприємства. Зобов’язання – це заборгованість підприємства іншим підприємствам організаціям та особам яка виникає внаслідок здійснення фірмою різних угод.
36659. ПРОГНОЗУВАННЯ, ПЛАНУВАННЯ ТА ПРОГРАМУВАННЯ РОЗВИТКУ НАЦІОНАЛЬНОЇ ЕКОНОМІКИ 135.5 KB
  Прогнозування розвитку національної економіки 2. Макроекономічне планування розвитку національної економіки 3. Прогнозування розвитку національної економіки В умовах ринкової економіки прогнозування є важливою складовою цілісного механізму управління національною економікою.
36660. Україна у 60-80-ті роки ХХ століття 86.5 KB
  Після завершення Другої світової війни Радянський Союз постав перед проблемою відбудови значною мірою зруйнованої економіки. Особливо постраждала Україна
36661. Основна теорема алгебри 379 KB
  Будь-який многочлен, степінь якого n більше 0 має в комплексній області рівноn коренів, серед котрих можуть бути і рівні між собою. Якщо попарно різні корені многочлена степеняn, то попарно взаємно прості.
36662. Облік товарно-матеріальних запасів. Система обліку та методи оцінки товарно-матеріальних запасів 97 KB
  Товарно-матеріальними запасами вважаються: товари, які були куплені підприємством і зберігаються на складі для наступної реалізації: готова продукція, напівфабрикати та незавершене виробництво: різні матеріали, що зберігаються на складі і призначені для переробки в процесі виробництва або для забезпечення виробничого процесу.
36663. Організаційно-методичні принципи сертифікації в Україні 115 KB
  Прискоренню розвитку національної системи сертифікації сприяє активне міжнародне співробітництво України в галузі технічного регулювання, безпосередня участь у роботі міжнародних і регіональних організацій та їх технічних комітетів.