zoukankan      html  css  js  c++  java
  • 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 10
    3   (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))
     )

    不知道为什么总出错。

    解决:因为<=需要连起来写

  • 相关阅读:
    10天学安卓-第八天
    10天学安卓-第七天
    10天学安卓-第六天
    10天学安卓-第五天
    10天学安卓-第四天
    10天学安卓-第三天
    透过 Cucumber 学习 BDD
    应对复杂软件的思考
    管理任务就是管理时间
    Running Dubbo On Spring Boot
  • 原文地址:https://www.cnblogs.com/xueniwawa/p/3966981.html
Copyright © 2011-2022 走看看