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.pswp.cn/news/455111.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/455111.shtml
英文地址,請注明出處:http://en.pswp.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…