АвтоЛИСП - реализация языка программированияРефераты >> Программирование и компьютеры >> АвтоЛИСП - реализация языка программирования
(<= 10 20) вводит T
(<= 4 4) вводит T
(<= 357 33.2) вводит nil
(<= 2 9 9) вводит T
(<= 2 9 4 5) вводит nil
4.9 (> <number> <number> .)
Это относительная функция "больше, чем" . Она вводит T, если первое <число> больше, чем второе и nil, если наоборот. Если задано больше двух <чисел>, T вводится при условии, что каждое число больше стоящего справа. Например:
(> 120 17) вводит T
(> 57 57) вводит nil
(> 3.5 1792) вводит nil
(> 77 4 2) вводит T
(> 77 4 4) вводит nil
4.10 (>= <number> <number> .)
Это относительная функция "больше или равно". Она вводит T, если первое <число> больше или равно второму, и nil в противном случае. Если задано больше двух <чисел>, T вводится при условии, что каждое число больше или равно <числу> справа от него. Например:
(>= 120 17) вводит T
(>= 57 57) вводит T
(>= 3.5 1792) вводит nil
(>= 77 4 4) вводит T
(>= 77 4 9) вводит nil
4.11 (- <number>)
Эта функция вводит подразрядный НЕТ (NOT) (чье-то дополнение) <чисел>. <Число> должно быть целым. Например:
(-3) вводит -4
(-100) вводит -101
(- -4) вводит 3
4.12 (1+ <number>)
Эта функция вводит <число>, увеличенное на единицу (приращенное). <Число> может быть действительным или целым. Например:
(1+ 5) вводит 6
(1+ -17.5) вводит -16.500000
4.13 (1- <number>)
Эта функция вводит <число>, уменьшенное на единицу (декрементированное). <Число> может быть действительным или целым. Например:
(1- 5) вводит 4
(1- -17.5) вводит -18.500000
4.14 (abs <number>)
Эта функция вводит абсолютное значение <числа>. <Число> может быть действительным или целым. Например:
(abs 100) вводит 100
(abs -100) вводит 100
(abs -99.25) вводит 99.250000
4.15 (and <expr> .)
Эта функция вводит логическое И (AND) списка выражений. Она вводит ноль, если любое из выражений вычисляется к нулю, в противном случае она вводит T. Например, заданы следующие назначения:
(setq a 103)
(setq b nil)
(setq c "string")
тогда:
(and 1.4 a c) вводит T
(and 1.4 a b c) вводит nil
4.16 (angle <pt1> <pt2>)
Эта функция вводит угол (в радианах) между 2D точками <pt1> и <pt2>, когда 2D точка - перечень двух действительных чисел. Например:
(angle '(1.0 1.0) '(1.0 4.0)) вводит 1.570796
(angle '(5.0 1.33) '(2.4 1.33)) вводит 3.141593
4.17 (angtos <angle> [<mode> [<precision>]])
Эта функция берет <угол> (действительный, в радианах) и вводит его отредактирован-ным в виде строки. Параметр <mode>/<режим> - целое число; следующим образом он диктует тип выполняемого редактирования:
Режим ANGTOS Формат Редактирования
------------ ---------------------
0 Градусы
1 Градусы/минуты/секунды
2 Грады
3 Радианы
4 Топографические единицы
Параметр <precision>/<точность> - целое число, которое выбирает желаемое количество десятичных знаков точности. <режим> и <точность> соответствуют системе переменых AUNITS и AUPREC АвтоКАДа. Если вы пропускаете параметры, будут применяться текущие установки AUNITS и AUPREC.
Например,заданы следующие назначения:
(setq pt1 '(5.0 1.33))
(setq pt2 '(2.4 1.33))
(setq a (angle pt1 pt2))
тогда:
(angtos a 0 0) вводит "180"
(angtos a 0 4) вводит "180.0000"
(angtos a 1 4) вводит "180d0'0"
(angtos a 3 4) вводит "3.1416r"
(angtos a 4 2) вводит "W"
4.18 (append <expr> .)
Эта функция берет любое количество элементов (<expr>/<выражений>) и соединяет их вместе в один перечень. Например
(append '(a b) '(c d)) введет (A B C D)
(append '((a)(b)) '((c)(d)) введет ((A)(B)(C)(D))
APPEND требует,чтобы ее параметры были в виде списков.
4.19 (apply <function> <list>)
Выполняет функцию, определенную <function>/<функцией> с параметрами, заданными в <list>/<списке>. Например:
(apply ' + '(1 2 3)) вводит 6
(apply 'stract' ("a" "b" "c")) вводит "abc"
APPLY работает как со встроенными (subrs), так и с определенными пользователем (эти создаются как с помощью DEFUN, так и LAMBDA) функциями.
4.20 (ascii <string>)
Эта функция вводит переход первого символа <строки> в ее знаковый код ASCII (целые числа). Это то же, что и функция ASC в языке БЕЙСИК. Например:
(ascii "A") вводит 65
(ascii "a") вводит 97
(ascii "BIG") вводит 66
4.21 (assoc <item> <alist>)
Эта функция ищет список ассоциаций <alist> для единицы (<item>) как ключевого элемента и вводит содержимое <alist>. Если <item> не найден как ключ в <alist>, ASSOC вводит ноль. Например, предположим, что список "al" определен как:
((name box) (width 3) (size 4.7263) (depth 5))
тогда:
(assoc 'size al) вводит (SIZE 4.7263)
(assoc 'weight al) вводит nil
Список ассоциаций часто используется для запоминания данных, которые могут выбираться как "ключ". Это похоже на матрицы и структуры в других языках программирования. Функция SUBST, описанная далее в этой главе, обеспечивает удобные способы отмены значений, ассоциируемые с одним ключем в перечне ассоциаций.
4.22 (atan <num1> [<num2>])
Если <num2> не задается, ATAN вводит арктангенс <num2> в радианах. <num1> может быть отрицательным, диапазон вводимых углов от -pt до +pt радиан. Например:
(atan 0.5) вводит 0.463647
(atan 1.0) вводит 0.785398
(atan -1.0) вводит -0.785398
(angtos (atan -1.0) 0 4) вводит "-45.0000"
Если заданы оба параметра (<num1> и <num2>), вводится арктангенс <num1>/<num2> в радианах. Если <num2> - ноль, вводится угол в плюс или минус 1.570796 радиан (90 или -90 градусов) в зависимости от знака <num1>. Например:
(atan 2.0 3.0) вводит 0.588002
(angtos (atan 2.0 3.0) 0 4) вводит "33.6901"
(atan 2.0 -3.0) вводит 2.553590
(angtos (atan 2.0 -3.0) 0 4) вводит "146.3099"
(atan -2.0 3.0) вводит -0.588002
(atan -2.0 -3.0) вводит -2.553590
(atan 1.0 0.0) вводит 1.570796
(angtos (atan 1.0 0.0) 0 4) вводит "90.0000
(atan -0.5 0.0) вводит -1.570796
(angtos (atan -0.5 0.0) 0 2) вводит "-90.00"
4.23 (atof <string>)
Эта функция вводит преобразование строчки в действительные числа. Например:
(atof "97.1") вводит 97.100000