决策结构需要程序员指定一个或多个条件由程序进行评估或测试,以及要执行的语句或语句如果条件被确定为true,如果条件被确定为false那么选择要执行其他语句。

下面是在大多数编程语言中一个典型的决策结构的一般形式为:

LISP提供了以下类型的决策构造。点击以下链接,查看其详细信息。

Construct

描述

cond

这个结构是用于用于检查多个测试行动作条件。它可以嵌套if或其他编程语言语句。

if

if结构有多种形式。在最简单的形式,它后面跟着一个测试条,测试操作和一些其它相应措施(次)。如果测试子句的值为true,那么测试的动作被执行,否则,由此产生的子句求值。

when

在最简单的形式,它后面跟着一个测试条和测试操作。如果测试子句的值为true,那么测试的动作被执行,否则,由此产生的子句求值。

case

这种结构实现了像cond 构造多个测试行动语句。但是,它会评估的关键形式,并允许根据该键的形式评价多个行动语句。

LISP的cond特殊构造

在LISP语言中cond结构是最常用的,以允许分支。

cond的语法是:

(cond(test1action1)(test2action2)...(testnactionn))

在cond 语句中每个子句包含一个条件测试,并要执行的动作。

如果第一次测试下面的芯线,为test1,被评估为true,那么相关的行动的一部分, action1执行,返回它的值,及本子句的其余部分被跳过。

如果test1的计算结果是nil,然后控制移动到第二个子句,而不执行action1,和相同的流程进行后续处理。

如果没有试验条件计算结果为真,那么cond语句返回nil。

示例

创建一个名为main.lisp一个新的源代码文件,并在其中输入如下代码:

(setq a10)(cond((>a20)(format t"~% a is less than 20"))(t(format t"~% value of a is ~d "a)))

当单击Execute按钮,或按下Ctrl+ E,LISP立即执行它,返回的结果是:

value of ais10

请注意,第二个子句中t保证的是,如果没有其他的将最后完成的动作。

if结构

如果该宏后跟一个测试子句计算为 t 或nil。如果测试子句计算到t,然后按照测试子句的动作被执行。如果它是零,那么下一个子句进行评估计算。

if的语法:

(if (test-clause) (

示例1

创建一个名为main.lisp一个新的源代码文件,并在其中输入如下代码:

(setq a10)(if(>a20)(format t"~% a is less than 20"))(format t"~% value of a is ~d "a)

当单击Execute按钮,或按下Ctrl+ E,LISP立即执行它,返回的结果是:

value of ais10

示例2

if子句后面可以跟一个可选的then子句:

创建一个名为main.lisp一个新的源代码文件,并在其中输入如下代码:

(setq a10)(if(>a20)then(format t"~% a is less than 20"))(format t"~% value of a is ~d "a)

当您单击Execute按钮,或按下Ctrl+ E,LISP立即执行它,返回的结果是:

aisless than20value of ais10

示例 3

还可以创建使用if子句的if-then-else类型声明。

创建一个名为main.lisp一个新的源代码文件,并在其中输入如下代码:

(setq a100)(if(>a20)(format t"~% a is greater than 20")(format t"~% a is less than 20"))(format t"~% value of a is ~d "a)

当单击Execute按钮,或按下Ctrl+ E,LISP立即执行它,返回的结果是:

aisgreater than20value of ais100

when构造,

该when宏,后面跟着一个测试子句计算为t或为零。如果测试条被评估计算为nil,则任何形式的评估及nil返回,但是它的测试结果为t,则下面的测试条的动作被执行。

when宏的语法:

(when (test-clause) (

示例

创建一个名为main.lisp一个新的源代码文件,并在其中输入如下代码:

(setq a100)(when(>a20)(format t"~% a is greater than 20"))(format t"~% value of a is ~d "a)

当您单击Execute按钮,或按下Ctrl+ E,LISP立即执行它,返回的结果是:

aisgreater than20value of ais100

case构造

case结构实现像cond结构多个测试动作语句。但是,它会评估的键形式,并允许根据该键的形式评价多个动作语句。

该case宏的语法是:

The template for CASE is:

(case(keyform)((key1)(action1action2...))((key2)(action1action2...))...((keyn)(action1action2...)))

示例

创建一个名为main.lisp一个新的源代码文件,并在其中输入如下代码:

(setq day4)(caseday(1(format t"~% Monday"))(2(format t"~% Tuesday"))(3(format t"~% Wednesday"))(4(format t"~% Thursday"))(5(format t"~% Friday"))(6(format t"~% Saturday"))(7(format t"~% Sunday")))

当您单击Execute按钮,或按下Ctrl+ E,LISP立即执行它,返回的结果是:

Thursday

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

lisp语言cond和if套用_LISP - 决策相关推荐

  1. lisp语言cond和if套用_LISP语言入门(CLISP)

    曾经翻译整理的一篇LISP语言的入门文章,与大家分享. (请勿转载) ---------------------------------------------------------------- ...

  2. lisp语言cond和if套用_lisp语言入门

    Lisp 语言入门 Lisp 是一门历史悠久的语言,全名叫 LISt Processor ,也就是"表处理语言",它是由 John McCarthy 于 1958 年就开始设计的一 ...

  3. lisp语言cond和if套用_方案 – if和cond之间的区别?

    but when running, cause error: procedure application: expected > procedure, given: #; arguments w ...

  4. lisp语言cond和if套用_AutoCAD LISP 循环选择语句cond

    (defun c:test() (initget "A0 A1 A2 A3 A4") (setq size (getkword "请输入图纸大小A0,A1,A2,A3,A ...

  5. lisp语言cond和if套用_在'if'语句中设置多行条件的样式?

    Harley Holco.. 679 您不需要在第二个条件行上使用4个空格.也许用: if (cond1 == 'val1' and cond2 == 'val2' and cond3 == 'val ...

  6. lisp绘制法兰_lisp语言画键槽_用LISP语言自定义AutoCAD命令

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 用LISP语言自定义AutoCAD命令 AutoLISP语言作为AutoCAD的二次开发工具,虽然在功能.运行速度和保密性等方面比起ARX等工具要逊色一些 ...

  7. lisp语言画键槽_lisp语言画键槽_用LISP语言自定义AutoCAD命令

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 用LISP语言自定义AutoCAD命令 AutoLISP语言作为AutoCAD的二次开发工具,虽然在功能.运行速度和保密性等方面比起ARX等工具要逊色一些 ...

  8. lisp语言是最好的语言_Lisp可能不是数据科学的最佳语言,但是我们仍然可以从中学到什么呢?...

    lisp语言是最好的语言 This article is in response to Emmet Boudreau's article 'Should We be Using Lisp for Da ...

  9. lisp语言画地物符号_LISP语言在CAD工程制图中的应用_谢威

    科技信息 一 . 引言 LISP ( List Processor ) 程序语言是由 Autodesk 公司开发的一种程序 语言 . AutoCAD 软件包中包含大多数用于产生图形 . 处理图形的命令 ...

最新文章

  1. (循环练习题) 五只猴子分桃子
  2. Springboot 启动问题
  3. Typescript 基本类型
  4. golang备份和恢复
  5. 【mysql技巧】按某一字段分组取最大(小)值所在行的数据
  6. 课程介绍 复习 创建对象的三种方式 自定义构造函数创建对象 工厂模式创建对象
  7. NuGet镜像上线试运行
  8. 【LeetCode】剑指 Offer 24. 反转链表
  9. [ZJOI2008]骑士
  10. 2月28日 PCA降维,SVD压缩,中心化、归一化、标准化、k-l变换
  11. Asp.Net Core 第03局:Startup
  12. mysql中的group by分组
  13. Python大数据分析(一):认识大数据
  14. 日语词频分析——mecab使用
  15. 让Excel 只显示有限行和列
  16. 取绝对值,保留两位小数
  17. 高速电路中菊花链、fly-by与T点拓扑
  18. 频繁默认网关不可用_老是默认网关不可用,默认网关不可用总掉线解决方法
  19. bugku-加密-题解
  20. 高德地图交通态势爬取

热门文章

  1. 伤钱伤感情 10件不能和亲戚一起干的事儿
  2. 爱恨交织的编程语言 是什么吸引了你
  3. 块编码、对象编码、小波编码、分布式编码【转贴】
  4. 解决:The ‘Access-Control-Allow-Origin‘ header contains multiple values‘x, *‘, but only one is allowed.
  5. 解决 dockerfile 构建镜像报错: [WARNING]: Empty continuation lines will become errors in a future release.
  6. FreeSql (二十)多表查询 WhereCascade
  7. POWERSPLOIT-Recon(信息侦察)脚本渗透实战
  8. 新安装数据库sqlserver2008r2,使用javaweb连接不上问题处理
  9. WPF中Grid实现网格,表格样式通用类(转)
  10. 学习ecshop 教程网址