條件陳述式

(由條件運算式跳轉過嚟)

條件陳述式英文conditional statement;if... then...)係絕大多數程式語言都會有嘅一種陳述式,功能係視乎情況決定係咪要做某啲運算同採取某啲行動:一個條件陳述式會掕住一柞同一句佢要評估嘅條件,當個電腦程式行到個條件陳述式嗰時,如果個條件係真,個程式就會行條件陳述式掕住嗰柞碼(if 「個條件係真」 then 「行個條件陳述式掕住嘅碼」),否則個程式就唔會行嗰柞碼。

if... then 嘅流程圖

句法

編輯
睇埋:控制流程

條件陳述式典型嘅形態有以下呢啲[1]

  • IF..GOTO,如果 .. 為真,goto 某個位,常見於非結構化程式語言
  • IF..THEN..(ENDIF),如果 .. 為真,做 THEN 後面嘅 ..,ENDIF 用途在於標記掕住碼嘅終結。
  • IF..THEN..ELSE..(ENDIF),如果 .. 為真,做 THEN 後面嘅 ..,否則做 ELSE 後面嘅 ..,ENDIF 用途在於標記掕住碼嘅終結。呢個係最常見嘅條件陳述式類型,不過都有啲程式語言唔使用家指明 ENDIF 喺邊,而係用空白位等方法嚟斷定邊度係掕住碼嘅終結(例:喺一個 IF 之後,所有掕住碼都要喺最左手邊嗰度有兩個空位),例如機械學習上常用嘅 Python 就係一種啲條件陳述式唔使 ENDIF 嘅程式語言。
  • IF..THEN.. ELSE IF .. THEN .. ELSE..(ENDIF),一個條件陳述可以嵌套(embedded)喺第個條件陳述裏面-如果 .. 為真,做第一個 THEN 後面嘅 ..,否則如果 ELSE IF 後面嗰個 .. 為真,做第二個 THEN 後面嘅 ..,跟住如此類推。

唔同語言比較

編輯
Pascal: Ada: C: Shell script: Python: Lisp:
if a > 0 then
  writeln("yes")
else
  writeln("no");
if a > 0 then
      Put_Line("yes");
else
      Put_Line("no");
end if;
if (a > 0) { 
      printf("yes");
} else {
      printf("no");
}
if [ $a -gt 0 ]; then
      echo "yes"
else
      echo "no"
fi
if a > 0: 
      print("yes")
else:
      print("no")
(princ
  (if (plusp a)
      "yes"
      "no"))

第啲用法

編輯

比較少見嘅條件陳述式玩法有:

  • 有啲程式語言(例子: Fortran),會有所謂嘅「三向」(three-way)條件,測試某個變數數值係正、負、定零嚟決定做乜。
  • Perlifwhenunless
  • SmalltalkifTrueifFalse 嚟做條件陳述式。

睇埋

編輯

引咗

編輯
  1. Gabbay, D., Giordano, L., Martelli, A., Olivetti, N., & Sapino, M. L. (2000). Conditional reasoning in logic programming. The Journal of Logic Programming, 44(1-3), 37-74.