LISP1 (663340), страница 3

Файл №663340 LISP1 (АвтоЛИСП - реализация языка программирования) 3 страницаLISP1 (663340) страница 32016-07-31СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 3)

Например:

(* 2 3) вводит 6

(* 2 3 4.0) вводит 8.000000

(* 3 -4.5) вводит -13.500000

4.4 (/ ...)

Эта функция делит первое на второе и вводит частное. Если задано более двух , первое делится на произведение второго и всех последующих чисел и вводится конечное частное.

Примеры:

(/100 2) вводит 50

(/100 2.0) вводит 50.000000

(/100 20 2.0) вводит 2.500000

(/100.0 20 2) вводит 2.500000

(/100 20 2) вводит 2

(/135 360) вводит 0

(/135 360.0) вводит 0.375000

4.5 (= ...)

Это относительная функция "равно чему-либо". Она вводит T, если все определенные равны в числовом отношении, во всех других случаях вводится ноль. Эта функция также действительна для строчек.

Примеры:

(=4 4.0) вводит T

(=20 388) вводит nil

(=2.4 2.4 2.4) вводит T

(=499 499 500) вводит nil

(="me" "me") вводит T

(="me" "you") вводит nil

4.6 (/= )

Это относительная функция "не равно чему-либо". Она вводит T, если не равно , в противном случае вводится nil. Если задано более двух параметров, функция не определяется. Например:

(/=10 20) вводит T

(/=5.43 5.43) вводит nil

(/=5.43 5.44) вводит T

4.7 (< ...)

Это относительная функция "менее, чем". Она вводит T, если первое меньше второго, и nil если наоборот. Если задано более двух , T вводится в том случае, если каждые из чисел меньше, чем справа от него. Например:

(< 10 20) вводит T

(< 4 4) вводит nil

(< 357 33.2) вводит nil

(< 2 3 88) вводит T

(< 2 3 4 4) вводит nil

4.8 (<= ...)

Это относительная функция "менее или равно". Она вводит T, если первое менее или равно второму и nil в других случаях. Если задано более двух , T вводится в том случае, если каждое число меньше или равно , стоящему справа от него. Например:

(<= 10 20) вводит T

(<= 4 4) вводит T

(<= 357 33.2) вводит nil

(<= 2 9 9) вводит T

(<= 2 9 4 5) вводит nil

4.9 (> ...)

Это относительная функция "больше, чем" . Она вводит T, если первое больше, чем второе и nil, если наоборот. Если задано больше двух , T вводится при условии, что каждое число больше стоящего справа. Например:

(> 120 17) вводит T

(> 57 57) вводит nil

(> 3.5 1792) вводит nil

(> 77 4 2) вводит T

(> 77 4 4) вводит nil

4.10 (>= ...)

Это относительная функция "больше или равно". Она вводит T, если первое больше или равно второму, и nil в противном случае. Если задано больше двух , T вводится при условии, что каждое число больше или равно справа от него. Например:

(>= 120 17) вводит T

(>= 57 57) вводит T

(>= 3.5 1792) вводит nil

(>= 77 4 4) вводит T

(>= 77 4 9) вводит nil

  1. (- )

Эта функция вводит подразрядный НЕТ (NOT) (чье-то дополнение) . должно быть целым. Например:

(-3) вводит -4

(-100) вводит -101

(- -4) вводит 3

4.12 (1+ )

Эта функция вводит , увеличенное на единицу (приращенное). может быть действительным или целым. Например:

(1+ 5) вводит 6

(1+ -17.5) вводит -16.500000

4.13 (1- )

Эта функция вводит , уменьшенное на единицу (декрементированное). может быть действительным или целым. Например:

(1- 5) вводит 4

(1- -17.5) вводит -18.500000

4.14 (abs )

Эта функция вводит абсолютное значение . может быть действительным или целым. Например:

(abs 100) вводит 100

(abs -100) вводит 100

(abs -99.25) вводит 99.250000

4.15 (and ...)

Эта функция вводит логическое И (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 )

Эта функция вводит угол (в радианах) между 2D точками и , когда 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 [ []])

Эта функция берет (действительный, в радианах) и вводит его отредактирован-ным в виде строки. Параметр / - целое число; следующим образом он диктует тип выполняемого редактирования:

Режим ANGTOS Формат Редактирования

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

0 Градусы

1 Градусы/минуты/секунды

2 Грады

3 Радианы

4 Топографические единицы

Параметр / - целое число, которое выбирает желаемое количество десятичных знаков точности. и соответствуют системе переменых 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 ...)

Эта функция берет любое количество элементов (/) и соединяет их вместе в один перечень. Например

(append '(a b) '(c d)) введет (A B C D)

(append '((a)(b)) '((c)(d)) введет ((A)(B)(C)(D))

APPEND требует,чтобы ее параметры были в виде списков.

4.19 (apply )

Выполняет функцию, определенную / с параметрами, заданными в /. Например:

(apply ' + '(1 2 3)) вводит 6

(apply 'stract' ("a" "b" "c")) вводит "abc"

APPLY работает как со встроенными (subrs), так и с определенными пользователем (эти создаются как с помощью DEFUN, так и LAMBDA) функциями.

4.20 (ascii )

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

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

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

(ascii "BIG") вводит 66

4.21 (assoc )

Эта функция ищет список ассоциаций для единицы () как ключевого элемента и вводит содержимое . Если не найден как ключ в , 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 [])

Если не задается, ATAN вводит арктангенс в радианах. может быть отрицательным, диапазон вводимых углов от -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"

Если заданы оба параметра ( и ), вводится арктангенс / в радианах. Если - ноль, вводится угол в плюс или минус 1.570796 радиан (90 или -90 градусов) в зависимости от знака . Например:

(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 )

Эта функция вводит преобразование строчки в действительные числа. Например:

(atof "97.1") вводит 97.100000

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

4.24 (atoi )

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

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

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

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

4.25 (atom )

Эта функция вводит ноль, если - список, в противном случае вводится 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 ...)

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

Int1 Int2 Func bit

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

0 0 8

0 1 4

1 0 2

1 1 1

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

Некоторые значения для эквивалентны стандартным булевым операциям 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.

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

(Boole 4 3 14)

введет 12.

4.27 (boundp )

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

(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 )

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

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

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

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

4.30 (cdr )

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

(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 )

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

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

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

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

4.32 (close )

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

(close x )

Характеристики

Тип файла
Документ
Размер
231,5 Kb
Тип материала
Учебное заведение
Неизвестно

Список файлов реферата

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6510
Авторов
на СтудИзбе
302
Средний доход
с одного платного файла
Обучение Подробнее