• Текстовые строки должны заключаться в двойные кавычки. Включение в текстовую строку обратной косой черты (\), иногда называемой обратным слэшем, позволяет ввести управляющие символы, перечисленные в табл. 2.
Tаблицa 2. Значение некоторых управляющих символов
Символ | Значение |
---|---|
\\ | Символ \ |
\” | Символ “ |
\e | Символ Escape-последовательности |
\n | Символ перехода на следующую строку |
\r | Символ возврата каретки |
\t | Символ табуляции |
\nnn | Произвольный символ в восьмиричном коде |
1.3. Выражения и переменные Автолиспа
Основной структурной единицей Автолиспа является выражение. Любое выражение открывается круглой скобкой, состоит из имени функции и списка аргументов, каждый из которых сам может быть выражением, и закрывается парной правой скобкой. В связи с тем, что выражения могут занимать несколько строк, принято их зрительно структурировать, вписывая закрывающую выражение скобку в тот же столбец, что и открывающую. Такая система записи облегчает чтение программ и уменьшает количество ошибок. Аргументы в выражениях разделяются пробелами.
Автолисп не обладает отладчиком программ, но ему свойственна другая полезная особенность. Если выражение Автолиспа ввести в командную строку Автокада, Автолисп обрабатывает его и возвращает его значение. Это позволяет производить отладку программ, поскольку неадекватная реакция среды сразу указывает на ошибку.
При вводе некорректного выражения Автолисп может выдать указание
Обработанное интерпретатором Автолиспа выражение может быть далее использовано окружающими выражениями. Если такого окружения нет, Автолисп передает значение выражения Автокаду.
В распространяемый с 1999 года пакет AutoCAD 2000 в качестве составной части включен пакет Visual LISP, обладающий отладчиком программ. Возможности работы в среде Visual LISP описаны в публикации [1].
Выражения Автолиспа записываются в формате
(function_name [arguments]...)
(имя_функции [аргументы]...).
В дальнейшем, как это принято в литературе по программированию, аргументы, которые не являются обязательными и могут быть опущены, в описании формата выражений заключаются в квадратные скобки. Многоточие, заключающее выражение перед закрывающей круглой скобкой, указывает на то, что список аргументов может быть продолжен.
Существует четыре типа переменных Автолиспа: целые, вещественные, точки и строки. Тип переменной автоматически определяется Автолиспом и должен соответствовать типу, воспринимаемому конкретной функцией. Значение переменной сохраняется до конца сеанса или до замены его другим значением. Имя переменной должно начинаться с алфавитного символа. Запрещенные символы перечислены выше.
1.4. Основная функция присвоения в Автолиспе
Любой язык программирования, встречая некоторую именованную переменную, сопоставляет ей ее значение. Это значение в операторных языках обычно вычисляется и присваивается переменной с помощью оператора присвоения. Особенностью Автолиспа является то, что в переменной может храниться не только вычисленное значение, но и целое выражение. Этот язык содержит в своем составе функцию quote, позволяющую сохранить выражение без его оценки. Формат функции:
(quote выражение),
например:
(quote а) возвращает
(quote (a b c)) возвращает
(quote (+ 1 4)) возвращает
В практике создания программ слово quote заменяется апострофом. Автолисп совершенно одинаково воспринимает и обрабатывает записи:
(quote (a b c)) и '(a b с).
Основной функцией присвоения переменной ее значения является функция
(setq
Функция setq, позволяет присвоить значения нескольким переменным, однако возвращает только последнее выражение. Например:
(setq a 5.4) возвращает
(setq a 5.4 b 8.7 с “width”) возвращает
(setq x ‘(a b)) возвращает
На примере функции setq хорошо видно действие функции quote. Так, например:
(setq x (+ 1 4)) возвращает
(setq x ‘(+ 1 4)) возвращает
Поскольку функция quote сохраняет выражение без его оценки, элементы этого выражения, по сути дела, являются списком. Поэтому для записи такого выражения во многих случаях можно использовать функцию организации списков list. Следующие два примера определения точки на чертеже для Автолиспа эквивалентны: