Page 30 - AutoLISP и Visual LISP в среде AutoCAD
P. 30
2.12. ВЕТВЛЕНИЕ
Ветвление – это способ управления ходом выполнения программы.
AutoLisp имеет две функции ветвления: if и cond.
(if тест_выражение выражение_тогда [выражение_иначе])
Эта функция использует выражение по условию. Если тест_выражение
не nil, то используется выражение_тогда, в противном случае
выражение_иначе. Последнее выражение не обязательно. Если
выражение_иначе отсутствует и тест_выражение - nil, то if возвращает nil.
Иногда требуется по условию выполнить не одно, а несколько
выражений, в то время как функция if не позволяет этого. В этом случае
используют функцию
(progn выражение_1 выражение_2 … выражение_n),
которая последовательно вычисляет каждое выражение и возвращает
значение последнего.
Пример:
(if (= a b)
(progn
(princ "\nA = B ")
(setq a (+ a 10) b (- b 10))
);progn
);if
Функция (cond [(тест результат ...) ...]) воспринимает в качестве
аргументов любое число списков. Она оценивает по очереди первые
элементы списков до тех пор, пока не встретится элемент, отличный от nil.
Затем вычисляется то выражение, которое следует за тестом, и возвращает
последнее выражение в подсписке. Если в подсписке только одно выражение
(например, результат отсутствует), то возвращается значение выражения
тест.
Пример:
(cond
((= s "Y") 1)
((= s "y") 1)
((= s "Д") 1)
((= s "д") 1)
((= s "N") 0)
((= s "n") 0)
((= s "Н") 0)
((= s "н") 0)
(t nil)
);cond
Как видно из представленного выше примера, функция cond возвращает
нуль или единицу в зависимости от введенной пользователем строковой
переменной s.
29