GeoSELECT.ru



Программирование / Реферат: АСУ целевыми программами в некоммерческой организации (Программирование)

Космонавтика
Уфология
Авиация
Административное право
Арбитражный процесс
Архитектура
Астрология
Астрономия
Аудит
Банковское дело
Безопасность жизнедеятельности
Биология
Биржевое дело
Ботаника
Бухгалтерский учет
Валютные отношения
Ветеринария
Военная кафедра
География
Геодезия
Геология
Геополитика
Государство и право
Гражданское право и процесс
Делопроизводство
Деньги и кредит
Естествознание
Журналистика
Зоология
Инвестиции
Иностранные языки
Информатика
Искусство и культура
Исторические личности
История
Кибернетика
Коммуникации и связь
Компьютеры
Косметология
Криминалистика
Криминология
Криптология
Кулинария
Культурология
Литература
Литература : зарубежная
Литература : русская
Логика
Логистика
Маркетинг
Масс-медиа и реклама
Математика
Международное публичное право
Международное частное право
Международные отношения
Менеджмент
Металлургия
Мифология
Москвоведение
Музыка
Муниципальное право
Налоги
Начертательная геометрия
Оккультизм
Педагогика
Полиграфия
Политология
Право
Предпринимательство
Программирование
Психология
Радиоэлектроника
Религия
Риторика
Сельское хозяйство
Социология
Спорт
Статистика
Страхование
Строительство
Схемотехника
Таможенная система
Теория государства и права
Теория организации
Теплотехника
Технология
Товароведение
Транспорт
Трудовое право
Туризм
Уголовное право и процесс
Управление
Физика
Физкультура
Философия
Финансы
Фотография
Химия
Хозяйственное право
Цифровые устройства
Экологическое право
   

Реферат: АСУ целевыми программами в некоммерческой организации (Программирование)


Форма С-3



РЕГИОНАЛЬНАЯ ОБЩЕСТВЕННАЯ ОРГАНИЗАЦИЯ ИНВАЛИДОВ

«СОРАТНИК»


Смета доходов и расходов на целевую программу
«создания и функционирования патронажной службы» 2001 - 2002 гг.

|Номер |Наименование статей |Планируется на |
|строки|доходов и расходов | |
| | |2001 – 2001 |в том числе |
| | |гг. | |
| | | |2001 г. |2002 г. |
|РАЗДЕЛ I. Доходы некоммерческой организации |
|1.1 |Вступительные взносы |33 000 |15 000 |18 000 |
|1.2 |Членские взносы |220 000 |100 000 |120 000 |
|1.3 |Добровольные целевые |880 000 |400 000 |480 000 |
| |взносы физических лиц | | | |
|1.4 |Добровольные целевые |3 540 200 |1 611 000 |1 929 200 |
| |взносы юридических лиц | | | |
| |ИТОГО по разделу I |4 673 200 |2 126 000 |2 547 200 |
|РАЗДЕЛ II. Расходы некоммерческой организации |
|2.1 |Заработная плата |1 320 000 |600 000 |720 000 |
| |исполнителей программы | | | |
|2.2 |Отчисления во внебюджетные|508 200 |231 000 |277 200 |
| |фонды | | | |
|2.3 |Командировочные расходы |363 000 |165 000 |198 000 |
|2.4 |Канцелярские и |66 000 |30 000 |36 000 |
| |хозяйственные расходы | | | |
|2.5 |Приобретения основных |95 000 |45 000 |50 000 |
| |средств | | | |
|2.6 |Расходы на аренду и |1 650 000 |750 000 |900 000 |
| |содержание зданий и | | | |
| |помещений | | | |
|2.7 |Административные расходы |660 000 |300 000 |360 000 |
|2.8 |Непредвиденные расходы |11 000 |5 000 |6 000 |
| |ИТОГО по разделу II |4 673 200 |2 162 000 |2 547 200 |


«___» ____________ 2000__ г.

Ген. Директор РООИ «Соратник» _____________
Главный бухгалтер
_____________

ПРЕДСЕДАТЕЛЮ
СОВЕТА РЕГИОНАЛЬНОЙ ОБЩЕСТВЕННОЙ
ОРГАНИЗАЦИИ ИНВАЛИДОВ
«СОРАТНИК»
Закревкому Сергею Леонидовичу



От инвалида ____ гр. ____________________________________________
(Ф. И. О.)
Проживающего по адресу: ____________________________________
____________________________________
Телефон:
____________________________________
Инвалидное удостоверение № ____________________________________



ЗАЯВЛЕНИЕ



Прошу Вас включить меня на патронажное обслуживание для обеспечения
лечения на дому. Обязуюсь данный вид помощи получать только в Вашей
организации.



«___» ____________ 2000__ г. Подпись:_____________
Форма С-1



РЕГИОНАЛЬНАЯ ОБЩЕСТВЕННАЯ ОРГАНИЗАЦИЯ ИНВАЛИДОВ

«СОРАТНИК»

В инспекцию МНС РФ № ___

В инспекцию МНС РФ № ___



СПРАВКА


о величине налоговой льготы, заявленной


_____________________________________________________________________

(наименование организации инвестора)
по фактическому взносу
_____________________________________________________________________
(наименование организации получателя)

В соответствии с Законом города Москвы от 29.11.2000 г. №35 "О ставках
и льготах по налогу на прибыль" (подпункт «б» пункта 2 статьи 3)
за ____________________________________________________________200__ г.
(месяц, квартал, полугодие, 9 месяцев, год)

|№ |Показатели |Сумма, руб. |
|п/п | | |
|1. |Сумма фактических взносов, используемых | |
| |получателем за _____ квартал 200__ г. | |
|2. |Величина налоговой льготы, заявленная | |
| |инвестором по строке ______ за отчетный | |
| |период ______ квартала 200__ г. | |


Инвестор:


Руководитель ___________________

Главный бухгалтер_______________
«___» ______________ 200__ г.

М. П.

Получатель:

Руководитель ___________________
Главный бухгалтер_______________
«___» ______________ 200__ г.

М. П.
Министерство здравоохранения РФ
Центральная врачебно-трудовая экспертная комиссия (втэк) № ____



«___» ______________ 200__ г.



СПРАВКА № _____________



Гражданин ___________________________________________________________
(Ф. И. О.)
год рождения 199__ акт № _______________
освидетельствован «___» _________________ 200__ г.,
признан инвалидом ___ группы ________________________,

инвалидность установлена до __________________________.

Причина инвалидности «Увечье связано с аварией на ЧАЭС».
Очередное переосвидетельствование _____________________



Подпись ______________



М. П.
Форма С-2



РЕГИОНАЛЬНАЯ ОБЩЕСТВЕННАЯ ОРГАНИЗАЦИЯ ИНВАЛИДОВ

«СОРАТНИК»



ОТЧЕТ
об использовании средств по договору № ___________ в ____ квартале 200__ г.
согласно Закону города Москвы от 29.11.2000 г. №35 "О ставках и льготах по
налогу на прибыль" (подпункт «б» пункта 2 статьи 3).


Уважаемый __________________________________________________________,
(Ф. И. О.)
полученные от Вас ____________________ рублей израсходованы следующим
образом:
- 20% от перечисленной суммы (_____________ руб.) находятся на р/с РООИ
«СОРАТНИК» и предназначены для оплаты расходов, связанных организацией
работы РООИ «СОРАТНИК»;
- 80% от перечисленной суммы (_____________ руб.), в числе прочих
перечислены на р/с ______________________________

Договор № ____________________

п/п № ________________________


ПРИМЕЧАНИЕ:
перечисленные документы находятся в делопроизводстве РООИ «СОРАТНИК».



«___» ____________ 2000__ г.

Ген. Директор РООИ «Соратник» _____________

Министерство здравоохранения РФ

Московский ордена трудового Красного Знамени научно-исследовательский
институт Диагностики и Хирургии



«___» ____________ 2000__ г.



СПРАВКА

о направлении на санаторно-курортное лечение


Гражданин _________________________________________________ 19___ г. р.
(Ф. И. О.)
участник ликвидации последствий аварии на ЧАЭС и других технологичных
аварий, удостоверение № 111111 серия А год 19___ . Справка ВТЭК об
инвалидности серия _____ № __________
Находился (лась) на обследовании: ______________________________________
Основное заболевание: ________________________________________________
Сопутствующие заболевания: ___________________________________________

Тип курорта: _________________________________________________________

Время (сезон): ________________________________________________________
Необходимость в сопровождении: _______________________________________



Врач радиолог
__________________________
Руководитель отдела
__________________________
Договор № ________

благотворительного пожертвования

г. Москва
"______"______________ 200___ г.


__________________________________________________________________________,

именуемая в дальнейшем Инвестор, в лице
_____________________________________,
действующего на основании Устава с одной стороны, и некоммерческая
организация
РООИ «СОРАТНИК», именуемая в дальнейшем Благополучатель, в лице
Генерального директора Закревского С. Л., действующего на основании Устава,
с другой стороны, заключили настоящий договор о нижеследующем:
1. Общие положения
1. Благотворитель передает Благополучателю денежные средства
(благотворительное пожертвование) для реализации
______________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
________
2. В соответствии с подпунктом "б" пункта 2 статьи 3 Закона города Москвы №
35 от 29 ноября 2000 г. "О ставках и льготах по налогу на прибыль" сумма
налога на прибыль, зачисляемого в бюджет города Москвы, уменьшается на
сумму средств, направленных на реализацию благотворительных программ.
3. Программа прилагается к договору и являются неотъемлемой частью
настоящего договора.
4. Настоящий договор начинает действовать с
________________________________.
Датой окончания договора является ______________________________.
(Настоящий договор вступает в силу с момента заключения и заканчивается
после выполнения принятых сторонами на себя обязательств в соответствии с
условиями договора).
2. Порядок предоставления и расходования пожертвований
1. Средства, предоставляемые по настоящему договору, должны расходоваться в
соответствии с бюджетом и в сроки, предусмотренные программой.
2. Благополучатель должен вести бухгалтерскую документацию в соответствии с
требованиями, предъявляемыми российским законодательством.
Благополучатель обеспечивает доступ представителя Инвестора ко всей
документации, связанной с реализацией прилагаемой программы.
3. Перевод денежных средств на счет Благополучателя осуществляется на
основании программы с учетом текущих потребностей по выплатам.
4. В случае не предоставления отчетов Благополучателем в установленные
сроки или предоставления отчетов не по установленной форме, с
недостоверной информацией или с арифметическими ошибками, Инвестор имеет
право приостановить последующий перевод денежных средств до
предоставления необходимых отчетов или проведения/исправления отчетов в
соответствие. Приостановление последующего перевода денежных средств
производится на срок, равный просрочке предоставления отчетов, или,
соответственно, на срок, который потребовался для приведения отчетов в
соответствие с установленными формами отчетности или исправления ошибок
до их повторной сдачи.
5. Средства, полученные Благополучателем и неиспользованные на реализацию
прилагаемой программы в оговоренные сроки, должны быть возвращены
Инвестору (либо могут быть использованы на другие цели с письменного
согласия Благотворителя).
3. Отчетность
3.1.Благополучатель представляет Инвестору квартальные и годовые отчеты о
достигнутых результатах в течение 20 дней после окончания периода, за
который составляется отчет.
3.2. В течение 30 дней после даты завершения программы Благополучатель
представляет итоговый отчет Инвестору.
4. Порядок изменения и расторжения договора
4.1. Изменение и расторжение договора возможны по соглашению сторон.
Соглашение об изменении или расторжении договора совершается в письменной
форме.
4.2. Благополучатель вправе в любое время до передачи ему пожертвования от
него отказаться. В этом случае договор считается расторгнутым.
4.3. Использование целевых средств не в соответствии с программой и
бюджетом дает право Инвестору расторгнуть договор в одностороннем порядке.
Настоящий договор составлен в двух экземплярах, по одному для каждой
стороны.
Форма С-4



РЕГИОНАЛЬНАЯ ОБЩЕСТВЕННАЯ ОРГАНИЗАЦИЯ ИНВАЛИДОВ

«СОРАТНИК»



ОТЧЕТ


о привлечении средств по ______________________________этапу целевой


(наименование этапа )

программы ________________________________________________________
(название целевой программы)



|№ |Сметные показатели |Плановые |Фактические |
|п/п | |значения |значения |
|1 |Доходы на этап | | |
|2 |Прямые расходы | | |
|3 |Косвенные расходы | | |
|4 |Косвенные расходы / Прямые | | |
| |расходы | | |
|5 |Доходы – Расходы | | |



«___» ____________ 2000__ г.

Заместитель Ген. Директора
РООИ «Соратник» по финансовым вопросам _____________
_______________

Форма С-5



РЕГИОНАЛЬНАЯ ОБЩЕСТВЕННАЯ ОРГАНИЗАЦИЯ ИНВАЛИДОВ

«СОРАТНИК»



Отчет


о расходовании средств на административно - хозяйственную


деятельность по ________________________________________этапу целевой


(наименование этапа )

программы ________________________________________________________
(название целевой программы)


|№ |Наименование статьи |Планируемая |Фактическая |
|п/п | |сумма, руб. |сумма, |
| | | |руб. |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |



«___» ____________ 2000__ г.

Заместитель Ген. Директора
РООИ «Соратник» по финансовым вопросам _____________
_______________

Форма С-6



РЕГИОНАЛЬНАЯ ОБЩЕСТВЕННАЯ ОРГАНИЗАЦИЯ ИНВАЛИДОВ

«СОРАТНИК»



Отчет


о расходовании средств на уставную непредпринимательскую



деятельность по ________________________________________этапу целевой


(наименование этапа )

программы ________________________________________________________
(название целевой программы)


|№ |Наименование статьи |Планируемая |Фактическая |
|п/п | |сумма, руб. |сумма, |
| | | |руб. |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |



«___» ____________ 2000__ г.

Заместитель Ген. Директора
РООИ «Соратник» по финансовым вопросам _____________
_______________

Форма С-7



РЕГИОНАЛЬНАЯ ОБЩЕСТВЕННАЯ ОРГАНИЗАЦИЯ ИНВАЛИДОВ

«СОРАТНИК»



Отчет


о расходовании средств по ______________________________этапу целевой


(наименование этапа )

программы ________________________________________________________
(название целевой программы)



|№ |Наименование статьи |Планируемая |Фактическая |
|п/п | |сумма, руб. |сумма, |
| | | |руб. |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |



«___» ____________ 2000__ г.

Заместитель Ген. Директора
РООИ «Соратник» по финансовым вопросам _____________
_______________

Форма С-8



РЕГИОНАЛЬНАЯ ОБЩЕСТВЕННАЯ ОРГАНИЗАЦИЯ ИНВАЛИДОВ

«СОРАТНИК»



ОТЧЕТ


Выбор оптимальной целевой программы



На «___» ____________ 2000__ г. оптимальной целевой программой является:


|№ п/п |Наименование целевой программы |
| | |
| | |



«___» ____________ 2000__ г.

Заместитель Ген. Директора
РООИ «Соратник» по финансовым вопросам _____________
_______________





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

Глава 1
Введение
АвтоЛИСП - реализация языка программирования ЛИСП, вложенного в
пределах системы АвтоКАД. АвтоЛИСП позволяет пользователям и разработчикам
АвтоКАДА писать макропрограммы и функции на очень высоком, находящем
графическое применение, уровне языка. ЛИСП очень гибок, легок в изучении и
применении.
Замечание
Для более эффективного применения АвтоКАДА нет необходимости изучать
АвтоЛИСП; если у вас нет опыта компьютерного программирования, прочтите
тольно установочные требования в главе 2 - это позволит вам увидеть
применяемые АвтоЛИСПом преимущества многочисленных меню АвтоКАДА. Однако,
если вам нравится программировать, прочтите это руководство до конца,
чтобы узнать как применять АвтоЛИСП для преобразования основного
назначения пакета изготовления чертежей АвтоКАДА в более мощный инструмент
программиста.
Данная книга - справочник, а не учебник по программированию. Хотя в
главе 3 мы и приводим пример практического применения АвтоЛИСПа, мы все
же рекомендуем достать различные тексты на ЛИСПе для изучения этого
языка программирования: Винстон и Хорн "LISP" (второе издание), "Looking
at LISP" Тони Хасемера (обе книги опубликованы Эддисоном Веслей). ЛИСП
- язык, содержащий много диалектов: МакЛИСП, ИнтерЛИСП, ЗетаЛИСП и
КоммонЛИСП. АвтоЛИСП по синтаксису и условным обозначениям наиболее
близок к КоммонЛИСПу, но он с меньшим подмножеством и имеет больше
специфических для АвтоКАДа дополнительных функций. Этот справочник
содержит все функции автоЛИСПа и способы их применения.
1.1 Типы данных в АвтоЛИСПе
АвтоЛИСП содержит несколько различных типов данных:
- lists - списки
- symbols - символы
- strings - строчки
- real numbers - действительные числа
- integers - целые числа
- file descriptors -дескрипторы файла
- AutoCAD entity "names" - "имена" объектов АвтоКАДа
- AutoCAD selection-sets - секции установок АвтоКАДа
- subrs (build-in functions) - (встроенные функции)
Целые числа - 16-битные числа со знаком с диапазоном от -32768 до
+32767. Действительные числа представлены как плавающая точка с двойной
точностью. Строчки могут быть любой длины, их память динамически
распределяется.
АвтоЛИСП содержит несколько встроенных функций по обеспечению базиса
для программирования чертежей в двух и трех измерениях. При работе с
графическими координатами, рассматриваются следующие условные обозначения:

2D points - выражены как перечни двух действительных чисел
(X Y):
(3.400000 7.520000 )
Первое значение - координата X, второе - Y.
3D points - выражены как перечни трех действительных чисел
(X Y Z ):
(3.400000 7.520000 1.000000)
Первое значение - координата X,второе -Y, третье -Z.
Всякий раз при требовании АвтоКАДа ввести определенный тип
(например, точку или масштабный коэффициент) может применяться выражение
этого типа или функция АвтоЛИСПа, вводящая в результате этот тип.
1.2 Вычислитель языка АвтоЛИСП
Вычислитель является основой интерпретатора каждого варианта ЛИСПа.
Он берет строчку входных данных пользователя, вычисляет ее и выдает
результат. В процессе вычисления АвтоЛИСПа участвуют:
- целые, действительные числа; строчки; дескрипторы файла;
встроенные функции - вычисляются по отношению сами к себе;
- символы - вычисляются к значению их текущей компоновки;
- списки - вычисляются согласно их первого элемента, если они
вычисляются в:
. список (или пустой список); список предполагает быть определением
функции, а функция вычисляется с применением значений остальных
элементов списка в качестве параметров.
. название внутренней функции (subrs); оставшиеся элементы списка
проходят в subr как формальные параметры и вычисляются с помощью
subr.
Если в ответ на подсказку АвтоКАДа "Command:" вы вводите выражение
на языке АвтоЛИСП, АвтоЛИСП вычислит выражение и напишет результат.
Подсказка АвтоКАДа "Command:" вновь появится на экране.
Если напечатано или прочитано из файла неправильное выражение,
АвтоЛИСП выдаст следующую подсказку:
n>
где n - целое число, обозначающее сколько уровней левых скобок
осталось незакрытыми. Если появилась эта подсказка, вы должны напечатать n
правых скобок для того, чтобы выйти из этого состояния. Общая ошибка -
игнорирование заключенного в круглых скобках значка (") в строке текста; в
этом случае правые скобки будут интерпритированы как уже процитированные
и не будут учитываться при изменении n. Для того, чтобы исправить это
положение, напечатайте перед n правыми скобками кавычки.
1.3 Лексические условные обозначения
Процедура ввода АвтоЛИСПа имеет несколько форм. Ее можно проделать
следующим образом: находясь в АвтоКАДе напечатать вызов с клавиатуры;
прочитать из ASCII файла или из строчечной переменной. В любом случае
необходимо следующее:
- имена символов могут состоять из любого сочетания печатных
характеристик,кроме следующих: ( ) . ' " ;
- имя символа или числовой константы будут завершаться следующими
знаками:
( ) ' " ; (промежуток) (конец линии)
- выражения могут состоять из многочисленных линий;
- многочисленные промежутки между символами эквивалентны единичному
промежутку. Пока не требуется смещение, вы можете применять их для
придания ясности структуре ваших функций;
- символы и имена функций (subrs) не чувствительны к регистрам в
АвтоЛИСПе. Имена символов могут и не начинаться с цифры;
- константы целых чисел могут начинаться с необязательных знаков "+"
или "-". Как упоминалось ранее, они находятся в диапазоне от -32768 до
+32767;
- константы действительных чисел содержат один или более цифровых
разрядов, сопровождаемые точкой десятичной дроби, после которой следуют
один или несколько цифровых знаков, например ".4" не рассматривается как
действительное число, правильно будет "0.4". Аналогично,"5."
недействительно, правильно - "5.0". Действительные числа могут
применяться в научных записях т.е. могут встретиться необязательное "е"
или "Е", сопровождаемое цифровым показателем;
- буквенные строчки - последовательность символов, заключенная в
кавычки. Внутри строки, взятой в кавычки, символ () означает возможность
включения контрольных символов. Рассмотрим следующие текущие коды:
означает символ ""
e означает выход
n означает новая строка
r означает ввод
t означает табуляцию
nnn означает символ, чей восьмиричный код - nnn
Например, на новой линии появится следующая подсказка:
(prompt "nEnter first point: ")
- единичный цитируемый символ может применяться как сокращение
функции QUOTE. Так, 'foo эквивалентно (quote foo)
- комментарии, взятые из дисковых файлов, могут быть включены в
программы АвтоЛИСПа. Комментарии начинаются с двоеточия и продолжаются до
конца строки. Например,
:This entire line is a comment
:Эта полная строка - комментарий
(setq area (* pi r r )) :Compute area of circle
:Рассчитайте площадь круга
1.4 Условные обозначения примечаний
Это справочное пособие применяет определенные условные обозначения
для документирования режима функций. Например,
(moo ...)
строка цифра
Имя функции показано таким, каким вы должны его ввести. Заключенные в
кавычки элементы данных, следующие за именем функции, определяют количество
и тип параметров, предполагаемых функцией.
В этом промере функция "moo" имеет два необходимых параметра:
строка и цифра. Эллипсис ("...") определяет, что к функции могут быть
присоединены дополнительные цифровые параметры. Не включайте в строку
скобки или эллипсисы, если вы снабжаете функцию ссылками.
Вызов данного формата функции "moo" показан выше; для функции
"moo" будут действительными следующие ссылки:
(moo "Hello" 5)
(moo "Hi" 1 2 3 )
Следующие примеры не соответствуют требуемому формату и приведут к
ошибкам:
(moo 1 2 3 ) (первый параметр должен быть строкой)
(moo "Hello") (должен быть хотя бы один цифровой параметр)
(moo "do" '(1 2)) (второй параметр должен быть строкой,а не перечнем)
Когда необязательный параметр может возникнуть один раз, без
повторений, он заключается в квадратные скобки ("[]"):
(foo [])
Здесь функция "foo" предполагает один строчечный параметр и принимает
один необязательный цифровой параметр. Например, для функции "foo" будут
действительны следующие вызовы:
(foo "catch")
(foo "catch" 22)
В этом примере показаны неправильные вызовы:
(foo 44 13) (первый параметр должен быть строчечным)
(foo "foe" 44 13) (слишком много параметров)
1.5 Изменения и расширения
Обработка ошибки
Если АвтоЛИСП сталкивается с ошибкой во время вычисления, он выдает
сообщение следующей формы:
error:text
где text - описание ошибки. Если установлена функция "ERROR" (не
ноль), АвтоЛИСП,вместо выдачи сообщения, выполняет эту функцию ("text"-
ее единственный параметр). Если"ERROR" не установлена, или граничит с
нулем, вычисление АвтоЛИСПа останавливается, а на экране появится обратный
ход вызова функции и ее вызывающей программы до 100 уровней вглубь.
Глава 2
Установка АвтоЛИСПа
2.1 Требования
Выпуск формата
АвтоЛИСП снабжается любой копией Автокада. Никаких специальных
установок не требуется. Файл "acadl.ovl" на рабочей дискете является
оверлеем АвтоЛИСПа в АвтоКАДе.
Одна из рабочих дискет АвтоКАДа содержит файл
"readme.doc". Просмотрите этот файл; он содержит самые последние
изменения и корректировки в документации АвтоКАДа и АвтоЛИСПа.
2.2 Автоматические функции - файл "acad.lsp"
Начиная сеанс работы графического редактора АвтоКАДа, АвтоЛИСП
загружает файл "acad.lsp" (если такой существует). На этом файле вы можете
задать определения наиболее часто используемых функций и они будут
автоматически высчитываться при редактировании чертежа. См.определение
функции DEFUN в главе 4 .
Глава 3
По садовой дорожке к АвтоЛИСПу
Большое количество мощности АвтоКАДа поступает за счет его
способности заказывать ее. Поближе познакомившись с АвтоКАДом, можно
заметить, что вам бы хотелось, чтобы у него была некоторая возможность,
часто необходимая вам. Вы можете начать добавление последовательности
команд, которые вы часто применяете на экране, кнопок или планшетного
меню. Вы можете определить новые типы линий, образцы штриховки или
текстовый шрифт. Этим вы используете преимущества открытой архитектуры
АвтоКАДа - возможность расширить его и сформировать его в ваш персонально-
спроектированный инструментарий, реагирующий на особенности вашего мышления
и работы.
Язык АвтоЛИСП - наиболее мощное условие для расширения возможностей
АвтоКАДа. Эти, обеспеченныеАвтоКАДом благоприятные условия - реализация
языка программирования ЛИСП, в сочетании с АвтоКАДом. Составляя
программу на АвтоЛИСПе, вы можете добавить команды для АвтоКАДа и иметь
больше мощности для модифицирования АвтоКАДа (что и имеют наши разработчики
программного обеспечения).
Вскоре мы добавим новую команду для АвтоКАДа. В процессе объяснения
принципа работы АвтоЛИСПа, мы дадим вам возможность использования его
мощности для работы на вас. Команда, которую мы собираемся создать,
сориентирована на архитектуру поверхности, но принципы , которые вы
изучите, - релевантные, не считающиеся с вашей областью применения.
3.1 Что вы должны знать перед началом работы
Мы предполагаем,что вы сносно владеете АвтоКАДом - т.е. вы знаете
команды АвтоКАДа и общие принципы их применения. Мы также предполагаем,
что вы знакомы с текстовым редактором, который может создавать ASCII файлы.
Сейчас мы напишем программу, а вы применяйте свой текстовый редактор для
выполнения наших заданий.
В этом примере мы будем применять много функций АвтоЛИСПа.
Последующие главы этого руководства содержат полное объяснение всех этих
функций.
3.2 Задача
Наша задача - создать новую программу для АвтоКАДа, которая рисует
садовую дорожку и заполняет ее круглыми плитами.
Наша новая команда будет иметь следующую последовательность
команд:
COMMAND: PATH (ДОРОЖКА)
Start point of path: start point
(Начальная точка дорожки: начальная точка)
End point of path: end point
(Конечная точка дорожки: конечная точка)
Half point of path: number
(Половина ширины дорожки: число)
Radius of tiles: number
(Радиус плит: число)
Spacing between tiles: number
(Расстояние между плитами: число)
где начальная и конечная точки определяют центральную линию дорожки.
Определяется половина ширины дорожки и вводится радиус круглых плит.
Наконец, определяется расстояние между плитами. Половину ширины дорожки мы
определяем раньше, чем полную ее ширину потому, что это позволяет более
четко определить отрезок типа "резиновая нить" от начальной точки.
3.3 Начало
Мы до конца разовьем эту прикладную задачу (по восходящей). В этой
задаче мы будем применять жесткое задание углов.
АвтоЛИСП, как и многие другие языки программирования, определяет
углы в радианах. Радианы измеряют углы от 0 до 2'PL. Так как большинство
измеряет углы в градусах, мы определим функцию, которая преобразовывает
градусы в радианы. Используя ваш редактор текста, создайте файл GP.LSP.
Введите следующую программу:
: Convert angle in degree to radians
(defun dtr (a)
(*pi (/a 180.0))
)
Давайте рассмотрим, что это даст. Мы определили функцию, применив в
АвтоЛИСПе функцию DEFUN. Функция называется DТR (сокращение от "degrees
to radians" ("градусы в радианы")).
Она содержит один параметр "а" - угол в градусах. В результате -
выражение:
PI * (a / 180.0)
которое в примечаниях ЛИСПа расшифровывается как: "произведение от
PI, умноженное на коэффициент А, разделенное на 180 градусов". PI
предопределяется ЛИСПом как 3.1459...; строчка, начинающаяся с двоеточия,-
комментарий - АвтоЛИСП игнорирует текст, расположенный после двоеточия.
Сохраните файл на диске, затем перейдите на новый чертеж (имя не
имеет значения, т.к. мы не будем сохранять чертеж).
Когда появится подсказка АвтоКАДа "Command:", загрузите функцию,
введя:
Command: (load "gp")
АвтоЛИСП загрузит вашу функцию, отражая ее имя в "DТR". Далее в
этом руководстве, когда мы говорим : "Введите АвтоКАД и загрузите
программу", будет подразумеваться проделанная только что
последовательность.
Сейчас мы проверим функцию, выполняя различные действия. Из
определения радианы, 0 градусов должно соответствовать нулевой радиане;
введите в АвтоКАД строчку:
Command: (dtr 0)
Печатая строку, начинающуюся с левой круглой скобки, вы заставляете
АвтоКАД переводить эту строку в АвтоЛИСП для вычисления. В этом случае мы
высчитываем функцию DIR, только что определенную нами, передавая ей
параметр - ноль. После высчитывания функции, АвтоКАД выдаст результат; так
наш ввод выдаст следующий ответ:
0.000000
Теперь давайте попробуем 180 градусов. Если вы введете
Command: (dtr 180)
вы получите ответ:
3.141593
Это показывает, что 180 градусов равно PI радианам. Если вы
исследуете функцию, вы убедитесь, что это именно так.
Для выхода из АвтоКАДа введите:
Command: QUIT
и на подсказку
Really want to discard all changes to drawing? Y
(Действительно хотите не учитывать все изменения в чертеже? Д)
ответьте
0
в основном меню для возврата к DOS подсказке. Далее в руководстве под
"Выйти из АвтоКАДа" будет подразумеваться эта процедура.
3.4 Ввод
Наша команда garden path (садовая дорожка) запросит у
пользователя следующую информацию: где рисовать дорожку, какой ширины ее
делать, размер конкретных плит и как близко друг к другу их размещать.
Мы определим функцию, которая будет спрашивать пользователя по всем этим
пунктам, а затем просчитает цифры, которые мы проставим в конце команды.
Используя редактор текста, добавьте следующие строчки в GP.LSP (мы
будем применять вертикальную черту для выделения добавляемых строчек).
: Convert angle in degrees to radians
(defun dtr (a)
('pi (/ a 180.0))
)
| :Acquire information for garden path
| (defun gpuser ()
| (setq sp (getpoint "nStart point of path:"))
| (setq ep (getpoint "nEnd point of path:"))
| (setq hwidth (getdist "nHalf width of path:"sp))
| (setq trad (getdist "nRadius of tiles:"sp))
| (setq pangle (angle sp ep ))
| (setq plength (distance sp ep ))
| (setq width (' 2 hwidth))
| (setq angp90 (+pangle (dtr 90))) : Path angle +90 deg
| (setq angm90 (-pangle (dtr 90))) : Path angle -90 deg

Необязательно смещать выражения, содержащие ваши функции. Фактически
вы можете ввести всю программу в одну строку. Однако, смещение и прерывание
строчки служит созданию более понятной и четкой для чтения структуры
программы. Также, расположение начальных и конечных круглых скобок
основных выражений на одной оси, способствует уверенности, что ваши
скобки верно сбалансированы.
Итак, мы определили функцию GPUSER. Она не принимает параметров, а
спрашивает пользователя по всем пунктам. Функция SETQ приводит переменную
АвтоЛИСПа к определенному значению. Первая SETQ приводит переменную SP
(начальная точка ) к результату функции GETPOINT. Пользователь задает точки
для функции GETPOINT. Для получения точки будет применяться строка,
определяющая подсказку АвтоКАДа. "n" заставляет подсказку появиться на
новой линии. Мы применяем функцию GETPOINT для получения значения
середины ширины дорожки, радиуса плиты и расстояния между плитами. Второй
параметр функции GETPOINT , SP, определяет "базовую точку"
расстояния. Расстояние можно создать, определив в АвтоКАДе точку,
соответствующую начальной точке дорожки, и присоединив к ней линию
резиновой нити.
После ввода высчитываются наиболее часто применяемые переменные.
PANGLE обозначает угол от начальной до конечной точки дорожки. Функция
ANGLE вводит этот угол по заданным двум точкам. PLENGTH вводит длину
дорожки. Функция DISTANCE рассчитывает расстояние, заданное двумя точками.
Задав половину ширины дорожки, мы рассчитываем общую ширину, умножив на два
заданную величину. И, наконец, мы рассчитываем и сохраняем угол дорожки
плюс-минус 90 градусов в переменных ANGP90 и ANGM90 соответственно (т.к.
углы в АвтоЛИСПе рассчитываются в радианах, мы перед этими рассчетами
применили функцию DTR для перевода градусов в радианы).
Сохраните эту откорректированную программу на диске, запустите
АвтоКАД и загрузите программу. Сейчас мы проверим функцию ввода, чтобы
убедиться, что она работает правильно.
Приведите в действие функцию, напечатав:
Command: (gpuser)
Ответьте на подсказки следующим образом:
Начальная точка дорожки: 2,2
Конечная точка дорожки: 9,8
Половина ширины дорожки: 2
Радиус плиты: .2
Расстояние между плитами: .1
GPUSER использует ваши ответы для подсчета необходимых ему
дополнительных переменных и на экране появится результат последних
подсчетов (в данном случае - 0,826169, значение ANGM90 в радианах). Вы
можете разгрузить все переменные, установленные функцией GPUSER путем
подстановки восклицательного знака (!) перед их именами. Это заставит
АвтоКАД вычислить переменные и выдать результат на экран. Если вы введете
следующие команды, вы получите следующие результаты:
Command: !sp
(2.000000 2.000000)
Command: !ep
(9.000000 8.000000)
Command: !hwidth
2.000000
Command: !width
4.000000
Command: !trad
0.200000
Command: !tspac
0.100000
Command: !pangle
0.708626
Command: !plength
9.219544
Command: !angp90
2.279423
Command: !angm90
-0.862169
Обратите внимание, что PANGLE, ANGP90 и ANGM90 представлены в
радианах. После проверки этих значений, выйдите из АвтоКАДа и вернитесь в
свой текстовый редактор в GP.LSP.
3.5 Добавление команд в АвтоКАД
Наконец, мы готовы объединить все составные части в команду
АвтоКАДа. Если мы определим функцию с именем C:XXX на языке АвтоЛИСП,
вводя ХХХ (предполагая,что ХХХ не является командой АвтоКАДа) мы
активизируем функцию. Для завершенности ввода в работу нашей команды
PATH, мы определяем функцию C:PATH, что дает возможность нам впоследствии
после загрузки GP.LSP напечатать только PATH и наша команда garden path
будет вычисляться.
Используйте ваш текстовый редактор для добавления указанной строчки
в GP.LSP, затем запустите АвтоКАД и загрузите программу.
С добавлением функции C:PATH, мы добавили команду PATH в АвтоКАД.
Вы можете проверить команду, осуществив следующий ввод:
Команда: PATH
Начальная точка дорожки: 2,2
Конечная точка дорожки: 9,8
Половина ширины дорожки: 2
Радиус плиты: .2
Расстояние между плитами: .1
3.6 Замораживание
Так как наша команда PATH выполняется, все команды, которые она
представляет в АвтоКАД, будут передаваться в область команд/подсказок и все
выбранные ею точки будут отмечаться на экране маленькими черточками
(метками). Раз командная функция налажена, для появления вводных команд
АвтоЛИСПа точно похожих на команды АвтоКАДа, этот ввод может быть
отменен.
Применение функции GETVAR необходимо, чтобы получить текущие
значения режимов АвтоКАДА BLIPMODE и CMDECHO. Они сохраняются через SETQ
в SBLIP и SCMDE. Затем мы применяем функцию SETVAR для того, чтобы
установить обе эти переменные АвтоКАДа в нулевое положение; этим делая
недействительными метки и переданные команды. Обратите внимание, что мы
установили эти переменные в нулевое положение после получения ввода от
пользователя через GPUSER. Мы хотим, чтобы метки остались для
подтверждения ввода пользователя.
После того, как мы закончили черчение дорожки, мы используем функцию
SETVAR для восстановления первоначального значения этих переменных.
Сохраните файл, запустите АвтоКАД и попробуйте сейчас команду PATH.
Испробуйте ее со всех сторон, определяя различные виды ввода как при помощи
поинтера, так и клавиатуры.
3.7 Резюме
За короткий период времени вы ввели новую команду в АвтоКАД. Во
многих системах КАД вам понадобится следующее: доступ к исходному коду
системы КАД, квалификация программиста и большой запас знаний для
проделывания операций, подобно этой. Открытая архитектура АвтоКАДа и
АвтоЛИСПа предоставляет вам возможности, которые большинство продавцов
систем КАД приберегают для себя.
Вы можете применять этот пример как исходную ступень к мастерству
в АвтоЛИСПе. Вы можете начать с модифицирования и расширения команды PATH,
создание которой вы сейчас завершили. Попробуйте начертить квадратные и
шестиугольные плиты. Для более полной ориентации, создайте новую команду,
которая принимает центральную точку и площадь, и рисует квадрат
определенной площади, заполненный плитами. Вы можете просмотреть только что
записанные функции в тесной связи с оставшимися главами этого
руководства. Здесь мы дали очень краткое описание работы и возможностей
функций. АвтоЛИСП содержит много возможностей, опробовав которые и ближе
познакомившись с ними, вы сможете полнее их использовать.
Поскольку вы запустили АвтоЛИСП в работу, вы перешли на новый
уровень совершенства в АвтоКАДе. По мере использования АвтоЛИСПа для
автоматизации изготовления чертежей и конструкторских задач, вы освободите
себя от различных деталей и сможете полностью посвятить себя
проектированию. В "лице" АвтоЛИСПа вы приобрели неутомимого помощника,
который будет служить вам десятилетия.
Глава 4
Функции АвтоЛИСПа
АвтоЛИСП снабжен многочисленными предопределенными функциями. Каждая
функция вызывается путем задания ее имени (верхний или нижний регистр) как
первого элемента списка, с параметрами (если такие существуют) как
последующими элементами списка.
В этой главе вы найдете алфавитный список основных базовых функций
АвтоЛИСПа. Для удобства пользования функции сгруппированы в предметном
указателе в конце справочника. Вы обнаружите, что многие функции
стандартные, их можно обнаружить в каждой реализации языка программирования
ЛИСП. Другие же функции уникальны для интерактивных графических
программных средств, обеспечиваемых АвтоКАДом. В последующих главах
описываются некоторые функции с улучшенными свойствами.
4.1 (+ ...)
Эта функция вводит сумму всех <чисел>. Она может применяться с
действительными и целыми числами. Если <числа> - целые числа, результат
будет выражен целыми числами; если же одно из чисел - действительное, целые
числа переходят в действительные и результат будет выражен действительным
числом.
Например:
(+1 2) вводит 3
(+1 2 3 4.5) вводит 10.500000
(+1 2 3 4.0) вводит 10.000000
4.2 (- < number > ...)
Эта функция вычитает второе <число> из первого и вводит разницу.
Если задано более двух <чисел>, из первого числа вычитается сумма от
второго до последнего элемента и вводится конечный результат. Если
задано только одно <число>, вводится результат вычитания его из нуля. Эта
функция может применяться с действительнвми и целыми числами, со
стандартными правилами перехода.
Например:
(-50 40) вводит 10
(-50 40.0 2) вводит 8.000000
(-50 40.0 2.5) вводит 7.500000
(-8) вводит -8
4.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, если
<число 1> не равно <числу 2>, в противном случае вводится 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 ( менее или равно второму и nil в других случаях. Если задано
более двух <чисел>, 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
11 (- )
Эта функция вводит подразрядный НЕТ (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 (c

Новинки рефератов ::

Реферат: Личные права и свободы граждан (Право)


Реферат: Проект маркетинг-микс для салона Василеостровский (Маркетинг)


Реферат: Защита прав потребителя по законодательству Российской Федерации (Гражданское право и процесс)


Реферат: Поверхности второго порядка (Математика)


Реферат: Нотариат, его задачи и место в системе государственных органов (Гражданское право и процесс)


Реферат: Изучение готовности к риску (Психология)


Реферат: История Византии "От рождения до средних веков" (История)


Реферат: Жан-Жак Руссо (Культурология)


Реферат: Разработка структуры локальной вычислительной сети многопрофильного предприятия (Цифровые устройства)


Реферат: Большевики, упавшие с неба (Политология)


Реферат: Необходимая оборона, понятие, признаки, условия правомерности (Уголовное право и процесс)


Реферат: База данных "Бюро знакомств" (Компьютеры)


Реферат: Вынужденное явление Рамана (Физика)


Реферат: Облік, контроль та аналіз формування прибутку підприємства та розрахунок з бюджетом його оподаткуванн (Бухгалтерский учет)


Реферат: История развития Internet (Компьютеры)


Реферат: Англо-германские противоречия накануне первой мировой войны (История)


Реферат: История развития жизни на земле (Биология)


Реферат: Унитаризм (Теория государства и права)


Реферат: Розрахунки й оптимізація характеристик систем електрозв’язку. (Расчёты и оптимизация характеристик систем электросвязи) (Радиоэлектроника)


Реферат: Социология (Социология)



Copyright © GeoRUS, Геологические сайты альтруист