20975

Ассоциативные списки и списки свойств

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

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

DEFUN F27 L COND NULL L NIL T CONS LENGTH CDR CAR L F27 CDR L пример SETQ SCLAD 'PROCESSORS MATHERBOARDS MEMORY PUT ‘PROCESSORS ‘CORE2DUO 5 PUT ‘PROCESSORS ‘CORE2EXTREME 8 PUT ‘MATHERBOARDS ‘ASUSp6t7 1 PUT ‘MATHERBOARDS ‘ASUSp6t6 12 PUT ‘MATHERBOARDS ‘INTELdp55kg 34 PUT ‘MEMORY ‘DDR 23 PUT ‘MEMORY ‘DDR2 34 PUT ‘MEMORY ‘DDR3 15 PUT ‘MEMORY ‘SDRAM 15 F27 SCLAD = 2 3 4 Исходный список содержит имена объектов списки свойств которых содержат некоторую информацию. DEFUN F29 L X COND...

Русский

2013-08-02

23.98 KB

1 чел.

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

Ассоциативные списки и списки свойств.

  1.  Извлечь из ассоциативного списка элементы,  ключи  которых удовлетворяют заданным условиям.

; Извлечение из ассоциативного списка (L) всех ключей, удовлетворяющих (F).

(DEFUN F26 (L F)

(COND ((NULL L) NIL)

((FUNCALL F (CAR (CAR L))) (CONS (CDR (CAR L)) (F26 F (CDR L))))

(T (F26 F (CDR L)))

)

)

пример

(F26 ‘((a . 1) (b . 2) (c . 3) (-2 . 4) (3 . 5) (-6 . 6)) ‘MINUSP)  => (4 6)

(F26 ‘((a . 1) (b . 2) (c . 3) (-2 . 4) (3 . 5) (-6 . 6)) ‘SYMBOLP)  => (1 2 3)

  1.  Исходный список содержит имена  объектов,  списки  свойств которых содержат некоторую информацию.  Определить для каждого объекта количество пар <ключ-значение>.

(DEFUN F27 (L)

(COND ((NULL L) NIL)

    (T (CONS (LENGTH (CDR (CAR L))) (F27 (CDR L)) ))

 )

)

пример

