Автор работы: Пользователь скрыл имя, 19 Февраля 2011 в 15:30, лабораторная работа
Цель: Ознакомиться со средой MuLisp. Изучить базовые функции Лиспа, символы и их свойства, а также средства для работы с числами. 
        
1.Основные положения программирования на Лиспе.
2.Загрузка системы, системный редактор.
3.Базовые функции языка. Символы, свойства символов.
4.Средства языка для работы с числами.
5.Задание к лабораторной работе.
6.Вопросы.
Лабораторная работа № 1.
Тема: Ознакомительная работа в среде MuLisp. Базовые функции Лиспа. Символы, свойства символов. Средст-ва языка для работы с числами.
       Цель: 
Ознакомиться со средой MuLisp. Изучить базовые функции 
Лиспа, символы и их свойства, а также средства 
для работы с числами. 
1. Основные положения программирования на Лиспе.
Атомы - это символы и числа.
Список - упорядоченная последовательность, элементами которой являются атомы либо списки. Списки заключаются в круглые скобки, элементы списка разделяются пробелами. Несколько пробелов между символами эквивалентны одному пробелу. Первый элемент списка называется «головой», а остаток , т. е. список без первого элемента, называется «хвостом. Список в котором нет ни одного элемента, называется пустым и обозначается «()» либо NIL.
(load <имя файла>)
Эта функция загружает файл выражений и выполняет эти выражения. <Имя файла> - это строковая константа, которая представляет собой имя файла без расширения (подразумевается расширение ".lsp"). Если операция успешно завершена, LOAD возвращает имя последней функции, определенной в файле. Если операция не выполнена, LOAD возвращает имя файла в виде строкового выражения.
Функция LOAD не может вызываться из другой функции LISP. Она должна вызываться непосредственно с клавиатуры, в то время как ни одна другая функция LISP не находится в процессе выполнения.
2. Загрузка системы. Системный редактор.
Запуск системы MuLisp с расширением Common.lsp осуществляется командой:
MuLisp87.com Common.lsp.
       После 
нескольких секунд загрузки на экране 
дисплея появится сообщение: 
MuLisp-87 IBM PC MS-DOS Version 6.01 (11/05/87)
(C ) Copyright SoftWarehouse, Inc., 1983, 1985, 1986, 1987.
All rights Reserved Worldwide.
       ; 
Loading C:Common.lsp 
После чего появится знак $, означающий приглашение системы к работе. Для загрузки системного редактора необходимо набрать следующую команду:
(LOAD edit.lsp)
Системный редактор начинает работать. Он чистит экран рисует рамку и выдает на экран свое меню:
       Alpha, 
Block, Delete, Jump, List, Options, Print, Quit, Replace, Search, Transfer, 
Undelete и 
Window.  
Затем система ждет, пока пользователь не выберет одну из опций. Для этого необходимо установить курсор на выбранной опции и нажать клавишу «Enter». Переход от одной опции к другой производится с помощью клавиши «Tab».
3. Базовые функции языка.
Функции разбора.
Функция CAR возвращает в качестве значения первый элемент списка.
        (CAR  список) р S - выражение (атом либо 
список). 
_(CAR ‘(a b c d)) р a
_(CAR ‘((a b) c d)) р (a b)
_(CAR ‘(a)) р a
       _(CAR 
NIL) р NIL              
«Голова пустого 
списка - пустой список.» 
Вызов функции CAR с аргументом (a b c d) без апострофа был бы проинтерпретирован как вызов функции «a» с аргументом «b c d», и было бы получено сообщение об ошибке.
       Функция CAR имеет 
смысл только для аргументов, являющихся 
списками. 
       (CAR 
‘a) р Error 
       Функция CDR - 
возвращает в качестве значения хвостовую 
часть списка, т. е. список, получаемый 
из исходного списка после удаления из 
него головного элемента: 
(CDR список) р список
       Функция CDR определена 
только для списков. 
_(CDR ‘(a b c d)) р (b c d)
_(CDR ‘((a b) c d)) р (c d)
_(CDR ‘(a (b c d))) р ((b c d))
_(CDR ‘(a)) р NIL
_(CDR NIL) р NIL
       _(CDR 
‘a) р 
Error 
Функция создания CONS.
       Функция CONS строит 
новый список из переданных ей в качестве 
аргументов головы и хвоста. 
       (CONS голова хвост) 
       Для 
того чтобы можно было включить первый 
элемент функции CONS в качестве первого элемента 
значения второго аргумента этой функции, 
второй аргумент должен быть списком. 
Значением функции CONS всегда будет список: 
       (CONS 
s-выражение список) р список 
_(CONS ‘a ‘(b c)) р (a b c)
_(CONS ‘(a b) ‘(c d)) р ((a b) c d)
_(CONS (+ 1 2) ‘(+ 3)) р (3 + 3)
_(CONS ‘(a b c) NIL) р ((a b c))
_(CONS NIL ‘(a b c)) р (NIL a b c)
Предикаты ATOM, EQ, EQL, EQUAL.
Предикат - функция, которая определяет, обладает ли аргумент определенным свойством, и возвращает в качестве значения NIL или T.
       Предикат ATOM 
- проверяет, является ли аргумент атомом: 
       (ATOM 
s - выражение) 
       Значением 
вызова ATOM будет T, если 
аргументом является атом, и 
NIL - в противном случае. 
_(ATOM ‘a) р T
_(ATOM ‘(a b c)) р NIL
_(ATOM NIL) р T
       _(ATOM 
‘(NIL)) р 
NIL