LISP1 (АвтоЛИСП - реализация языка программирования)

2016-07-31СтудИзба

Описание файла

Документ из архива "АвтоЛИСП - реализация языка программирования", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "рефераты, доклады и презентации", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "LISP1"

Текст из документа "LISP1"

Глава 1

Введение

АвтоЛИСП - реализация языка программирования ЛИСП, вложенного в пределах системы АвтоКАД. АвтоЛИСП позволяет пользователям и разработчикам АвтоКАДА писать макропрограммы и функции на очень высоком, находящем графическое применение, уровне языка. ЛИСП очень гибок, легок в изучении и применении.

Замечание

Для более эффективного применения АвтоКАДА нет необходимости изучать АвтоЛИСП; если у вас нет опыта компьютерного программирования, прочтите тольно установочные требования в главе 2 - это позволит вам увидеть применяемые АвтоЛИСПом преимущества многочисленных меню АвтоКАДА. Однако, если вам нравится программировать, прочтите это руководство до конца, чтобы узнать как применять АвтоЛИСП для преобразования основного назначения пакета изготовления чертежей АвтоКАДА в более мощный инструмент программиста.

Данная книга - справочник, а не учебник по программированию. Хотя в главе 3 мы и приводим пример практического применения АвтоЛИСПа, мы все же рекомендуем достать различные тексты на ЛИСПе для изучения этого языка программирования: Винстон и Хорн "LISP" (второе издание), "Looking at LISP" Тони Хасемера (обе книги опубликованы Эддисоном Веслей). ЛИСП - язык, содержащий много диалектов: МакЛИСП, ИнтерЛИСП, ЗетаЛИСП и КоммонЛИСП. АвтоЛИСП по синтаксису и условным обозначениям наиболее близок к КоммонЛИСПу, но он с меньшим подмножеством и имеет больше специфических для АвтоКАДа дополнительных функций. Этот справочник содержит все функции автоЛИСПа и способы их применения.

1.1 Типы данных в АвтоЛИСПе

АвтоЛИСП содержит несколько различных типов данных:

- lists - списки

- symbols - символы

- strings - строчки

- real numbers - действительные числа

- integers - целые числа

- file descriptors -дескрипторы файла

- AutoCAD entity "names" - "имена" объектов АвтоКАДа

- AutoCAD selection-sets - секции установок АвтоКАДа

- subrs (build-in functions) - (встроенные функции)

Целые числа - 16-битные числа со знаком с диапазоном от -32768 до +32767. Действительные числа представлены как плавающая точка с двойной точностью. Строчки могут быть любой длины, их память динамически распределяется.

АвтоЛИСП содержит несколько встроенных функций по обеспечению базиса для программирования чертежей в двух и трех измерениях. При работе с графическими координатами, рассматриваются следующие условные обозначения:

2D points - выражены как перечни двух действительных чисел

(X Y):

(3.400000 7.520000 )

Первое значение - координата X, второе - Y.

3D points - выражены как перечни трех действительных чисел

(X Y Z ):

(3.400000 7.520000 1.000000)

Первое значение - координата X,второе -Y, третье -Z.

Всякий раз при требовании АвтоКАДа ввести определенный тип (например, точку или масштабный коэффициент) может применяться выражение этого типа или функция АвтоЛИСПа, вводящая в результате этот тип.

1.2 Вычислитель языка АвтоЛИСП

Вычислитель является основой интерпретатора каждого варианта ЛИСПа. Он берет строчку входных данных пользователя, вычисляет ее и выдает результат. В процессе вычисления АвтоЛИСПа участвуют:

- целые, действительные числа; строчки; дескрипторы файла; встроенные функции - вычисляются по отношению сами к себе;

- символы - вычисляются к значению их текущей компоновки;

- списки - вычисляются согласно их первого элемента, если они вычисляются в:

  • список (или пустой список); список предполагает быть определением функции, а функция вычисляется с применением значений остальных элементов списка в качестве параметров.

  • название внутренней функции (subrs); оставшиеся элементы списка проходят в subr как формальные параметры и вычисляются с помощью subr.

