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)


 

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

61160. ОДНОРІДНІ ЧЛЕНИ РЕЧЕННЯ ІЗ СПОЛУЧНИКОВИМ, БЕЗСПОЛУЧНИКОВИМ І ЗМІШАНИМ ЗВ’ЯЗКОМ 68.5 KB
  Поглибити знання восьмикласників про однорідні члени речення; сформувати загальнопізнавальні вміння знаходити однорідні члени речення та визначати їх вид, аналізувати зв’язок між ними (сполучниковий, безсполучниковий чи змішаний), а також смислові відношення...
61161. РЕЧЕННЯ З КІЛЬКОМА РЯДАМИ ОДНОРІДНИХ ЧЛЕНІВ 130 KB
  Правопис: кома між однорідними членами речення. Міжпредметні звязки: речення з кількома рядами однорідних членів як засіб художньої виразності література. Які члени речення називаються однорідними.
61162. ОДНОРІДНІ Й НЕОДНОРІДНІ ОЗНАЧЕННЯ 28.44 KB
  Ознайомити учнів з поняттям про однорідні й неоднорідні означення, сформувати загальнопізнавальні вміння знаходити однорідні й неоднорідні означення, з’ясовувати їх роль у реченні; правильно розставляти розділові знаки та інтонувати речення з однорідними й неоднорідними означеннями
61163. КОМА МІЖ ОДНОРІДНИМИ ЧЛЕНАМИ РЕЧЕННЯ 25.48 KB
  Визначити з учнями основні випадки вживання коми в реченнях з однорідними членами, сформувати загальнопізнавальні вміння правильно ставити коми між однорідними членами речення, підпорядковуючи їх пунктуаційним правилам; удосконалити навички інтонування речень з однорідними членами...
61164. ПИСЬМОВИЙ ТВІР-РОЗДУМ НА МОРАЛЬНО-ЕТИЧНУ (ЧИ СУСПІЛЬНУ) ТЕМУ В ПУБЛІЦИСТИЧНОМУ СТИЛІ 44.5 KB
  Ми вступаємо в життя в епоху інтенсивного розвитку не лише науки і техніки а й негативних наслідків науковотехнічного прогресу: забруднення повітря високий рівень шуму та радіації страшні людські хвороби.
61165. УЗАГАЛЬНЮВАЛЬНІ СЛОВА В РЕЧЕННЯХ З ОДНОРІДНИМИ ЧЛЕНАМИ. ДВОКРАПКА Й ТИРЕ ПРИ УЗАГАЛЬНЮВАЛЬНИХ СЛОВАХ 440.02 KB
  Поглибити знання восьмикласників про однорідні члени речення, удосконалити вміння знаходити узагальнювальні слова при них, домогтися засвоєння учнями правил уживання розділових знаків при узагальнювальних словах, сформувати вміння пояснювати розділові знаки в реченнях з однорідними членами за допомогою пунктуаційних правил
61166. КОНТРОЛЬНЕ АУДІЮВАННЯ ТЕКСТУ ПУБЛІЦИСТИЧНОГО СТИЛЮ 51 KB
  Стічні води промислових підприємств забруднюють прісні водойми. У результаті цього забруднення повністю змінюються фізичні властивості води підвищується температура зменшується прозорість зявляються забарвлення присмаки запахи.
61167. ЗВЕРТАННЯ НЕПОШИРЕНІ Й ПОШИРЕНІ 29.73 KB
  Поглибити знання восьмикласників про звертання, їх стилістичну роль у мовленні; розвивати вміння виділяти в реченнях непоширені й поширені звертання, правильно інтонувати речення зі звертаннями; формувати загальнопізнавальні вміння визначати спосіб морфологічного вираження звертань