Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
METHOD / Основы САПР / Лекц_Основы_САПР.doc
Скачиваний:
2353
Добавлен:
05.03.2016
Размер:
2.06 Mб
Скачать

Переменные языка AutoLisp

Язык AutoLISP, как и любой язык программирования, использует переменные. Переменная - это объект, имеющий уникальное имя и способный хранить в себе некоторое значение. Переменные языка AutoLISP динамические - создание переменной и опре­деление её типа осуществляется в момент присвоения переменной значения в программе.

Переменные языка AutoLisp определенные пользователем

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

Зарезервированные символы: . ' " ; ( ) или пробел

Знаки операций AutoLISP: - * = > < + - /

"Плохие" символы: ? ' ! \ " , а также управляющие символы

Нельзя также использовать в качестве имен переменных имена функций языка AutoLISP. Заметим, что AutoLISP не различает малые и большие буквы. Поскольку имя переменной длиной более шести символов требует для хранения больше памяти, рекомендуется не превышать этот предел. Не следует также начинать имя переменной с цифры.

Имена переменных

Неверные

Ошибка

верные

123

РТ123

10.5

действительная константа

tx10_5

ANGLK

конфликтует с функцией ANGLE Автолиспа

ANGL

A(l)

содержит запрещенные символы

А­_1

OLD SUM

содержит пробел

OLD_SUM

Лекция 13 Типы данных языка AutoLisp

С понятием переменной в программировании тесно связано понятие типа пе­ременной. Типом переменной определяются операции, которые можно произво­дить над переменными. Например, для чисел действительного типа определены операции сложения, умножения и деления, в то время как для строк определены другие операции - конкатенация, извлечение подстроки и пр. (можно одно число поделить на другое, но нельзя поделить строку на другую строку).

Как и любой другой язык программирования, AutoLISP при работе с пере­менной должен знать, к какому типу данных она относится. Однако, как мы убе­димся позднее, в данном случае, работа с типами переменных очень проста. Перечислим сначала основные типы данных, которые есть в любом языке программирования, в том числе и в языке AtoLISP:

• строковые переменные

• целые переменные

• действительные переменные

Строковые переменные могут содержать в себе различные текстовые конс­танты) т.е. совокупности букв (и символов), заключенных в кавычки, например "Введите число 12.80:". Кавычки говорят, что данную совокупность символов следует рассматривать как текстовую константу. Если системная переменная является строковой, то это значит, что в ней может храниться только строковая константа (строковая константа может конечно, с общепринятой точки зре­ния являться числом, например "56.88", однако AutoLISP не понимает что это число, и работает с такой константой)

Целые переменные - это положительные или отрицательные целые числа (без дробей и десятичной точки). Для определения того, включен какой-то ре­жим или нет, Автокад часто использует значения 0 и 1, например если режим ORTHO (ОРТО) включен, то системная переменная ORTHOMODE установлена в единицу. Заметим, что целые числа представляются в памяти машины двумя байтами и не поэтому могут выходить за диапазон (-32 768, 32 767).

Действительные переменные - это положительные или отрицательные числа с десятичной точкой. В отличие от многих других языков программирования язык AutoLISP не разрешает начинать или заканчивать число десятичной точкой. Это связано с существованием специфического типа данных - то­чечной пары, разделителем которой является точка. Поэтому, если значение меньше единицы, вы должны явно указать 0 перед десятичной точкой (0.123), иначе AutoLISP воспримет ошибку (error: invalid dotted pair - ошибка: неверная точечная пара)). В качестве примеров действительных системных переменных можно указать переменные FILLETRAD, LTSCALE и AREA. Диапазон представления действительных чисел зависит от типа вашего компьютера и в любом случае достаточно велик. Правильно записанными действительными числами являются числа 2.12, 3.11592 -9722.12 и 1.23544Е+17.

Кроме этих простейших типов в языке AutoLISP определены более сложные типы данных. Пе­речислим их без подробного рассмотрения.

Дескрипторы файлов - переменные, в которых хранится описание открытого файла: аналогичны дескрипторам файлов в других языках программирования.

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

AutoCAD, как и любая система САПР, работает не с растровым представлением изображения, а с его геометрическим описанием. Каждый примитив, создавае­мый в чертеже п. AutoCAD, заносится в графическую базу данных (ГБД), в которой хранится вся информация о примитивах чертежа (как геометрическая, так и специальная, характерная для Автокада). Каждому примитиву присваива­ется имя (индекс), по которому можно получить всю информацию о примитиве. Имя примитива - это просто уникальное восьмизначное шестнадцатеричное чис­ло (например, "6000001А"). Однако для того чтобы обратиться к графической базе данных, нужно работать пе с числом, а именно с типом данных "имя при­митива", иначе доступ к ГБД будет невозможен. Этот тип данных введен в язык AutoLISP для связи с графическим редактором п. AutoCAD. Существует еще несколько подобных типов, которые мы не будем рассматривать подробно (в качестве примера можно привести типы "набор примитивов"' и "таблица диспетчера страниц"').

Данные выше определения типов данных, исчерпывают почти все, что есть по этому вопросу в AutoLISP. Остается только определить самый важный тип данных AutoLISP - список.

С точки зрения AutoLISP все перечисленные типы данных являются просты­ми, т.е. переменные принадлежащие к одному из перечисленных выше типов, не могут быть расчленены на составные части. Введем важное определение которое понадобится нам позднее:

Переменные любого из простых типов называются атомами.

Примеры атомов: 8, 12.5, “SAPR_TM”

Списком называется набор разделенных пробелами атомов или списков

заключенный в круглые скобки.

Например: (1324 22.4 tet) - список из трех элементов, первые два – целое и действи-тельное числа, tet - переменная с присвоенным значением к моменту объявления списка в программе. (12.5 7 (“Иван Грозный” “Student”) (2.4 5.55 1213)) – список состоя-щий из 4 элементов, два из которых в свою очередь являются списками.

Переменные которые не могут быть расчленены на составные части называются АТОМАМИ.

Функции присвоения

Переменные в языке AutoLISP не надо описывать - тип данных определяется автоматически при присвоении переменной значения.

Все переменные - динамические, т.е. присваивая значение симво­лу (группе символов - идентификатору имени переменной), мы автоматически создаем перемен­ную. Перед созданием переменной (а точнее, перед тем. как отвести ей место в памяти) AutoLISP автоматически определяет, какого она будет типа.

Само присвоение переменным значений осуществляется в языке AutoLISP не так как в других языках программирования. Для присвоения переменным значений установлена специальная функция SFTQ. Что такое "SET" - понятно: "положить", а что означает "setq"? Буква "q" в функции присвоения "setq" происходит от сокращения английского слова "quote" - буквально "цитировать". Функция SETQ является мнемоничес­ким сокращением английского словосочетания "SET by Quote" - "присвоить по ссылке".

(setq x 3.2) - переменной x присваивается значение 3.2

(setq z1 “Formula”) - переменной z1 присваивается значение строковой константы “Formula”.

(setq zx z1) - переменной zx присваивается значение переменной z1 объявленной ранее.

Следует обратить внимание, что выражения языка всегда отделяются друг от друга не менее чем одним ПРОБЕЛОМ.

Соседние файлы в папке Основы САПР