在计算机科学的编程中,叙述(又称陈述式、叙述、述句、描述式、陈述句)是指令式编程语言中最小的独立元素,表达程序要执行的一些动作。多数叙述是以高阶语言编写成一或多个叙述的序列,用于命令计算机执行指定的一系列操作。单一个叙述本身也具有内部结构(例如表达式)。
此条目没有列出任何参考或来源。 (2010年3月20日) |
“陈述式”的各地常用名称 | |
---|---|
中国大陆 | 语句 |
台湾 | 叙述、陈述、陈述式、语句 |
许多语言(例如说,C语言)将叙述与定义句(definition)分隔的很明确,因为叙述只会有运算符号以及一些宣告标识符号(identifier)的定义。我们也可以找出简单叙述与复合叙述之间的差异;后者会在一个段落中包含了许多叙述。
叙述的种类
以下是主要通用的叙述种类,加上典型的指令式语言的范例:
- 指定(赋值)
- 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:
- 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则是一个反例)。
参见
参考资料
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.