Если в ответ на подсказку АвтоКАДа "Command:" вы вводите выражение на языке АвтоЛИСП, АвтоЛИСП вычислит выражение и напишет результат. Подсказка АвтоКАДа "Command:" вновь появится на экране.

Если напечатано или прочитано из файла неправильное выражение, АвтоЛИСП выдаст следующую подсказку:

n>

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

1.3 Лексические условные обозначения

Процедура ввода АвтоЛИСПа имеет несколько форм. Ее можно проделать следующим образом: находясь в АвтоКАДе напечатать вызов с клавиатуры; прочитать из ASCII файла или из строчечной переменной. В любом случае необходимо следующее:

- имена символов могут состоять из любого сочетания печатных характеристик,кроме следующих: ( ) . ' " ;

- имя символа или числовой константы будут завершаться следующими знаками:

( ) ' " ; (промежуток) (конец линии)

- выражения могут состоять из многочисленных линий;

- многочисленные промежутки между символами эквивалентны единичному промежутку. Пока не требуется смещение, вы можете применять их для придания ясности структуре ваших функций;

- символы и имена функций (subrs) не чувствительны к регистрам в АвтоЛИСПе. Имена символов могут и не начинаться с цифры;

- константы целых чисел могут начинаться с необязательных знаков "+" или "-". Как упоминалось ранее, они находятся в диапазоне от -32768 до +32767;

- константы действительных чисел содержат один или более цифровых разрядов, сопровождаемые точкой десятичной дроби, после которой следуют один или несколько цифровых знаков, например ".4" не рассматривается как действительное число, правильно будет "0.4". Аналогично,"5." недействительно, правильно - "5.0". Действительные числа могут применяться в научных записях т.е. могут встретиться необязательное "е" или "Е", сопровождаемое цифровым показателем;

- буквенные строчки - последовательность символов, заключенная в кавычки. Внутри строки, взятой в кавычки, символ (\) означает возможность включения контрольных символов. Рассмотрим следующие текущие коды:

\\ означает символ "\"

\e означает выход

\n означает новая строка

\r означает ввод

\t означает табуляцию

\nnn означает символ, чей восьмиричный код - nnn

Например, на новой линии появится следующая подсказка:

(prompt "\nEnter first point: ")

- единичный цитируемый символ может применяться как сокращение функции QUOTE. Так, 'foo эквивалентно (quote foo)

- комментарии, взятые из дисковых файлов, могут быть включены в программы АвтоЛИСПа. Комментарии начинаются с двоеточия и продолжаются до конца строки. Например,

:This entire line is a comment

:Эта полная строка - комментарий

(setq area (* pi r r )) :Compute area of circle

:Рассчитайте площадь круга

1.4 Условные обозначения примечаний

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

(moo ...)

строка цифра

Имя функции показано таким, каким вы должны его ввести. Заключенные в кавычки элементы данных, следующие за именем функции, определяют количество и тип параметров, предполагаемых функцией.

В этом промере функция "moo" имеет два необходимых параметра: строка и цифра. Эллипсис ("...") определяет, что к функции могут быть присоединены дополнительные цифровые параметры. Не включайте в строку скобки или эллипсисы, если вы снабжаете функцию ссылками.

Вызов данного формата функции "moo" показан выше; для функции "moo" будут действительными следующие ссылки:

(moo "Hello" 5)

(moo "Hi" 1 2 3 )

Следующие примеры не соответствуют требуемому формату и приведут к ошибкам:

(moo 1 2 3 ) (первый параметр должен быть строкой)

(moo "Hello") (должен быть хотя бы один цифровой параметр)

