陳述式
此條目沒有列出任何參考或來源。 (2010年3月20日) |
「陳述式」的各地常用名稱 | |
---|---|
中國大陸 | 語句 |
臺灣 | 敘述、陳述、陳述式、語句 |
在電腦科學的編程中,陳述式(又稱敘述、語句、述句、描述式、陳述句)是指令式程式語言中最小的獨立元素,表達程式要執行的一些動作。多數陳述式是以高階語言編寫成一或多個陳述式的序列,用於命令計算機執行指定的一系列操作。單一個陳述式本身也具有內部結構(例如表達式)。
許多語言(例如說,C語言)將陳述式與定義句(definition)分隔的很明確,因為陳述式只會有運算符號以及一些宣告識別碼號(identifier)的定義。我們也可以找出簡單陳述式與複合陳述式之間的差異;後者會在一個段落中包含了許多陳述式。
陳述式的種類
以下是主要通用的陳述式種類,加上典型的指令式語言的範例:
簡單陳述式(simple statement)
- 指定(賦值)
- C, Fortran:
A = A + 5
- Pascal:
A := A + 5
- C, Fortran:
- 呼叫
- C:
CLEARSCREEN()
- C:
- 回傳:
return 5;
- goto
- C:
goto 1
- C:
- 斷言
- C:
assert(ptr != NULL);
- C:
複合陳述式(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則是一個反例)。