陳述式

在計算機科學的編程中，敘述（又稱-{zh-cn:陈述式、叙述;zh-tw:陳述式、語句;zh-hk:敘述、語句;}-、述句、描述式、陳述句）是指令式編程語言中最小的獨立元素，表達程序要執行的一些動作。多數敘述是以高階語言編寫成一或多個敘述的序列，用於命令計算機執行指定的一系列操作。單一個敘述本身也具有內部結構（例如表達式）。

許多語言（例如說，C語言）將敘述與定義句（definition）分隔的很明確，因為敘述只會有運算符號以及一些宣告標識符號（identifier）的定義。我們也可以找出簡單敘述與複合敘述之間的差異；後者會在一個段落中包含了許多敘述。

 敘述的種類 
以下是主要通用的敘述種類，加上典型的指令式語言的範例：

 簡單敘述（simple statement） 
指定(賦值)
C, Fortran: A = A + 5
Pascal: A := A + 5

呼叫
C: CLEARSCREEN()

回傳：return 5;

goto
C: goto 1

斷言
C: assert(ptr != NULL);

 複合敘述（compound statement） 
 block：begin integer NUMBER; WRITE('Number? '); READLN(NUMBER); A:= A*NUMBER end
 if语句：if A > 3 then WRITELN(A) else WRITELN("NOT YET"); end
 Switch敘述：switch (c) { case 'a'：alert(); break; case 'q'：quit(); break; }
 While迴圈：while NOT EOF DO begin READLN end
 Do-while迴圈：do { computation(&i); } while (i < 10);
 For迴圈'''：for A:=1 to 10 do WRITELN(A) end

 表示式 
在大多數編程語言中，敘述與表達式互相對比，兩者不同之處在於，敘述是為了運作它們的副作用而執行；表達式則一定會傳回評估後的結果，而且通常不產生副作用。在指令式編程中，ALGOL 68是敘述可有回傳值的少數幾種語言。在混合指令式和函數式的編程語言（如Lisp）中，表達式和敘述之間的分野並不存在：即段落中只為了副作用且不返回值，而依序執行的表達式，也被認為是“表達式”。在純函數式編程中沒有敘述；一切都是可被評估的表達式。

在措辭中經常出現這樣的區別：一個敘述是被“執行”(execute)，而一個表達式是被“評估”或對其“求值”(evaluate)。一些語言中具備了exec和eval函數：比如在Python中，exec應用於敘述，而eval應用於表達式。

 程式語言 
敘述的語意（sematic）以及句法（syntax）是依據每個程式語言的定義來規定的。

許多的程式語言不允許自我修改程式碼（self-modifying code）。或者說，多數程式語言不允許在執行時間創造新的敘述（Snobol 4則是一個允許這樣作的例子）或者修改現有的敘述（Lisp則是一個反例）。

 參見 
 控制流程
 表示式（作為對比）
 Comparison of Programming Languages - Statements

參考資料


Category:程序架構