(SETQ SCLAD '(PROCESSORS MATHERBOARDS MEMORY))

(PUT ‘PROCESSORS ‘CORE2DUO 5)

(PUT ‘PROCESSORS ‘CORE2EXTREME 8)

(PUT ‘MATHERBOARDS ‘ASUSp6t7 1)

(PUT ‘MATHERBOARDS ‘ASUSp6t6 12)

(PUT ‘MATHERBOARDS ‘INTELdp55kg 34)

(PUT ‘MEMORY ‘DDR 23)

(PUT ‘MEMORY ‘DDR2 34)

(PUT ‘MEMORY ‘DDR3 15)

(PUT ‘MEMORY ‘SDRAM 15)

(F27 SCLAD)  => (2 3 4)

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

; Поиск флага в списке

(DEFUN F28_2 (S F)

(COND ((NULL (FLAGP S F)) 0)

(T 1)

)

)

(DEFUN F28_1 (S L)

(SETQ P 0)

(LOOP

((NULL L) (COND ((> P 1) T) (T NIL)))

(SETQ P (+ P (F28_2 S (CAR L))))

(SETQ L (CDR L))

)

)

(DEFUN F28 (L1 L2)

(SETQ K NIL)

(LOOP

((NULL L1) K)

(IF (F28_1 (CAR L1) L2)

(SETQ K (APPEND K (LIST (CAR L1))))

)

(SETQ L1 (CDR L1))

)

)

пример

(flag S1 'F1)

(flag S1 'F2)

(flag S2 'F3)

(flag S2 'F4)

(flag S2 'F2)

(flag S3 'F3)

(flag S3 'F4)

(flag S4 'F1)

(flag S4 'F2)

(flag S4 'F3)

(F28 ‘(S1 S2 S3 S4) ‘(F1 F2 F3))  => (S1 S2 S4)

  1.  Пусть в списке свойств атома может быть специальное свойство с ключом ISA,  значение которого является именем другого списка свойств, называемого списком-прототипом, из которого могут наследоваться недостающие свойства.  Написать функцию  (GET-ISA  <имя списка свойств>  <имя  свойства>),  которая  в  случае отсутствия искомого свойства в исходном списке выдает значение первого найденного такого же свойства среди всех ISA-прототипов данного списка свойств.

(DEFUN F29 (L X)

(COND ((GET L X) (GET L X))

(T (SETQ LP (GET L 'ISA)) (GET LP X))

)

)

пример

(put Y 's1 1)

(put Y 's2 2)

(put Y 'ISA X)

(put Y 's3 3)

(put Y 's4 4)

(put X 'S5 5)

(put X 'S6 6)

(put X 'S7 7)

(put X 'S8 8)

(put X 'S9 9)

(F29 Y S3)  => 3

(F29 Y S7)  => 7

  1.  На  складе имеется несколько видов продукции.  Ассортимент каждого вида продукции представлен также несколькими  наименованиями. Задать информацию об имеющихся на складе товарах и их количестве с помощью списков свойств. Определить функции, позволяющие получать информацию о  наличии  некоторого товара на складе и корректирующие информацию о наличии при завозе и вывозе заданного количества товара.

; Определение наличия товара (X) на складе (S)

(DEFUN GETX (S X)

(LOOP

 ((NULL S) TOVAR_NA_SKLADE_OTSUTSVUET)

 ((GET (CAR S) X) (GET (CAR S) X))

 (SETQ S (CDR S))

)

)

; Вывоз товара (X) в количестве (N) со склада (S)

(DEFUN OUTPUTX (S X N)

(LOOP

((NULL S) TOVAR_NA_SKLADE_OTSUTSVUET)

((GET (CAR S) X)

(COND ((< (- (GET (CAR S) X) N) 0) NEDOSTATOCHNO_TOVARA_NA_SCLADE)

(T ((PUT (CAR S) X (- (GET (CAR S) X) N)) TOVAR_USPESHNO_VIVEZEN))                      

)

)

(SETQ S (CDR S))

)

)

; Завоз товара (X) в количестве (N) на склад (S)

(DEFUN INPUTX (S X N)

(LOOP

((NULL S) TOVAR_NA_SKLADE_OTSUTSVUET)

((GET (CAR S) X) (PUT (CAR S) X (+ (GET (CAR S) X) N)) TOVAR_USPESHNO_ZAVEZEN)

(SETQ S (CDR S))

)

)

пример

; Формирование склада комплектующих ПК

(SETQ SCLAD '(PROCESSORS MATHERBOARDS MEMORY))

(PUT ‘PROCESSORS ‘CORE2DUO 5)

(PUT ‘PROCESSORS ‘CORE2EXTREME 8)

(PUT ‘PROCESSORS ‘CORE2QUAD 23)

(PUT ‘PROCESSORS ‘COREi7 2)

(PUT ‘MATHERBOARDS ‘ASUSp6t7 1)

(PUT ‘MATHERBOARDS ‘ASUSp6t6 12)

(PUT ‘MATHERBOARDS ‘INTELdp55kg 34)

(PUT ‘MATHERBOARDS ‘MSIp55 65)

(PUT ‘MEMORY ‘DDR 23)

(PUT ‘MEMORY ‘DDR2 34)

(PUT ‘MEMORY ‘DDR3 15)

(PUT ‘MEMORY ‘SDRAM 15)

(GETX SCLAD ‘DDR2)    => 34

(OUTPUTX SCLAD ‘ASUSp6t6 4)  => TOVAR_USPESHNO_VIVEZEN

(GETX SCLAD ‘ASUSp6t6)   => 8

(INPUTX SCLAD ‘ASUSp6t6 20)  => TOVAR_USPESHNO_ZAVEZEN

(GETX SCLAD ‘ASUSp6t6)   => 28

(OUTPUTX SCLAD ‘ASUSp6t6 40)  => NEDOSTATOCHNO_TOVARA_NA_SCLADE


 

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

83274. Створення навчальної ситуації. Актуалізація опорних знань 123.5 KB
  Діти, сьогодні до нас на урок прийшли гості. Привітайтеся з ними. Сьогодні у вас перший відкритий урок. Продемонструйте свій настрій. Я сподіваюся, що настрій у вас поліпшиться упродовж уроку. Цікаво вам дізнатись, що сьогодні може статись? Тож всідайтеся зручніше, починаємо скоріше!
83275. Текст – розповідь. Екскурсія в село Шевченкове 117 KB
  Обладнання: матеріал для кросворду мультимедійна презентація Екскурсія в село Шевченкове Хід уроку Організація класу Мотивація навчальної діяльності Хвилинка поезії Учні читають акровірш Ти мусиш нам співця назвати Адже умів лиш він один Рабів німих так захищати.
83276. Елементи графічної грамоти. Види ліній. Виготовлення об’ємних фігур з паперу і картону. Об’ємний виріб «Ялинка-складанка» 32.5 KB
  Мета уроку: ознайомити учнів з елементами графічної грамоти – видами ліній, навчити читати креслення, вчити використовувати дані знання на практиці, виготовляючи ялинку-складанку; розвивати просторову уяву, конструктивне мислення; виховувати працелюбність, інтерес до праці, естетичний смак...
83277. Понятие о строении человека 164.5 KB
  Давайте поговорим о них: какие они и как мы к ним относимся. Давайте с вами вспомним русскую народную сказку О Царевне Лягушке Дети комментируют сюжет. После просмотра мультфильма давайте опишем образ который вы увидели дети описывают внешний вид и характер главного героя.
83278. Урок мислення 53 KB
  Мета: Формувати уявлення про значення води як одну з найпоширеніших і незвичайних речовин у природі поглибити уявлення про різні стани води формувати навички самостійного перетворення води вчити експериментувати.
83279. Відтворювання цілого з частин. «Збери картинку», «Шматочок» 145 KB
  Активізувати пізнавальну діяльність учнів; сприяти розвитку пам’яті учнів, уяви, мислення, мови, моторики. Формувати в учнів просторові уявлення, привчати їх до самостійного творчого мислення. Розширювати кругозір, розвивати прагнення бути активним у виконанні колективних творчих вправ.
83280. Осінь щедра, прощавай! 82.5 KB
  Мета: вчити бачити красу рідного краю, милуватися її дарами. Розвивати спостережливість, творчі здібності. Виховувати любов до праці, шанобливе ставлення до хліба, повагу до традицій рідного краю.
83281. Розквітни красою на щастя, на долю, моя Україно 573 KB
  Обладнання: книга - Усний журнал із оформленням сторінок карта України символіка народні символи: кетяги калини барвінок чорнобривці вишиті рушники образ Матері Божої вінок із квітів символів колоски пшениці дитячі малюнки із краєвидами фотоматеріали міста дитячі журнали Моя країна...
83282. Про доброту і милосердя 51.5 KB
  Ще з давніх часів доброта і милосердя були в традиціях нашого народу. Природним вважалося допомогти знедоленому, нещасному,поділитися шматком хліба, дати притулок бездомному, захистити старість,немічність, скривдженого. Добро виховується в наших душах і серцях старанням і бажанням його творити.