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

4.3 Логические функции Автолиспа.

AutoLISP предоставляет богатые возможности для конструирования логических выражений и выполнения над ними логических операций. Логический оператор - это функция, сравнивающая между собой два или больше аргументов. Результат сравнения (т.е. некоторое утверждение, касающееся двух аргументов) может быть либо истиной - Т , либо ложью -nil. Основные логические функции - это И (AND), ИЛИ (OR) и НЕ (NOT).

(and выражение1 выражение2 . . .)

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

(not элемент)

Возвращает результат выполнения логического НЕ над аргументом элемент.

(ог выражение1 выражение2 . . . )

Возвращает результат выполнения логического ИЛИ над списком выражений. Возвра-щается nil, если все аргументы имеют значение nil, если при оценке аргументов слева направо встречается выражение не nil, возвращает Т. Ряд логических функций работает только с простыми переменными - - атомами. К таким переменным можно отнести:

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

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

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

(атом переменная )

Проверяет, является ли переменная атомом. Если да - функция возвращает Т, если нет - nil.

(= атом1 атом2 . . . )

Возвращает Т если все атомы равны, в противном случае возвращает nil.

(/= атом1 атом2)

Возвращает Т еcли атом1 не равен атому2. В противном случае возвращает nil. Функция не определена для числа аргументов больше ДВУХ.

(< атом1 атом2 . . . )

Возвращает Т в том случае, если каждый последующий атом, больше предыдущего. В противном случае возвращается nil.

(<= атом1 атом2 . . . )

Возвращается Т в том случае, если каждый последующий атом, больше или равен пред-ыдущему. В противном случае возвращается nil.

(> атом1 атом2 . . . )

Возвращает Т в том случае, если каждый последующий атом, меньше предыдущего. В противном случае возвращаегся nil.

(>= атом1 атом 2 . . . )

Возвращается Т в том случае, если каждый последующий элемент, меньше или равен предыдущему. В противном случае возвращается nil.

(eq выражение1 выражение2)

Определяет, идентичны ли выражение1 и выражение2, т.е. являются ли они фактически одним объектом или нет (т.е порожден ли один из другого при помощи функции SETQ). EQ возвращает Т, если оба выражения идентичны, в противном случае - nil. Обычно функция применяется для определения, являются ли два списка фактически одним или нет.

(setq f1 (list 10.2 13 x1)) где x1 переменная объявленная ранее

(setq f2 (list 222.44 666 p1)) где p1 переменная объявленная ранее

(setq f3 f2)

Тогда (eq f1 f3) возвращает nil (fl и f3 - разные списки), a (eq f3 f2) возвращает T (f3 и f2 - один и тот же список)

(equal выражение1 выражение2 допуск)

Определяет, равны ли выражение1 и выражение2, т.е. равны ли их значения. При сравнении двух действительных чисел (или двух списков действительных чисел) важно осознать, что два “идентичных” числа могут незначительно отличаться друг от друга, если они вычислялись различными методами. Однако факультативный численный - аргумент допуск позволяет задать максимальную точность, с которой могут отличиться друг от друга выражениие1 и выражение2, оставаясь при этом EQUAL. Например, пусть

(setq а 1.123456)

(setq с 1.123457)

(equal a b) возвращает nil

(equal a b 0.000001) возвращает T

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