Appearance
第三章 控制结构
控制结构:规定各个成分执行流程的控制机制
一、语句级控制结构
对语句执行顺序的控制。
1. 顺序
2. 选择
一般形式:if 条件 then 语句1 else 语句2
对于二义性的处理
- ALGOL 60:
begin ... end
- PL/1、PASCAL:最近匹配原则
- ALGOL 68:
fi
- Ada:
end if
多重选择
- PL/1:
select
- PASCAL、ALGOL 68、Ada:
case
Dijkstra选择结构:对非确定性的抽象
if B1->S1
B2->S2
...
BN->SN
fi
3. 重复
- 计数器制导:循环次数已知
- 条件制导:循环次数未知
二、单元级控制结构
规定程序单元之间控制流程的机制。
1. 显式调用
调用单元以名字显式调用从属单元;从属单元执行完后,转移控制返回调用单元。
- 参数绑定
- 位置绑定
- 关键字绑定
- 副作用(对局部环境的修改)问题
- 别名(在单元激活间两变量共享一数据对象)问题
- 废除引起别名的结构
- 限制指针、变参、全局变量、数组
2. 隐式调用
通常用于异常处理,被调用单元是隐含的。
3. 协同程序
两个或两个以上程序单元之间交错执行的程序。(单元间彼此显式激活)
SIMULA 67
4. 并发单元
各单元组成一组并发或并行单元或进程,彼此之间不存在调用和返回,而是并行执行。