1.lisp数据类型
INT 整型
REAL 实数型(最多有6位小数)
STR 字符串型
2.预定义符号
nil 尚无定义或者false
T 常量
PAUSE 暂停
PI 常量π
3.赋值函数
(setq x 1.5 y 20 p "center");给x、y、p赋值,返回值center。
4.查询变量的值和数据类型
command:!a
或者直接输入a;返回a的值
command:(type a)
或者直接输入(type a);返回a的数据类型
5.quote函数
(quote(10 20 ...))
(quote(10 20))或者'(10 20);表示禁止对表求值,返回(10 20)
定义二维点(setq p '(10 20))
6.定义函数
(defun 函数名(变元.../局部变量...) 表达式... )
7.调用函数
(函数名 变量)
8.调用CAD命令
(command "autocad命令" "所需数据" ...)
如绘制圆心(2,4),半径为5的圆
(command "circle" "2,4" 5)或者(command "circle" '(2 4) 5)
9.画矩形
(defun c:rect1(/ p1 p2 p3 p4)
(setq p1 (getpoint "\n输入矩形的一个角点"))
(setq p3 (getcorner p1 "\n输入矩形的另一个角点:"))
(setq p2 (list(car p3) (cadr p1)))
(setq p4 (list(car p1) (cadr p3)))
(command "pline" p1 p2 p3 p4 "c")
)
10.cond函数
多条件判断
(cond(测试表达式1 结果表达式1) (测试表达式2 结果表达式2) ...);从第一个子表起,测试每个子表的测试表达式直至有一个子表测试表达式成立,计算该子表的结果表达式并返回这个结果表达式的值。
(setq n(cond((<= i 1) 1);i<=1时,n=1
((<= i 2) 4);i<=2时,n=4
((<= i 3) 10);i<=3时,n=10
(t 100);i取其它值时,n=100
)
)
11.if函数
条件判断
(if (> a 1) (setq b 2));如果a>1,b=2。
(if (> a 1) (setq b 2) (setq b 3));如果a>1,b=2;否则b=3。
12.progn函数
按顺序执行多个表达式
(progn 表达式...)
(if(> a 1)
(progn (setq b 2)
(print(+ b a))
)
(progn (setq b 4)
(print b)
)
)
13.循环结构
(repeat 整数n 表达式...)
(setq a 1 b 100)
(repeat 10
(setq a(+ 1 a))
...
(setq b(+ 10 b))
)
;执行结果a=11,b=200返回200。
14.while函数
(while 测试式子 表达式...)
(setq i 1 a 10)
(while (<= i 10)
(setq a (+ a 10))
...
(setq i (+ 1 i))
)
;执行结果i=11,a=110,返回值11。
15.例子:百钱买百鸡(母鸡3钱一个,公鸡2钱一个,小鸡0.5钱一个,用100钱买100鸡有几种买法?)
分析:
母鸡 公鸡 小鸡
单价 3 2 0.5
个数 20 0 80 100
总价 60 0 40 100
分析母鸡最多20只
母鸡 公鸡 小鸡
单价 3 2 0.5
个数 0 34 66 100
总价 0 68 33 101
分析公鸡最多34只
程序如下
(defun chicken(/ hen cock chick cost);定义函数和母鸡、公鸡、小鸡、费用局部变量
(setq hen 1);给母鸡赋值1
(while (< hen 20);母鸡最多20只
(setq cock 1)
(while (< cock 34);公鸡最多34只
(setq chick (- 100 hen cock))
(setq cost (+ (* 3 hen) (* 2 cock) (* 0.5 chick)));三种