(moo "do" '(1 2)) (второй параметр должен быть строкой,а не перечнем)

Когда необязательный параметр может возникнуть один раз, без повторений, он заключается в квадратные скобки ("[]"):

(foo [])

Здесь функция "foo" предполагает один строчечный параметр и принимает один необязательный цифровой параметр. Например, для функции "foo" будут действительны следующие вызовы:

(foo "catch")

(foo "catch" 22)

В этом примере показаны неправильные вызовы:

(foo 44 13) (первый параметр должен быть строчечным)

(foo "foe" 44 13) (слишком много параметров)

1.5 Изменения и расширения

Обработка ошибки

Если АвтоЛИСП сталкивается с ошибкой во время вычисления, он выдает сообщение следующей формы:

error:text

где text - описание ошибки. Если установлена функция "ERROR" (не ноль), АвтоЛИСП,вместо выдачи сообщения, выполняет эту функцию ("text"- ее единственный параметр). Если"ERROR" не установлена, или граничит с нулем, вычисление АвтоЛИСПа останавливается, а на экране появится обратный ход вызова функции и ее вызывающей программы до 100 уровней вглубь.

Глава 2

Установка АвтоЛИСПа

2.1 Требования

Выпуск формата

АвтоЛИСП снабжается любой копией Автокада. Никаких специальных установок не требуется. Файл "acadl.ovl" на рабочей дискете является оверлеем АвтоЛИСПа в АвтоКАДе.

Одна из рабочих дискет АвтоКАДа содержит файл "readme.doc". Просмотрите этот файл; он содержит самые последние изменения и корректировки в документации АвтоКАДа и АвтоЛИСПа.

2.2 Автоматические функции - файл "acad.lsp"

Начиная сеанс работы графического редактора АвтоКАДа, АвтоЛИСП загружает файл "acad.lsp" (если такой существует). На этом файле вы можете задать определения наиболее часто используемых функций и они будут автоматически высчитываться при редактировании чертежа. См.определение функции DEFUN в главе 4 .

Глава 3

По садовой дорожке к АвтоЛИСПу

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

Язык АвтоЛИСП - наиболее мощное условие для расширения возможностей АвтоКАДа. Эти, обеспеченныеАвтоКАДом благоприятные условия - реализация языка программирования ЛИСП, в сочетании с АвтоКАДом. Составляя программу на АвтоЛИСПе, вы можете добавить команды для АвтоКАДа и иметь больше мощности для модифицирования АвтоКАДа (что и имеют наши разработчики программного обеспечения).

Вскоре мы добавим новую команду для АвтоКАДа. В процессе объяснения принципа работы АвтоЛИСПа, мы дадим вам возможность использования его мощности для работы на вас. Команда, которую мы собираемся создать, сориентирована на архитектуру поверхности, но принципы , которые вы изучите, - релевантные, не считающиеся с вашей областью применения.

3.1 Что вы должны знать перед началом работы

Мы предполагаем,что вы сносно владеете АвтоКАДом - т.е. вы знаете команды АвтоКАДа и общие принципы их применения. Мы также предполагаем, что вы знакомы с текстовым редактором, который может создавать ASCII файлы. Сейчас мы напишем программу, а вы применяйте свой текстовый редактор для выполнения наших заданий.

В этом примере мы будем применять много функций АвтоЛИСПа. Последующие главы этого руководства содержат полное объяснение всех этих функций.

3.2 Задача

Наша задача - создать новую программу для АвтоКАДа, которая рисует садовую дорожку и заполняет ее круглыми плитами.

Наша новая команда будет иметь следующую последовательность команд:

COMMAND: PATH (ДОРОЖКА)

Start point of path: start point

(Начальная точка дорожки: начальная точка)

End point of path: end point

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Нашёл ошибку?
Или хочешь предложить что-то улучшить на этой странице? Напиши об этом и получи бонус!
Бонус рассчитывается индивидуально в каждом случае и может быть в виде баллов или бесплатной услуги от студизбы.
Предложить исправление
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5138
Авторов
на СтудИзбе
442
Средний доход
с одного платного файла
Обучение Подробнее