第三章:程序的结构和控制流与数据流

3.1 程序的结构

程序的结构在过程式程序设计中,发生了“显著的变化”,称为结构式程序。程序语句是顺序方式,C1;C2;...;Cn,Ci(1<=i<=n)是赋值语句,条件语句和循环语句。条件语句if B->C1|C2,可表示为

       B]C1.or. -B]C2

 这里"]"表示B是C1执行的充分条件,并且B]C1是一条路径。-表示否定词,-B是B的否定,-B]C2表示对立条件时的路径。因此,if语句有两条输出路径。循环语句while B*C在程序分析中,每一次迭代表示一条路径,原因是迭代的前后程序的状态发生了变化。

在程序分析中,程序的状态(state)是在一个程序点,所有变量的值组成的表示程序执行过程中的一个格局,有时用线性代数的向量表示。在多种程序分析方法中,程序状态与程序的configuration或者程序的interpretation相似。

《可计算性与计算复杂性导引》(北京大学出版社)中,程序的状态表示程序执行过程中一个计算步的结果。

循环语句while B*C的规格表示:

          - B]while.next .or. ((B]C)*.and.- B]while.next),而且

          ((B]C)*.and.- B]while.next)= ( B]C).and. ((B]C)* .and. -B]while.next .or. - B]while.next)

这里while.next标识在程序中while语句的下一个语句。防止仅凭经验判断。.and.优先级高于.or.。在while语句的规格表示中,可以发现,每一次迭代有两个输出路径-B]while.next或(B]C)*。用输出路径而不是语句出口可防止繁琐。

编译程序中的控制流和数据流,目的是决定程序中有多少个执行路径(execution path)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值