CAD二次开发电子教案 第3章课件.ppt

CAD二次开发电子教案 第3章课件.ppt

ID:57055484

大小:136.00 KB

页数:28页

时间:2020-07-30

CAD二次开发电子教案 第3章课件.ppt_第1页
CAD二次开发电子教案 第3章课件.ppt_第2页
CAD二次开发电子教案 第3章课件.ppt_第3页
CAD二次开发电子教案 第3章课件.ppt_第4页
CAD二次开发电子教案 第3章课件.ppt_第5页
资源描述:

《CAD二次开发电子教案 第3章课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第3章程序的流程控制和AutoLISP文件3.1程序的流程控制AutoLISP程序的流程通过流程控制函数控制。3.1.1分支结构1.(cond(测试表达式1结果表达式1)[(测试表达式2结果表达式2)]…)该函数从第一个子表起,计算每一个子表的测试表达式,直至有一个子表的测试表达式成立为止,然后计算该子表的结果表达式,并返回这个结果表达式的值。例如,当i小于等于1时,n=1;小于等于2时,n=4;小于等于3时,n=10;其它情况下n=100。用cond函数实现变量n和i之间以上关系的源代码如下:测试表达式1结果表达式1测试表达式2结果

2、表达式2测试表达式n结果表达式n成立成立成立不成立不成立不成立测试表达式1结果表达式1测试表达式2结果表达式2测试表达式n结果表达式n成立成立成立不成立不成立不成立T(其余)结果表达式(setqn(cond((<=i1)1)((<=i2)4)((<=i3)10)(t100)))说明:该函数类似于C语言的switch语句,最后一个测试表达式“t(或T)”相当于C语言的“default”,指其余的情况,例如i等于5时,n等于100,也可以缺少这个测试表达式。与C语言switch语句不同的是,若某一测试表达式成立,即返回相应结果表达式的值,

3、不再向下测试。例如,上述表达式中,若i等于0,已满足第一个测试表达式(<=i1),返回结果表达式的1,最后结果是n等于1,运算结束。2.(if测试条件表达式表达式1[表达式2])若测试条件表达式结果为真,执行表达式1,否则,执行表达式2。例如:(if(>a1)(setqb2))该表达式的含义是;如果a大于1,则b等于2,否则不作任何计算,求值结束。(if(>a1)(setqb2)(setqb3))该表达式的含义是;如果a大于1,则b等于2,否则b等于3,求值结束。注意:该函数最多只有3个变元,即测试条件表达式、表达式1和表达式2。先分

4、析下列程序代码:测试条件表达式表达式1成立表达式2测试条件表达式表达式1成立不成立(if(>a1)(setqb2)(print(+ba))(setqb4)(printb))该程序段的本意是,若条件成立,b等于2,然后打印a与b之和,否则b等于4,然后打印b。但是在执行该程序段时,首先检查if函数变元的数量,第1个变元是测试条件表达式,它对应表达式(>a1),第2个变元是条件成立时执行的表达式,它对应表达式(setqb2),第3个变元是条件不成立时执行的表达式,它对应表达式(print(+ba)),那么后面的两个表达式就是多余的变元,因

5、此显示“toomanyarguments(变元太多)”的出错信息。若将该程序段改写为以下代码:(if(>a1)((setqb2)(print(+ba)))((setqb4)(printb)))用括号将条件成立或不成立的多个表达式括起,虽然变元的数量改为3个,但会出现“error:badfunction:2”的出错信息。原因是在计算条件成立的表达式时,首先计算内层表(setqb2),将其返回值“2”作为外层表的函数名,显然这是一个坏的函数名。利用progn函数可以很好地解决了本程序段存在的问题。3.(prong表达式...)该函数将n个

6、表达式组合起来,作为if函数的一个表达式。在执行时,按顺序计算n个表达式,返回最后一个表达式的计算结果。例如:(if(>a1)(progn(setqb2)(print(+ba)))(progn(setqb4)(printb)))该程序段的执行过程是,若条件成立,b等于2,然后打印a与b之和,返回a与b之和;若条件不成立,b等于4,然后打印4,返回4。3.1.2循环结构1.(repeat整数n表达式…)重复执行n次,对所有的表达式求值,返回最后一个表达式的计算结果。例如:(setqa1b100)(repeat10(setqa(1+a))

7、其它表达式…(setqb(+10b)))执行结果:a等于11,b等于200,返回值为200。2.(while测试式表达式…)若测试结果不为nil,执行各表达式,直至测试结果为nil。例如:(setqi1a10)(while(<=i10)(setqa(+a10))其它表达式…(setqi(1+i))执行结果:i等于11,a等于110,返回值为11。例如,定义求解百钱买百鸡的函数。题目是若母鸡每只3个钱,公鸡每只2个钱,小鸡每只0.5个钱。用100个钱买100只鸡,有几个答案,每个答案各有几只母鸡、公鸡和小鸡(不包括0只),打印所求的结果

8、。该例没有合适的计算公式,只能利用枚举,试出合适的结果。首先分析母鸡数量的范围,如果母鸡等于20,剩余40个钱。用剩下的钱至少买1只公鸡之后,可以买76只小鸡,但鸡的总数为97(小于100),所以母鸡的数量应小于20。同

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。