Логические функции. Базовые функции AutoLISP

Базовые функции AutoLISP

ЛЕКЦИЯ №20

Функция setq — основное средство для сохранения значений, возвращаемых другими выражениями. Пример:

(setq my_d (- (+ 56.022 78.11) (+ 123.77 78.0)))

Значение выражения будет сохранено в переменной my_d.

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

· арифметические функции;

· логические функции;

· функции вычислений;

· функции преобразований;

· функции, работающие со строками;

· функции, работающие со списками и точечными парами;

· функции ввода данных и указания объектов;

· функции доступа к файлам;

· функции доступа к примитивам;

· функции доступа к табличным данным;

· функции, работающие с расширенными данными;

· функции, использующие технологию ActiveX.

Все арифметические функции допускают работу с аргументами целого или вещественного типа. Некоторые арифметические функции допускают вызов без аргументов — в этом случае возвращается 0 (целое число).

Выполняют различные операции проверок, логические операции, организуют повторения и циклы.

Следующие функции выполняют операции сравнения:

· (= <аргумент1> [<аргумент2>... [<аргументN> ]...]) — проверка на равенство любого количества аргументов;

· (/= <аргумент1> [<аргумент2>... [<аргументN> ]...]) — проверка на неравенство любого количества аргументов;

· (< <аргумент1> [<аргумент2>... [<аргументN> ]...]) — проверка на возрастание любого количества аргументов, слева направо;

· (> <аргумент1> [<аргумент2>... [<аргументN> ]...]) —Проверка на убывание любого количества аргументов, слева направо;

· (<= <аргумент1> [<аргумент2>... [<аргументN> ]...]) — Проверка на неубывание любого количества аргументов, слева направо;

· (>= <аргумент1> [<аргумент2>... [<аргументN> ]...]) —Проверка на невозрастание любого количества аргументов, слева направо.

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

Примеры:

(= -10.0 -10 -10.000) — возвращает T;

(= "STR56" "str56" "Str56") — возвращает nil;

(/= -1.0 -1) — возвращает nil;

Ø Следующие функции выполняют логические операции:

· (and [<аргумент1> [<аргумент2>... [<аргументN>]...]]) — операция логического "и" для любого количества аргументов (все, что отлично от nil, рассматривается как т);

· (or [<аргумент1> [<аргумент2>... [<аргументN>]...]]) — операция ло-гического "или" для любого количества аргументов (все, что отлично от nil, рассматривается как т);

· (not <аргумент>) — операция логического "не" (все, что отлично от nil, рассматривается как т);

· (null <аргумент>) — операция проверки на nil (все, что отлично от nil, рассматривается как т); идентична функции not.

Примеры:

(and т т nil) — возвращает nil;

(or т nil т) — возвращает T:

Условная операция типа if-then-else (если-то-иначе) осуществляется с помощью функции if:

(if <условие> <выражение1> (<выражение2>])

Типы аргументов: любые.

Примеры:

(if (> a b) 1 10) — возвращает 1, если a>b, и 10 — в других случаях;

Если функция if используется для выполнения по условию не одного выражения, а нескольких, то эти выражения следует объединить с помощью функции рrоgп (иначе будет синтаксическая ошибка, вызванная неправильным количеством аргументов при обращении к функции if):

(рrоgn <выражение1> <выражение2>... [<выражениеN>])

Функция объединяет несколько выражении в одно, когда по синтаксису языка AutoLISP может использоваться только одно (как в функции if).

Типы аргументов: любые.

Условная операция типа case с любым количеством условий осуществляется с помощью функции cond:

(cond (<условие1> [<выражение1>... ]) [ (<условие2> [<выражение2>... ])]...)

Аргументы: любое количество списков, в каждом из которых на первом месте стоит проверяемое условие, а затем следуют выражения, которые должны быть выполнены (вычислены), если это условие оказалось истинным.

Возвращаемое значение функции cond — последнее вычисленное выражение. Если вычисляемое выражение отсутствует (не задано в списке), то возвращается результат вычисления последнего аргумента <условие>. Если аргументы функции cond не заданы, то возвращается nil

Функция while позволяет организовывать операции цикла по многократно проверяемому условию:

(while <условие> <выражение1> [<выражение2>... [<выражениеN>]... ])

Типы аргументов: любые.

Возвращаемое значение функции while: значение <выражение м>, когда последнее вычисленное значение аргумента <условие> отлично от nil. При неудачном задании цикл, организуемый с помощью функции while, может оказаться бесконечным.

Пусть надо вычислить значение n! (факториал).

(setq i 1 factorial 1)

(while (< i n)

(setq i (1+ i))

(setq factorial (* factorial i))

); конец while


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: