Подпрограммы. Организация ветвлений


Подпрограммы, ветвления, циклы, логические функции.
1. Функции сравнения:
2. Равенство (=<атом_1><атом_2>), результат – NIL или Т
3. Неравенство (/=<атом_1><атом_2>)
4. <= (<=<атом_1><атом_2>…)
5. > (><атом_1 ><атом_2>…) если атом_1>атом_2>…>атом_n, то результат Т
6. >= (>=<атом_1><атом_2>…)
7. проверка идентичности двух выражений
(EQ <выраж.1><выраж.2>)
Определяется идентичны ли выражения, то есть являются они фактически одним объектом (один создан через другой с помощью SETQ)
(SETQ A `(10 20 30))
(SETQ B `(10 20 30))
(SETQ C B)
(EQ A C) — > NIL
(EQ B C) — > T
8. равенство значений выражений
(EQUAL <выраж.1><выраж.2>[<допуск>]) функция проверяет, равны ли значения выраж.1 и выраж.2 в пределах допуска.
(SETQ X PI Y 3.14159)
(EQUAL X Y) — > NIL
(EQUAL X Y 0.0005) — > T
9. Логические функции
10. Логическая “И”
(AND <выраж.1>…) если все функции определены (не являются пустым списком), то результатом функции будет T. Если хотя бы одно равно NIL, то результат NIL.
(SETQ X “Вася” Z NIL F 5)
(AND X Z F) — > NIL
(AND X F) — > T
11. Логическая “ИЛИ”
(OR <выраж.1>…) если хоть одно выраж. Т, то результат – Т
(OR X Z F) — > T
12. Логическое “НЕТ”
(NOT <выраж.>…) функция возвращает Т, если аргумент NIL и наоборот.
(SETQ P1 `(10 20 30) P2 NIL P3 ( ))
(NOT P1) — > NIL
(NOT P2) — > T
(NOT P3) — > T
13. Функция проверки наличия
(BOUNDP <атом>). Т, если атом имеет какое либо значение NIL, если ничего нет.
(SETQ A S B NIL)
(BOUNDP A) — > T
(BOUNDP B) — > NIL
14. Функция определения пустоты
(NIL <элемент>). Возвращает обратный элемент.
(NIL B) — > T
15. Функция проверки знака
(MINUSP <атом>) возвращает Т, если атом целое или действительное число со знаком “ — ”.
(SETQ A –5 B “TEXT” C 5)
(MINUSP A) — > T
(MINUSP B) — > NIL
(MINUSP C) — > NIL
16. Функция определения нуля
(ZEROP <атом>) Т, если атом равен нулю, NIL – в противном случае.
(SETQ A –15 B 0.0 C B)
(ZEROP A) — > NIL
(ZEROP B) — > T
(ZEROP C) — > T
функция не определена, если атом – не число.

8) функция определения типа элемента
NUMBERP <число>
Функция определяет значение числа, если оно целое или действительное возвращает T, иначе NULL.
(SET Q A “TEXT” B –0.5 C 5)
(NUMBERP A)->NIL
(NUMBERP B)->T
(NUMBERP C)->T
9) функция определения истинности стека
(LISTP <элемент>)
если в качестве элемента список, то результат T
(SETQ A `(10 20) B () C NILL)
(LISTP A)->T
(LISTP B)->T
(LISTP C)->NIL
10) функция с обратным действием
(ATOM <элемент>)
(ATOM B)?NIL
3. Функции ветвления
1)(IF <условие><функция 1>[<функция 2>]) условие любое выражение. Функция 1 вычисляет значение условия, если оно не NIL. Если условие пусто, то выполняется функция 2
2)выполняется несколько действий в результате выполнения одного условия
(PROGN <выражение>…)
Объединяем последовательность функций в макрофункцию
(IF(AND
(EQUAL(GETVAR “GRIDMODE” “1”)
(EQUAL(GETVAR “SNAPMODE” ”0”)
(PROGN
(COMMAND “LIMITS” “0,0” “210,297” “”)
(PROMPT “n Установлена форма A4”)
); end prong
);end if
3)Функция проверки нескольких условий
(COND (<условие1><выражение1>…)
(<условие2><выражение2>))
Вычисляем 1-е условие. Если оно выполняется, то вычисляется выражение1. Если уловие1 не выполняется то проверяется условие2.
(COND (=X 0)(SETQ Y 0)
(<X 0)(SETQ Y (-X2))
(>X 0)(SETQ Y (*Y2))
); end cond
4. Организация циклов
1)(REPEAT <число><выражение>)
Выполняется выражение заданное число раз и возвращает результат последнего выражения. В качестве числа может быть и выражение, которое должно иметь целый результат.
(SETQ A 0.0 B5 C 10)+AB
(REPEAT B(SETQ A))
Выполняется 5 раз операция присваивания переменной A и суммы B и C
2)(WHILE <условие><выражение>…)
(WHILE (>= C 0)
(SETQ C (-C 1))