Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Точечная запись (нотация) списков
Тема : Точечная запись списков. Основные термины, ключевые слова: внутреннее представление списков, списочная ячейка, точечная пара. Инструмент для выполнения работы: интерпретатор языка Lisp под Windows – XLispWin. Содержание отчета: - титульный лист установленного образца; - краткие теоретические сведения; - задание на работу; - точечная запись списка согласно варианту; - выводы по работе. Основные теоретические сведения. Оперативная память машины, на которой работает Лисп, логически разбивается на области, которые называются списочными ячейками. Списочная ячейка состоит из двух частей, поля CAR и CDR. Каждое поле содержит указатель на объект или другую списочную ячейку. Указатели между ячейками образуют цепочку, по которой можно из предыдущей ячейки попасть в следующую. Графически списочная ячейка представляется прямоугольником (рис. 1), разделенным на две части – поля CAR и CDR.
Рис. 1. Графическое представление точечной пары
Изображение одноуровнего списка состоит из последовательности ячеек, связанных друг с другом через указатели в правых частях ячеек (рис. 2). Правое поле последней ячейки списка в качестве признака конца списка ссылается на пустой список (ячейка перечеркнута). Указатели полей CAR ячеек списка List ссылаются на атомарные структуры, в данном случае на атомы A, B, C. List
A B C
Рис. 2. Внутренне представление одноуровнего списка (A B C)
При определении базового примитива CONS упоминалось, что ее вторым аргументом обязательно должен быть список. Сейчас это ограничение снимается и в дальнейшем результатом функции (cons ‘a ‘b) будет являться новая структура (a. b), называемая точечной парой. Точечная пара – это не список, а более общее символьное выражение. Название происходит от использования в ее записи символа точки, обязательно выделенного с обеих сторон пробелами. Выражение слева от точки (атом, список, другая точечная пара) соответствует полю CAR, а выражение с права от точки – полю CDR. Точечная нотация позволяет расширить класс объектов, представляемых с помощью списков. Ситуацию сравнивают с использованием дробей или комплексных чисел в арифметике. Любой список можно записать в точечной нотации. Преобразование можно осуществить на всех уровнях следующим образом: (a1 a2 …an) ↔ (a1. (a2. …(an. NIL)…)). Например, список (a b c) в точечной нотации представляется следующим образом (a. (b. (c. NIL))). Внимание! Не забывайте о пробелах слева и справа от символа точки. Интерпретатор, получив подобное выражение, транслирует его к списочной структуре. Точечные пары на практике используются при определении ассоциативных списков, в системном программировании или при умышленной экономии памяти машины, если того требует поставленная задача. Кроме того, использование точечной записи может несколько сократить объем вычислений.
Индивидуальные задания Необходимо записать предложенный список в точечной нотации, оттранслировать запись и получить исходный список. Перед записью точечной нотации использовать блокировку вычислений или использовать псевдофункцию SETQ, например, для рассмотренного ранее в тексте примера: ‘ (a. (b. (c. NIL))) или (setq dotted_pair ‘(a. (b. (c. NIL)))). Варианты заданий. 1. (a (b c) (d) e); 2. ((a s) d (e f)); 3. (a s (e r) (y)); 4. ((a s d)(q w e)); 5. ((a)(b)(c)); 6. (a () b (c) d); 7. (() b (c d)); 8. (a s d (r) t); 9. (q (w (e r) t) a); 10. (a ((s)) b (w)); 11. (((s a) q) d); 12. (q (a s) ((z x))); 13. (((a(b c))) t); 14. (a (()) b (c d)); 15. ((a s d)()(q w e)); 16. (() (a s d) ()); 17. (q (a s) f (w e)); 18. ((a s d) (g) (q w e)); 19. (s () d () e); 20. ((a s)(e)(q w)); Для каждого варианта необходимо выполнить собственное задание и задание под номером на 1 больше. Например, первый вариант выполняет задание 1 и 2, второй – 2 и 3, etc.
Лабораторная работа 10 Рекурсия в Лиспе Тема : основы рекурсивного программирования. Основные термины, ключевые слова: рекурсия, рекурсия по аргументам, рекурсия по значению, простая рекурсия, параллельная рекурсия, взаимная рекурсия, рекурсия более высокого порядка. Инструмент для выполнения работы: интерпретатор языка Lisp под Windows –XLispWin. Содержание отчета: - титульный лист установленного образца; - краткие теоретические сведения; - задание на работу; - программа на языке Лисп, описывающая индивидуальное задание; - выводы по работе. Популярное:
|
Последнее изменение этой страницы: 2017-03-09; Просмотров: 1333; Нарушение авторского права страницы