Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаба_лисп.rtf
Скачиваний:
19
Добавлен:
21.07.2019
Размер:
3.69 Mб
Скачать

2.2. Лабораторная работа по теме «Знакомство с основными понятиями в системе программирования Лисп»

Учебные цели: Знакомство с системой программирования Лисп. Пpиобpетение умений и навыков по pазpаботки пpостейших пpогpамм с pазличными типами данных

Порядок выполнения работы:

  • Изучить краткое теоретическое введение по по программированию на языке Лисп.

  • Выполнить предложенные задания из практической части в соответствии с предложенным преподавателем варианта.

  • Оформить отчет по лабораторной работе

Практическая часть

1. Представить следующие списки в виде списочных ячеек:

  • '(open close halph)

  • '((TOOL) (call))

  • '((open1) (close2) (halph3))

  • '((TOOL1) (call2)) ((sell)))

  • '((one) for all (and(me(for you))))

  • '(((TOOL) (call)) ((sell)))

2. Используя только функции CAR и CDR, написать выражения,

возвращающие:

1) второй; 2) третий; 3) четвертый элементы заданного списка.

3. Что будет в результате вычисления выражений

а) (CAADR '((blue cube) (red pyramid))) c) (CADR '((abc) (def) (ghi)))

b) (CDAR '((abc) (def) (ghi))) d) (CADDR '((abc) (def) (ghi)))

4. Напишите результат вычисления выражений:

(list 'Fred 'and Wilma) (cons 'Fred '(and Wilma))

(list 'Fred '(and Wilma)) (cons 'Fred '(Wilma))

(cons Nil Nil) (list Nil Nil)

(cons T Nil) (list T Nil)

(cons Nil T) (list Nil T)

(list Nil) (cons T (list Nil))

(cons (T) Nil) (list (T) Nil)

(list '(one two) '(free temp)) (cons '(one two) '(free temp))

5. Написать функцию (f ar1 ar2 ar3 ar4) -> ((ar1 ar2) (ar3 ar4)).

Написать функцию (f ar1 ar2) -> ((ar1) (ar2)).

Написать функцию (f ar1) -> (((ar1))).

Представить результаты в виде списочных ячеек.

6. Запишите последовательности вызовов CAR и CDR, выделяющие из

приведенных ниже списков символ «а».

а) (1 2 3 а 4)

б) (1 2 3 4 а)

в) ((1) (2 3) (а 4))

г) ((1) ((2 3 а) (4)))

д) ((1) ((2 3 а 4)))

е) (1 (2 ((3 4 (5 (6 а))))))

7. Каково значение каждого из следующих выражений:

  • (ATOM (CAR (QUOTE ((1 2) 3 4))));

  • (NULL (CDDR (QUOTE ((5 6) (7 8)))));

  • (EQUAL (CAR (QUOTE ((7 )))) (CDR (QUOTE (5 7))));

  • (ZEROP (CADDDR (QUOTE (3 2 1 0))));

8. Проделайте следующие вычисления с помощью интерпретатора Лиспа:

а) 3.234*(45.6+2.43)

б) 55+21.3+1.54*2.5432-32

в) (34-21.5676-43)/(342+32*4.1)

9. Определите значения следующих выражений:

а) ‘(+ 2 (* 3 5))

б) (+ 2 ‘(* 3 5))

в) (+ 2 (’ * 3 5))

г) (+ 2 (* 3 ’5))

д) (quote ‘quote)

е) (quote 6)

Оформление отчета

Отчет по работе должен включать исходные тексты выполненных программ и целями, с которыми они работали, и должен содержать:

  • Цель работы.

  • Описание всех заданий с внутренними целями и полученными результатами