Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Изучение системных свойств символа в диалекте языка ЛИСП.DOC
Скачиваний:
13
Добавлен:
01.05.2014
Размер:
172 Кб
Скачать

Камчатский Государственный технический университет

Факультет информационных технологий

Кафедра систем управления

Методические указания

по выполнению курсового проектирования

по дисциплине

«Функциональное и логическое программирование»

Петропавловск-Камчатский

2005

Тема курсового проектирования – «Изучение системных свойств символа в диалекте языка ЛИСП»

Содержание

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

  2. Теоретические сведения, необходимые для выполнения работы

    1. Системные свойства символа (COMMON LISP)

    2. Функции для определения и модификации списка свойств символа (COMMON LISP)

    3. Область данных интерпретатора mulisp

      1. Числа

      2. Внутреннее представление символа

    4. Организация ввода/вывода

  1. Пример содержательной постановки задачи на создание реляционной базы данных и обработку хранящейся в ней информации

3.1 Описание реляционной базы данных с помощью списка свойств символов (COMMON LISP)

  1. Перечень заданий на курсовое проектирование

  2. Требования к оформлению пояснительной записки

  3. Рекомендуемая литература

Приложение. Фрагменты программы на mulisp с пояснениями

Раздел 1

Цель работы

Цель работы – приобретение навыков программирования в функциональном стиле. Выполняя задание на курсовое проектирование, студент должен на практике убедиться в справедливости тезиса: символ в функциональной программе означает не поименованную область памяти, а объект программы.

В ходе работы студенты самостоятельно изучают особенности диалекта ЛИСПа – например, mulisp.

Во втором разделе настоящих «Методических указаний» приводятся теоретические сведения, необходимые для выполнения каждого задания. На примере Common LISPа описываются системные свойства символа. Студентам же предстоит изучить системные свойства символа в диалекте ЛИСПа и составить таблицу, аналогичную таблице 2.1, приведенной в разделе 2. Кроме того, студенты самостоятельно осваивают средства ввода/вывода информации в mulisp.

Результатом решения задачи должна стать отлаженная программа, позволяющая создать одно отношение реляционной базы данных (РБД) и организовать в режиме диалога обновление содержащейся в базе информации и получение ответа на запросы, сформулированные в задании. Каждый запрос является структурированным; перед его выполнением пользователь должен в ответ на появляющуюся на экране подсказку задать значения параметров, необходимые для выполнения запроса.

Раздел 2

Теоретические сведения, необходимые для выполнения работы

В зависимости от места в S–выражении символ может обозначать как имя функции, так и имя переменной. Например,

( SETQ max 6)

6

(max 6 10 3 15)

15

В первом обращении к интерпретатору переменная с именем max приобретает значение 6 (как побочный эффект функции SETQ). Во втором случае обращение производится к функции с таким же именем, так как в лисповской форме имя max стоит в списке на первом месте.

2.1. Системные свойства символа (common lisp)

Память, которая имеется в распоряжении интерпретатора Common LISP, разделена на пространства имен, называемые пакетами (package). Внутри пакета имена символов не повторяются. Прочитав имя символа, интерпретатор ищет, встречалось ли оно ранее или до того времени было неизвестно системе. Для нового символа резервируется память, в которой записываются его системные свойства:

  1. Выражение, определяющее пространство имен

  2. Последовательность знаков, задающая внешний вид переменной (print name), или печатное имя

  3. Указатель на значение символа

  4. Определение функции, представленное в виде lambda–выражения

  5. Список свойств (p-list)

Функция-распознаватель SYMBOLP позволяет установить, является ли символом ее единственный аргумент.

(setq x 3)

(symbolp ‘x)

T

(symbolp x)

NIL

При последнем обращении к интерпретатору выясняется, является ли символом значение х, и поскольку оно равно 3, получается ответ «ложь».

SETQ назначает печатное имя. Побочный эффект SETQ – замещение указателя в поле значения символа. Если значение не определено, то оно равно NIL.

Назначение определения функции символу с именем print name производится с помощью функции DEFUN, а чтение этого определения осуществляется при обращении к функции FUNCTION-VALUE.

Если определения функции для данного имени не сделано, то при попытке использовать это имя на первом месте в некотором списке возникает сообщение интерпретатора об ошибке.:

Undefined function <print-name>

С символом можно связать также и список свойств.