Використання змінних. Функція SETQ. Функції GET.
Якщо при виконанні функції який-небудь аргумент представлений змінною, то цій змінній повинно бути раніше присвоєне значення (число, рядок тексту, список і ін.). Основний засіб для присвоєння значень змінних - функція SETQ:
(SETQ <змінна1> <вираз1> [<змінна2> < вираз2 >]...)
Приклади:
(SETQ A 10.0) ; записує 10 в А
(SETQ B ( + 1 2 3)) ; записує в B результат додавання
; 1,2 і 3, тобто 6
(SETQ А 1 В 2 С 3) ; записує 1 в А, 2 в B, З в С, .
; повертає значення 3
; Тому
(SETQ D (SETQ A 1 В 2 С 3)) ; записує 3 у D – повертає значення останнього виразу
Для введення значень змінних користувачем служать функції типу GET. До них відносяться:
GETINT - уведення цілого числа;
GETREAL - уведення речовинного числа;
GETSTRING - уведення рядка тексту;
GETPOINT - уведення точки;
GETDIST - уведення відстані;
GETANGLE - уведення кута і деякі інші функції.
Роботу функцій GETINT, GETREAL, GETSTRING розглянемо на прикладі функції GETINT, що у загальному виді виглядає так:
(GETINT [<підказка>])
Ця функція створює паузу у виконанні програми й очікує, поки користувач уведе з клавіатури ціле число. Функція повертає введене число. Необов'язковий аргумент < підказка > - це текстова константа. Якщо цей аргумент присутній, то під час паузи на екрані буде высвечиваться текст підказки.
Аналогічно записуються і діють функції GETREAL і GETSTRING.
(GETPOINT [ <крапка > ] [ <підказка > ])
Функція створює паузу й очікує введення крапки. Крапка може бути введена шляхом указівки на екрані або шляхом набору її координат на клавіатурі у виді X, Y. Функція повертає координати крапки (у виді списку - див. п. 2.4.). Аргумент < підказка > має той же зміст, що і для функції GETINT. Якщо задано аргумент <крапка>, то при переміщенні курсору на екрані буде відображатися "гумова лінія" від даної "опорної" крапки до поточного положення курсору.
(GETDIST [ < крапка >][< підказка > ])
Функція створює паузу й очікує уведення відстані. Відстань може бути зазначено трьома способами:
як дійсне число з клавіатури;
шляхом указівки двох крапок (буде визначена відстань між крапками);
шляхом указівки другої крапки при наявності аргументу < крапка >.
У двох останніх випадках між першою крапкою і поточним положенням курсору малюється "гумова лінія".
Функція повертає дійсне число, рівне уведеній відстані. Неважко бачити, що перший спосіб завдання відстані для користувача (і для програми) буде еквівалентний дії функції GETREAL.
Аналогічно записується і діє функція GETANGLE, що повертає кут (у радидианах) між прямій, заданої двома крапками, і віссю X.
Приклади:
; Програма 1. Побудова кола через режим команд AutoCAD в рядку COMMAND:
(SETQ PC (GETPOINT "\n Введіть центр кола:"))
; Введення центра кола
(SETQ R (GETDIST PC "\n Введіть радіус:"))
; Уведення радіуса
(COMMAND "CIRCLE" PC R)
; Коло з'являється на екрані
Але програма в такому вигляді невдала, тому що для її виконання прийдеться набирати рядок за рядком, введення рядків буде чергуватися з їхнім виконанням, а для повторного використання програми її прийдеться набрати заново. Реальний користувач так працювати не буде.
Остаточний варіант:
; Програма 2. Побудова кола через функцію ALISP:
(DEFUN KOLO () ; Ім'я описуваної функції
(SETQ PC (GETPOINT "\n Введіть центр:"))
(SETQ R (GETDIST PC "\nпВведіть радіус:"))
(COMMAND "CIRCLE" PC R)
) ; defun
Таку програму можна записати на диск, потім у будь-який час викликати з диска (докладніше про це див. у п. 2.5) і запустити на виконання, набравши (KOLO) у відповідь на запрошення ACAD. (Нагадаємо, символ "\n" у тексті підказок означає "переведення рядка").
Дата добавления: 2016-11-02; просмотров: 716;