決策結構需要程序員指定一個或多個條件由程序進行評估或測試,以及要執行的語句或語句如果條件被確定為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 個群。