首页 > 代码库 > Visual LISP 第3章 程序的流程控制盒AutoLISP文件(1)程序的流程控制
Visual LISP 第3章 程序的流程控制盒AutoLISP文件(1)程序的流程控制
AutoLISP程序的流程通过流程控制函数控制。
1.分支结构
(1)(cond(测试表达式1 结果表达式1)[(测试表达式2 结果表达式2)]……)
【例】
1 (setq n( cond((<= i 1) 1)2 ((<= i 1) 1)3 ((<= i 2) 4)4 ((<= i 3) 10)5 (t 100)6 )7 )
说明:该函数类似C语言中的switch语句。最后一个测试表达式"t(或T)"相当于"default",指其余情况。也可缺少这个测试表达式。与C语言switch不同的是,若某一测试表达式成立,即返回相应结果表达式的值,不在向下测试。如果i等于0,n值就为1,运算结束。
(2)(if 测试条件表达式 表达式1 [表达式2])
若测试条件表达式结果为真,则执行表达式1,否则,执行表达式2.例如:(if(> a 1) (setq b 2))含义是:如果a大于1,则b等于2,否则不进行任何计算,求值结束。(if(> a 1) (setq b 2) (setq b 2))含义是:如果a大于1,则b等于2,否则b等于3,求值结束。
当条件表达式成立时,要执行多个表达式的时候,需要用到progn函数。
(3)(progn 表达式……)
(if(> a 1) (progn (setq b 2) (print (+ b a)) ) (progn (setq b 4) (print b) ))
解释:如果条件成立,则b等于2,打印a和b的和,返回a和b的和。否则,b等于4,打印b,返回b的值。
2.循环结构
(1)(repeat 整数n 表达式……)
重复执行n次。对多有的表达式求值,返回最后一个表达式的计算结果。
1 (setq a 1 b 100)2 (repeat 103 (setq a(+ 1 a))4 (setq b(+ 10 b))5 )
(2) (while 测试式 表达式……)
(setq i 1 a 10) (while ( <= i 10) (setq a(+ a 10)) (setq i(1+ i)) )
不知道为什么总出错。
解决:因为<=需要连起来写
Visual LISP 第3章 程序的流程控制盒AutoLISP文件(1)程序的流程控制
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。