Читаем Введение в Автолисп полностью

(cons ‘а 2) возвращает (А . 2).

(reverse список). Функция обращает список, располагая его элементы в обратном порядке.

(reverse '((a) b c)) возвращает (С В (A)).

(subst новый_элемент старый_элемент список). Функция отыскивает в списке старый_элемент и возвращает копию списка, в которой старый_элемент заменен новым. Если старый_элемент в списке отсутствует, список возвращается без изменений.

(setq sample ‘(a b (с d) b))

(subst ‘qq ‘b sample) возвращает (A QQ (С D) QQ),

(subst ‘qq ‘(c d) sample) возвращает (A B QQ В),

(subst ‘qq ‘x sample) возвращает (A B (C D) B).

(length список) возвращает число элементов в списке.

(length ‘(a b с d)) возвращает 4,

(length ‘(a b (с d))) возвращает 3,

(length ‘()) возвращает 0.

(mapcar функция список1 ... списокN). Функция mapсаr просматривает списки, совершает над ними операции, предписанные функцией и возвращает результат.

(setq a 10 b 20 с 30)

(mapcar '1+(list a b c)) возвращает (11 21 31),

т.е., использование функции mapcar эквивалентно использованию последовательно трех выражений:

(1+a),

d+b),

(1+c).

<p>5.2. Извлечение данных из списка</p>

Двумя основными функциями, позволяющими извлечь из списка хранящиеся в нем данные, являются car и cdr.

(car список). Функция возвращает первый элемент списка. Если список пуст, возвращается nil.

(car ‘(a b c)) возвращает А,

(car ‘((a b) c)) возвращает (А В),

(car ‘()) возвращает nil.

(cdr список). Функция возвращает список, за исключением первого элемента. Если список пуст, возвращается nil.

(cdr ‘(a b c)) возвращает (В С),

(cdr ‘((a b) c)) возвращает (С),

(cdr ‘()) возвращает nil.

Следует иметь в виду, что функция cdr возвращает список, поэтому при попытке извлечь с ее помощью координату “у” двумерной точки может возникнуть конфликтная ситуация. Действительно,

(cdr '(x y)) возвращает (Y),

и из этого списка, состоящего из одного элемента, нужно этот элемент извлечь, т.е., совершить операцию:

(car ‘(у)).

Таким образом, извлечение координаты “у” должно быть осуществлено следующей операцией:

(саг (cdr ‘(х у))).

Для вкладываемых друг в друга функций car и cdr используется сокращенная запись:

(cadr список) эквивалентно (car (cdr список)),

(caar список) эквивалентно (car (car список)),

(cadar список) эквивалентно (car (cdr (car список)))

и так далее. Полная глубина проникновения сцепленных функций car - cdr в обрабатываемый список достигает четырех уровней. Охватывающие крайние возможности метода функции выглядят как (caaaar) и (cddddr). Полный перечень функций можно найти в соответствующей литературе [5, 6].

В качестве примера приводится последовательное извлечение координат точки в трехмерном пространстве:

(setq pt ‘(3.2 5.6 8.4))

(car pt) возвращает 3.0,

(cadr pt) возвращает 5.6,

(caddr pt) возвращает 8.4.

Ранее упоминалось об особом виде списка - точечной паре. Это единственный вид списка, из которого функция cdr извлекает не список, а атом. Например, из точечной пары (62 . 2)

(car (62 . 2)) возвращает 62,

(cdr (62 . 2)) возвращает 2.

(member выражение список). Функция просматривает список в поисках выражения и возвращает часть списка, начинающуюся с выражения.

(member ‘с ‘(a b с d e)) возвращает (С D E),

(member ‘q ‘(a b с d e)) возвращает nil.

(nth номер список). Функция возвращает элемент списка с указанным порядковым номером.

(nth 2 ‘(a b с d e)) возвращает С,

(nth 5 ‘(a b с d e)) возвращает nil.

Следует иметь в виду, что первому элементу списка соответствует нулевой номер.

(assoc элемент список). Функция просматривает список в поисках элемента как ключевого слова и извлекает ассоциированный элемент. Например, при обработке выражения

(setq a ‘((name box) (width 3) (size 4.7) (depth 5)))

(assoc ‘size a) возвращает (SIZE 4.7),

(assoc ‘length a) возвращает nil

<p>6. РАБОТА С БАЗОЙ ДАННЫХ ЧЕРТЕЖА</p>

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

<p>6.1. Характеристики примитивов</p>
Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных