Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
METHOD / Основы САПР / AutoLISP2006.doc
Скачиваний:
87
Добавлен:
05.03.2016
Размер:
1.04 Mб
Скачать

8. Условное ветвление программ

Каждая программа имеет свою логическую структуру. Ветвление - это способ управления ходом выполнения программы. Условные операторы - это средство управления ветвлением программ. Язык AutoLisp имеет две функции ветвления, IF и COND. Условное ветвление: подразумевает проверку какого-то усло вия, по результатам которой осуществляется переход. Условия содержатся в условных выражениях. использующих операторы отношения и логические операторы. Условные выражения могут содержать любые выражения языка AutoLisp.

(if (логическое отношение) (тогда-выражение)(иначе-выражение))

Эта функция использует выражение по условию. Если логическое отношение прини-мает значение T (true - истина), то исполняется выражение - тогда, в противном случае - выражение - иначе. Последнее выражение не обязательно. Возвращает значение выполненного по условию выражения. Если выражение-иначе отсутствует и логическое отношение имеет результат nil (false - ложь), то IF возвращает nil.

Например: (if (and (/= cx 0) (> cx -1)) (setq qx 100))

Если переменная cx не равна 0 и (логическое and) cx больше -1, то переменной qx будет присвоено значение 100, в противном случае значение qx не изменится.

(if (< nx 10) (setq bx 20) (setq bx 30))

Если переменная nx меньше 10 то переменной bx будет присвоено значение 20, иначе переменной bx присваивается значение 30.

Иногда требуется по условию выполнить не одно, а несколько выражений. В этом случае используют функцию PROGN. которая последовательно вычисляет каждое выражение и возвращает значение последнего.

Например: (if (= a b) (progn (setq a (+а 10))

(setq b (- b 10)) )

(progn (setq pt1 (list 10.3 20.5))

(setq pt2 (list 100,88 -32.5))

(command “LINE” pt1 pt2 “”) ) )

Если выполняется условие равенства переменных a и b то им присваиваются новые значения, в противном случае определяются две точки на плоскости pt1 и pt2 (два списка) между которыми проводится отрезок прямой функцией COMMAND.

(cond ((логическое отношение 1) (выражение1))

((логическое отношение 2) (выражение2))

((логическое отношение 3) (выражение3))

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

)

COND - воспринимает в качестве аргументов любое число списков типа -

- ((логическое отношение) (выражение)). Функция оценивает по очереди первые элементы списков - (логическое отношение )до тех пор, пока не встретится логическое отношение c результатом Т (true - истина) и вычисляет то выражение, которое следует за ним. Если логическое отношение имеет результат nil (false - ложь), то выражение следующее за ним не вычисляется.

Функция возвращает значение последнего выражения в субсписке. COND - основная функция условия в языке AutoLisp.

Например: (setq ch (getint ”Enter integer nambe\n”)

(setq rt (getstring "Enter symbol:\n"))

(cond ((= rt "x")

(progn (setq s1 (chr ch)) (if (> ch 60) (setq ss (strcat rt s1))) ))

((= rt "y") (setq ss (strcat rt (chr ch))) )

((= rt "Y") (setq ss (strcat rt (chr ch))) )

((and (/= rt "x") (/= rt "y")) (setq s_all (chr ch)) )

)

Переменной ch присваивается значение целой константы введенной пользователем. Управляющий символ \n в конце запроса ”Enter integer nambe” организует ввод с новой строки. Переменной rt присваивается значение строковой константы введенной пользо-вателем. В зависимости от значения rt (следует обратить внимание - COND различает большие и маленькие буквы) будут выполняться то или иное действие.

Соседние файлы в папке Основы САПР