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)


 

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

63666. Aggregate demand and Keynesian multiplier 417 KB
  In the model AD-AS the interest rate is an exogenous variable. The main purpose of the IS-LM model is to integrate money market and goods market into the single system. Thus, interest rate turns into endogenous variable. IS-LM – a model of money-goods equilibrium which helps to define factors influencing AD.
63668. Норма права 202.28 KB
  Общеобязательность. Норма права предписывает правильный и обязательный образ действий. Носит общий характер, выступает в качестве равного одинакового правила для всех и каждого, кто оказывается в сфере ее действия.
63670. АНТИКРИЗОВЕ ФІНАНСОВЕ УПРАВЛІННЯ ПІДПРИЄМСТВОМ 658.98 KB
  Сутність та основні елементи антикризового фінансового управління Необхідність оволодіння основами антикризового фінансового управління зумовлена тим що в умовах ринкової економіки підприємства здійснюють свою фінансовогосподарську діяльність перебуваючи...
63671. Мировая экономика: история и современность 1 MB
  Сегодня страны и регионы мира тесно связаны между собой не только широкомасштабными товарными и финансовыми потоками но и международным производством и бизнесом информационными технологиями потоками научных знаний тесными культурными и иными контактами. Лекция на двух языках.
63672. Природа человека и смысл его существования 225.5 KB
  Она продиктована научнотехнической революцией развитием человечества как мирового сообщества обострением глобальных проблем и негативными последствиями человеческих издержек прогресса современной эпохи.
63673. Измерение скоростей деления в реакторах, определение нуклидного состава отработанного топлива 5.54 MB
  Непосредственно измерялось распределение интенсивности линии 1596 кэВ gизлучения данного осколка деления с помощью сцинтилляционного на основе NJ детектора. Пик с энергией 1596 кэВ соответствует 140L.