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

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

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

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

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

Текст 7 страницы из документа "LISP1"

(setq f(open "/x/new.tst" "w") вводит

(setq f(open nosuch.fil" "r") вводит nil

4.84.(or ..)

Эта функция вводит логическое OR/ИЛИ для списка выражений. Если все выражения вычисляются к нулю ИЛИ вводит ноль, в противном случае вводит Т. Например:

(or nil 'a '()) вводит T

(or nil '()) вводит nil

4.85.(osnap )

Эта функция вводит точку, которая является результатом применения режимов фиксации (snap) объекта, описанного к точке . - строка, состоящая из одного или более действительных зафиксированных объектов, определенные как "midpoint", "center" и т.д., отделенные запятыми. Например:

(setq pt2 (osnap pt1 "midp"))

(setq pt2 (osnap pt1 "midp,endp,center")

Если параметр -точка 2D (список из двух действительных чисел), вводится точка 2D. Если параметр точка 3D (список из трех действительных чисел), вводится точка 3D. Если в оснапе не находится точки, определенной /режимом, для заданной точки , вводится ноль.

4.86. pi

Это не функция, а константа pi. Она вычисляется приблизительно 3,1415926.

4.87.(polar )

Эта функция вводит точку под углом на расстоянии от точки . Точка - список из двух действительных чисел, угол выражен в радианах. Например:

(polar '(1.0 1.0) 0.785398 1.414214)

вводит (2.000000 2.000000)

4.88. (prin1[])

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

(setq a 123)

(setq b '(a))

тогда

(prin1 'a) печатает A и вводит A

(prin1 a) печатает 123 и вводит 123

(prin1 b) печатает (A) и вводит (A)

(prin1 "Hello") печатает "Hello" и вводит "Hello"

Каждый из примеров печатается на экране, как только определяется . Представьте, что F - действительный дескриптор файла, открытого для написания:

(prin1 "Hello" f)

напишет "Hello" в заданный файл и введет "Hello".

Если - строка, содержащая контрольные символы, PRIN1 отредактирует эти символы кавычками " ".

\e для escape переход

\n для newline новая линия

\r для return возврат,ввод

\t для tab табуляция

\nnn для символов,чей восьмиричный код nnn

Таким образом:

(prin1 (chr 2)) печатает "\002" и вводит "\002"

(prin1 (chr 10)) печатает "\n" и вводит "\n"

4.89.(princ [])

Эта функция такая же, как PRIN1, кроме того, что контрольные символы в печатаются без расширения. В общем, PRIN1 разработан для написания выражений в таком виде, чтобы они были совместимы с функцией LOAD , в то время как PRINC будет печатать их в пригодном для чтения функцией READ-LINE виде.

4.90. (print [])

Эта функция такая же, как PRIN1, кроме того, что новые линии печатаются перед , а в промежутке печатается следующее выражение.

4.91. (progn ...)

Эта функция последовательно вычисляет каждое и вводит значение последнего выражения. Вы можете применять PROGN для вычисления нескольких выражений, где предусматривается только одно выражение. Например:

(if (=a b) (progn

(setq a (+a 10)

(setq b (-b 10)

)

Функция IF нормально вычисляет одно выражение "then", если тестовое выражение вычисляется к чему-либо отличному от нуля. В этом примере мы применяли PROGN для вычисления двух выражений вместо первоначального.

4.92.(prompt )

Эта функция высвечивает на экране в зоне подсказок /сообщение и вводит ноль. - строка. В двухэкранной конфигурации АвтоКАДа, функция PROMPT высвечивает на обоих экранах и поэтому предпочтительна для PRINC. Например:

(prompt "New value:")

на экранах появится "New value:" и вводится ноль.

4.93.(quote )

Вводит невычисляемое . Она также может быть записана следующим образом:

'expr

Например:

(quote a) вводит A

(quote cat) вводит CAT

(quote (a b)) вводит (A B)

'a вводит A

'cat вводит CAT

'(a b) вводит (A B)

4.94. (read )

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

(read "hello") вводит HELLO

(read "hi") вводит HI

(read "(a)") вводит (A)

4.95.(read-char [])

Эта функция читает единичный символ из буфера ввода клавиатуры или из открытого файла, описанного в . Она вводит (целое число) ASCII код, представляющий возможность прочесть символ.

Если не определен, а в буфере ввода клавиатуры нет символов, READ-CHAR ждет, пока вы что-либо напечатаете с клавиатуры (сопроводжая запись клавишей RETURN !). Например, предположим, что буфер ввода клавиатуры пуст:

(read-char)

будет ждать, чтобы что-то было введено. Если вы напечатаете "A B C", а затем нажмете RETURN, READ-CHAR введет 65 (код ASCII для буквы "A"). На следующие вызовы READ-CHAR введет 66, 67 и 10 (новая линия) соответственно. Если затем будут произведены следующие вызовы READ-CHAR, она опять будет ждать ввод.

4.96. (read-line [])

Эта функция читает строку с клавиатуры или из открытого файла, описанного в . Если конец файла не вычисляется, READ-LINE вводит ноль, в противном случае она вводит строку, которая была прочитана. Предположим, что F - действительный поинтер открытого файла:

(read-line f)

введет следующую входную линию из файла, или ноль, если был достигнут конец файла.

4.97 (redraw [[]])

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

(redraw)

он перерисует весь чертеж, как команда АвтоКАДа REDRAW. Если вызов с параметром имени объекта,

(redraw )

перечерчен будет выбранный объект. Это полезно при определении объекта на экране после применения GRCLEAR для очистки экрана.

Завершение контроля над перечерчиванием объекта осуществляется вызовом REDRAW с двумя параметрами:

()

где - имя объекта, который будет перечерчен, а - целое число с одним из следующих значений:

Redraw Mode

Action/действие

1

Перечертить объект на экране

2

Уничтожить объект (внести пробелы)

3

Высвечивание объекта (если позволяет дисплей)

4

Отмена высвечивания объекта (если позволяет дисплей)

Если - заголовок или комплексный объект (Полилиния или Блок с дополнениями), главный объект и все его подобъекты будут отрабатываться, если параметр положительный. Если параметр отрицательный, управляемый функцией REDRAW будет только один заголовок. Если ошибок нет, REDRAW всегда вводит ноль.

4.98.(rem ...)

Эта функция делит на и вводит остаток ( вычисляет остаток ). mod mod - модуль операция вычисления остатка.

REM может применяться с действительными и целыми числами со стандартными правилами перевода. Например:

(rem 42 12) вводит 6

(rem 12.0 16) вводит 12.000000

(rem 60 3) вводит 0

4.99.(repeat ...)

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

(setq a 10)

(setq b 100)

тогда:

(repeat 4

(setq a(+ a 10)))

(setq b(+ b 10)))

) вводит 140

4.100.(reverse )

Эта функция вводит с зарезервированными элементами. Например:

(reverse '((a)b c)) вводит (C B (A))

4.101. (rtos [])

Эта функция вводит строку, которая является представлением (действительного) согласно с установками / режим и /точность и переменной, задающей размеры АвтоКАДа DIMZIN. и - целые числа, которые выбирают линейные элементы режима и точности. Ниже перечислены обеспеченные значения :

RTOS Режим

Редактируемый формат

1

Научный

2

Десятичный

3

Прикладной (футы и десятичные дюймы)

4

Архитектурный (футы и дробные дюймы)

5

Производные дробные элементы

Параметры и соответствуют системе переменных LUNITS и LUPREC АвтоКАДа. Если вы пропускаете параметры, будут применяться текущие установки LUPREC и LUNITS. Примеры RTOS:

(rtos 17.5 1 4) вводит "1.7500E+01"

(rtos 17.5 2 2) вводит "17.50"

(rtos 17.5 3 2) вводит "1'-5.50""

(rtos 17.5 4 2) вводит "1'-5 1/2""

(rtos 17.5 5 2) вводит "17 1/2"

Глава 5. Разработка интерфейсов пользователя

5.1. Меню пользователя

Меню пользователя служит для расширения и дополнения существующего и разработки собственного меню. Меню пользователя задается в файле меню.Файлы меню представляют собой текстовые файлы.

Исходные файлы меню имеют расширение .mnu. Компилированные файлы имеют расширение .mnx. LISP-файлы меню имеют расширение .mnl. Эти файлы автоматически загружаются в память при загрузке файла меню с таким же именем и содержат LISP-выражения, которые могут использоваться файлом меню. Файлы определения меню имеют расширение .mnd. Они являются специальными исходными файлами, содержащими макросы. Файлы этого типа компилируются с помощью программы mc, которая размещена в каталоге SAMPLE.

Файл .mnu компилируется, и создается файл с расширением .mnx, который имеет компактный внутренний формат, позволяет значительно быстрее осуществлять загрузку меню. При создании нового рисунка файл меню с именем, указанным в рисунке-прототипе, загружается автоматически. АвтоКАД предоставляет возможность заменить это меню на новое. Для компиляции и загрузки меню используется команда menu (меню). При этом АвтоКАД записывает в файл рисунка имя последнего использовавшегося с ним меню; при последующем редактировании этого рисунка меню загружается автоматически. Команда menu загружает файл меню с диска:

Command: MENU

Для задания имени файла на экран выводится стандартное диалоговое окно файлов с заголовком «Выбор файла меню» . АвтоКАД ищет файл с расширением .mnu, если он найден, то ищет файл с расширением .mnx, и если MNX-файл имеет те же дату и время создания, что и MNU-файл, он загружается АвтоКАДом. Иначе компилируется MNU-файл и загружается MNX-файл. Если MNU-файл не найден, АвтоКАД ищет MNX-файл. Если MNX-файл найден, АвтоКАД его загружает, иначе высвечивается сообщение об ошибке и запрос на ввод другого файла меню.

Если отключена системная переменная FILEDIA, можно воспользоваться командной строкой для загрузки меню:

Command: MENU : (Команда: МЕНЮ)

Menu file name or . for none : : (Имя файла меню или . если оно не нужно <текущее имя>:

Имя файла задается без расширения.

Иногда имеет смысл полностью убрать меню, например, для очистки зоны экранного меню. Для этого необходимо ввести «.» в ответ на запрос команды MENU.

5.2. Структура файла меню

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

***SCREEN - экранное меню;

***BUTTONSn - кнопочное меню устройства указания, где n - число от 1 до 4;

***AUXn - дополнительное кнопочное меню, где n - число от 1 до 4;

***POPn - падающие и курсорные меню, где n - число от 1 до 16;

***ICON - графическое меню;

***TABLETn - область меню планшета, где n - число от 1 до 4.

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

***SCREEN

[Help]help

[Bye]end

***BUTTONS

erase

oops

Пункты меню «Help» и «Bye» относятся к меню экрана, а пункты «erase» и «oops» - к кнопочному меню. Если в файле нет метки «***SCREEN», то система АвтоКАД действует так, как будто «***SCREEN» является первой меткой в файле.

5.3. Подменю

Пользователю предоставляется возможность определять подменю, которые представляют собой группы из пунктов меню, активизировать их и сделать доступными для выбора пользователя. Например, выбор пункта «ARC» из подменю «DRAW» может активизировать подменю, которое содержит варианты исполнения команды ARC. Пункты дополнительного меню временно заменяют все или часть текущего меню. Обычно по окончании использования подменю происходит возвращение к предыдущему меню. Подменю могут быть вложенными.

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