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

2. Типы данных языка 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 определены более сложные типы данных. Пе­речислим их без подробного рассмотрения.

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

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

Встроенные функции - переменные, посредством которых осуществляется обращение к стандартной библиотеке функций языка AutoLISP. В них хранятся внут­ренние адреса стандартных функций 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 элементов, два из которых в свою очередь являются списками.

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

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