lisp语言cond和if套用_LISP - 决策

决策结构需要程序员指定一个或多个条件由程序进行评估或测试,以及要执行的语句或语句如果条件被确定为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 个群。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/455111.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

H264基本概念之 宏块、片和片组

这几个概念对比音频信号处理可是全新的,下面简要介绍一下定义和作用: 1、宏块(Macro Block):一个编码图像首先要划分成多个块(4x4 像素)才能进行处理,显然宏块应该是整数个块组成&…

CodeVS 1044 拦截导弹(DP)

题目大意&#xff1a; http://codevs.cn/problem/1044/ 第一问题就是求序列的最长递减数列的长度&#xff0c;第二问就是求数列的最长递增序列的长度。 代码&#xff1a; #include <iostream>using namespace std;int arr[30] {0}; int dp[30] {0}; int mp[30] {0};in…

链表(Linked List)之单链表

原文地址:传送门 链表(Linked List)介绍 链表是有序的列表&#xff0c;但是它在内存中是存储如下 小结: 链表是以节点的方式来存储,是链式存储 每个节点包含 data 域&#xff0c; next 域&#xff1a;指向下一个节点. 如图&#xff1a;发现链表的各个节点不一定是连续存储…

有字符csv文件导入matlab_Matlab:如何读取CSV文件以及如何读取带有字符串数据项的CSV文件...

CSV&#xff0c;逗号分开的文件&#xff0c;如果能快速的读取这些文件中的数据&#xff0c;无疑会帮助我们解决很多问题。1、 只有数据的CSV文件&#xff0c;CSV file that includes only numbers.As an example, create a text file, named as data.csv if you prefer, which …

xchg_mb_border()

顾名思义&#xff0c; xchg_mb_border() 交换 MB 边界的像素。阅读代码可知&#xff0c;交换双方为边界缓存 (left_border,top_borders) 与重建图象中的相应数据。其中 xchg 参数是否为 1 决定&#xff0c;在从边界缓存赋值到重建图象的同时&#xff0c;是否保存重建图象的数据…

Introduction to the Optimizer --cbo

http://docs.oracle.com/cd/B10500_01/server.920/a96533/optimops.htm

统计字符串中某个字出现的次数

package ch11;import java.util.Scanner;/** * Created by liwenj on 2017/7/21. */public class T6 { public static void main(String[] args) { String w "我爱你中国&#xff0c;我爱你故乡"; String a "爱"; int k0; …

jedispool redis哨兵_通过java哨兵JedisSentinelPool代码示例连接对配置的redis哨兵主从模式进行测试验证...

一、前言本文章通过关于java的jedis(2.6.0)的redis客户端连接驱动包&#xff0c;对配置的redis哨兵主从读写模式配置进行示例代码验证&#xff0c;详细参见具体配置步骤&示例代码说明部分。二、配置步骤1. 安装redis(参考其他文章教程),并配置主从模式(参考其他相关文章&am…

链表(Linked List)之双向链表

双向链表应用实例 使用带head头的双向链表实现 –水浒英雄排行榜 管理单向链表的缺点分析: 单向链表&#xff0c;查找的方向只能是一个方向&#xff0c;而双向链表可以向前或者向后查找。 单向链表不能自我删除&#xff0c;需要靠辅助节点 &#xff0c;而双向链表&#xff…

H264 解码耗时分析

在数字基带处理器上代码的最佳放置 美国模拟器件公司 Jose Fridman   在手机等嵌入式系统中&#xff0c;除了处理器执行时间外&#xff0c;最重要的资源就是设备总线和存储器接口。本文将介绍一种在使用指令高速缓存时其带宽消耗的基础上&#xff0c;统计分析高速缓存所采用…

CentOS 7 使用iptables防火墙

# 停止firewalld服务 systemctl stop firewalld systemctl mask firewalld # 安装iptables-services yum install iptables-services Enable the service at boot-time: # 启动iptables服务 systemctl enable iptables # 管理iptables systemctl [stop|start|restart] ip…

Linux命令之useradd和userdel(添加、删除用户)

一、【useradd】&#xff1a;添加用户命令 1.作用useradd或adduser命令用来建立用户帐号和创建用户的起始目录&#xff0c;使用权限是超级用户。 2.格式 useradd [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire ] [-p passwd] [-r] name 3.主…

链表(Linked List)之环形链表

原文地址:传送门 单向环形链表应用场景 Josephu(约瑟夫、约瑟夫环) 问题 Josephu 问题为&#xff1a;设编号为1&#xff0c;2&#xff0c;… n的n个人围坐一圈&#xff0c;约定编号为k&#xff08;1<k<n&#xff09;的人从1开始报数&#xff0c;数到m 的那个人出列&…

springboot 单测加入参数_spring-boot-单元测试参数数

简单案例RunWith(Parameterized.class)public class ParameterTest {// 2.声明变量存放预期值和测试数据private String firstName;private String lastName;//3.声明一个返回值 为Collection的公共静态方法&#xff0c;并使用Parameters进行修饰Parameterized.Parameterspubli…

H.264/AVC 标准中CAVLC 和CABAC 熵编码算法研究

http://www.paper.edu.cn/index.php/default/releasepaper/downPaper/200903-146

python ==》 元组

为何要有元组 &#xff0c;() 可存放多个值 元组不可变 更多的是用来查询t (1,[1,3],sss,(1,2)) #t tuple(1,[1,3],sss,(1,2))print (type(t))元组可以作为字典的keyd{(1,2,3):zcx}print(d,type(d),d[(1,2,3)])索引取值d (1,2,3,4,5)print(d[1])切片goods (iphone,lenove,…

免费SSL证书(支持1.0、1.1、1.2)

由于公司要开发微信小程序&#xff0c;而微信小程序的接口需要https协议的&#xff0c;并且要支持TLS1.0、TLS1.1、TLS1.2。如果仅仅是为了开发小程序&#xff0c;安全等级又不用太高&#xff0c;可以选择免费的SSL证书 在这里选择腾讯云的证书&#xff0c;申请在 https://cons…

viewsource和viewparsed_Network Panel说明

一、chrome Developer Tools&#xff1a;Network Panel从网络面板中可以获取很多有用信息&#xff0c;如详细的时间数据&#xff0c;http请求头响应头&#xff0c;cookies&#xff0c;WebSocket数据。通过分析这些数据&#xff0c;可以知道哪个资源加载耗时最久&#xff0c;谁发…

使用栈来完成一个表达式的结果

原文地址:传送门 使用栈来完成一个表达式的结果 使用栈完成计算 一个表达式的结果 7*2*2-51-53-4 &#xff1f; 32*6-2[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XzPnJzRe-1614845779689)(https://victorfengming.gitee.io/data_algorithm/i…

JM与h264标准中的关键字说明

有些乱&#xff0c;先存着&#xff0c;留着看 如何结合H.264标准看JM代码》这个web文件&#xff0c;大家都应该有了吧。不过&#xff0c;那个web文档是“H.264乐园”群中聊天的内容 1、一个sps后&#xff0c;有若干个pps吗&#xff1f; 这主要又编码器决定&#xff0c;但J…