АвтоЛИСП - реализация языка программирования
Рефераты >> Программирование и компьютеры >> АвтоЛИСП - реализация языка программирования

(atof "3") вводит 3.000000

4.24 (atoi <string>)

Эта функция вводит преобразование строки в целое число.

(atoi "97") вводит 97

(atoi "3") вводит 3

(atoi "3.9) вводит 3

4.25 (atom <item>)

Эта функция вводит ноль, если <item> - список, в противном случае вводится T. Данные, поступающие не в виде строчек, проходят как atom. Например, даны выражения:

(setq a '(x y z))

(setq b 'a)

тогда:

(atom 'a) вводит T

(atom a) вводит nil

(atom 'b) вводит T

(atom b) вводит T

(atom '(a b c)) вводит nil

Некоторые варианты ЛИСПа различаются в своих интерпретациях ATOMа, так что поупражняйтесь в применении кода преобразования.

4.26 (Boole <func> <int1> <int2> .)

Это основная подразрядная булевая функция. <Func> - целое число от 0 до 15, представляющая одну из 16 возможных булевых функций на двух переменных. Последовательные параметры в виде целых чисел подразрядно (логически) скомбинированы, основываясь на этих функциях и истинностной таблице:

Int1 Int2 Func bit

---------------------

0 0 8

0 1 4

1 0 2

1 1 1

Каждый бит <int1> имеет пару соответствующего бита <int2>, выбирая один горизонтальный ряд истинностной таблицы. Бит результата или ноль, или 1, в зависимости от установки бита <func>, соответствующего этому ряду истиностной таблицы. Если соответствующий бит задан в <func>, бит результата 1, в противном случае бит результата - 0.

Некоторые значения для <func> эквивалентны стандартным булевым операциям AND, OR, XOR и NOT. Они представлены ниже:

Функция Операция Бит результата 1,если .

-------------------------------------------------------

1 AND оба входных бита - 1

6 XOR только один из двух входных битов - 1

7 OR любой или оба из входных битов

8 NOT оба входных бита - 0 (чье-то дополнение)

Например:

(Boole 1 12 5)

определяет логическое AND для значений 12 и 5. Результат 4. Аналогично:

(Boole 6 6 5)

определяет логическое XOR для значений 6 и 5,в результате - 3.

Вы можете применять другие значения <func> для выполнения других булевых операций, для которых эти имена не являются стандартными. Например, если <func> - 4 , биты результата заданы, если заданы соответствующие биты в <int2>, но не в <int1>. Таким образом:

(Boole 4 3 14)

введет 12.

4.27 (boundp <atom>)

Эта функция вводит T, если <atom> имеет значение, близкое к нему (не взирая на контекст). Если же нет значения, близкого к <atom> (или если оно близко к нулю), вводится ноль. Например, заданы назначения:

(setq a 2)

(setq b nil)

тогда:

(boundp 'a) вводит T

(doundp 'b) вводит nil

4.28 caar, cadr, cddr, cadar, etc.

АвтоЛИСП обеспечивает связь CAR и CDR до четырех уровней вглубь. Например, задано назначение:

(setq x '((a b) c d))

тогда:

(caar x ) эквивалентно (car (car x)) вводит A

(cdar x) эквивалентно (cdr (car x)) вводит (B)

(cadar x) эквивалентно (car (cdr (car x))) вводит B

(cadr x) эквивалентно (car (cdr x)) вводит С

(cddr x) эквивалентно (сdr (сdr x)) вводит (D)

(caddr x) эквивалентно (car (cdr (cdr x))) вводит D

В АвтоЛИСПе CADR частично применяется для получения координаты Y для точек 2D и 3D ( второй элемент в списке из двух или трех действительных чисел). Аналогично, CADDR может применяться для определения координаты Z для точки 3D. Например:

(setq pt2 '(5.2 1.0 (2D точка)

(setq pt3 '(5.2 1.0 3.0) (3D точка)

тогда:

(car pt2) вводит 5.200000

(cadr pt2) вводит 1.000000

(caddr pt2) вводит nil

(car pt3) вводит 5.200000

(cadr pt3) вводит 1.000000

(caddr pt3) вводит 3.000000

4.29 (car <list>)

Эта функция вводит первый элемент <списка> . Если <список> пустой, вводится ноль. Например:

(car '(a b c)) вводит A

(car '((a b) c)) вводит (A B)

(car '()) вводит nil

4.30 (cdr <list>)

Эта функция вводит весь <список>, кроме его первого элемента. Если <список> пустой, вводится ноль. Например:

(cdr '(a b c)) вводит (B C)

(cdr '((a b) c)) вводит (C)

(cdr '()) вводит nil

Когда параметры <списка> - разделенные точкой пары (см. ниже CONS), CDR вводит второй элемент без включения его в список. Например:

(cdr '(a . b) вводит B

(cdr '(1 . "Text") вводит "Text"

4.31 (chr <number>)

Эта функция вводит переход целых чисел, представленных в знаковом коде ASCII, в однознаковую строку (аналогично функции CHRS в языке БЕЙСИК). Например:

(chr 65) вводит "A"

(chr 66) вводит "B"

(chr 97) вводит "a"

4.32 (close <file-desc>)

Эта функция закрывает файл и вводит ноль. <File-desc> - дескриптор файла (оприсатель), полученный из функции OPEN. После CLOSE дескриптор файла не изменяется, но становится недействительным. Например, представьте, что Х - действительный открытый дескриптор файла,

(close x )

закроет предполагаемый файл и введет ноль.

4.33 (command <arqs> .)

Эта функция выполняет команду АвтоКАДа в пределах АвтоЛИСПа и всегда вводит ноль. Параметры, представляющие команды АвтоКАДа, и их подкоманды, каждый параметр высчитывается в АвтоКАД в качестве ответа на последующие подсказки. Имена команд и опции запускаются в виде строчек, точки 2D как списки из двух действительных чисел и 3D точки как списки из трех действительных чисел. Имена команд узнаются АвтоКАДом только при выходе подсказки "Command". Например:

(setq pt1 '(1.45 3.23))

(setq pt2 (getpoint "Enter a point: "))

(command "line" pt1 pt2)

(command "")

Предполагая, что подсказка АвтоКАДа "Command" не выполняется, указанная выше последовательность выражений устанавливает значение для точки "pt1", выдает подсказку для точки "pt2" и выполняет команду АвтоКАДа LINE с двумя точками как данными ввода. Параметрами COMMAND могут быть строчки, действительные и целые числа или точки, как предусматри-вается последовательностью подсказки для выполнения команды АвтоКАДа. Нулевая строчка ("") эквивалентна печатанью пробела на клавиатуре. Вызов COMMAND без параметров эквивалентен печатанию CTR C на клавиатуре; это отменит большинство команд АвтоКАДа.

Команды, выполняемые из функции COMMAND, не отражаются на экране, если система переменных АвтоКАДа CMDECHO (выбранная из SETVAR или GETVAR) установлена на нуле. Функция COMMAND - основной метод выбора команд АвтоКАДа из АвтоЛИСПа.

Вводимые функции пользователя

"GETxxx" (GETANGLE, GETSTRING, GETINT, GETPOINT) не могут применяться внутри функции. Попытка проделать это, приведет в результате к появлению сообщения:


Страница: