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)


 

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

3461. Изучение нормального распределения случайной величины на доске Гальтона 168.5 KB
  Изучение нормального распределения случайной величины на доске Гальтона Получение экспериментальной кривой распределения случайной величины, сравнение ее с теоретической кривой нормального распределения. Расчет оценочных значений числовых параметров...
3462. Динамика материальной точки 169 KB
  Динамика материальной точки.  Законы Ньютона. Основное уравнение динамики поступательного движения.  Виды взаимодействий. Силы упругости и трения.  Закон Всемирного тяготения. Сила тяжести и вес тела.  Законы Ньютона. Основное ур...
3463. Внешнеторговая деятельность как составная часть внешнеэкономической деятельности 30.5 KB
  Сфера действия соглашения распространяется на товары, которые фактически пересекли ТГ ТС при ввозе на единую ТТ ТС или если товары заявлены к ввозу при применении предварительного декларирования...
3464. Изучение свободных колебаний пружинного маятника 177.5 KB
  Изучение свободных колебаний пружинного маятника. Цель работы: на примере пружинного маятника изучить основные законы колебательного движения, проверить формулу периода колебаний пружинного маятника, определить основные характеристики его затухающих...
3465. Изучение статистических закономерностей и методов обработки результатов эксперимента 158.5 KB
  Изучение статистических закономерностей и методов обработки результатов эксперимента Моделирование нормального распределения случайной величины на примере измерения сопротивлений резисторов. Освоение методики статистической обработки результатов пря...
3466. Визначення моменту інерції крутильного маятника 217 KB
  Визначення моменту інерції крутильного маятника Мета роботи: Визначити момент інерції крутильного маятника. Прилади та обладнання: Крутильний маятник, секундомір, штангенциркуль, металеві диски. Опис вимірювального пристрою...
3467. Звенья тела как рычаги и маятники 14.31 KB
  Звенья тела как рычаги и маятники Разбиение тела человека на звенья позволяет представить эти звенья как механические рычаги и маятники, потому что все эти звенья имеют точки соединения, которые можно рассматривать либо как точки опоры (для рычага)...
3468. Законы сохранения импульса и момента импульса – баллистический маятник 19.52 KB
  Законы сохранения импульса и момента импульса – баллистический маятник Закон сохранения импульса – баллистический маятник Используя математический баллистический маятник определяют скорость снаряда пушки и сравнивают с результатами измерен...
3469. Основы МКТ 20.42 KB
  Основы МКТ Основные положения МКТ. Все тела состоят из частиц: молекул, атомов, ионов и т.д. Частицы вещества хаотически движутся. Частицы взаимодействуют между собой. Характер взаимодействия зависит от расстояния между молекулами. Идеальный газ. Ид...