资源描述:
《第2章 结构化程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第2章结构化程序主要内容2.1什么是结构化程序流程图程序正规程序基本程序结构化程序2.2结构化定理程序函数以前经常采用的一种程序设计方法:要解决的问题流程图编码使用流程图的两个主要缺陷:费时费力,没有好的标准——效率不高结构不清晰——影响正确性2.1什么是结构化程序流程图程序正规程序基本程序结构化程序面向过程与面向结构面向过程强调:问题处理的过程,即对软件进行功能分解,写成一个个函数调用。优点:符合人们的思维习惯。缺点:强调过程,忽视结构,所以易读性较差。面向结构(结构化程序设计方法)是“面向过
2、程”方法的改进方法:优点:强调程序的结构性-所以容易做到易读-易懂.该方法思路清晰划分功能模块连接各模块组合构成软件系统2.1.1流程图程序流程图是一个描述程序的控制流程和指令执行情况的有向图。一个程序的流程图通常由下列3种结点组成:函数结点谓词结点汇点函数结点ProcessBox如果一个结点有一个入口线和一个出口线,称为函数结点。如下图所示,其中f是函数结点的名字。函数结点又叫处理单元,一般和赋值语句相对应如果一个结点有一个入口线和两个出口线,而且它不改变程序的数据项值,称为谓词结点。谓词结点
3、DecisionBox谓词结点又叫判断单元,一般与条件语句相对应汇点JunctionBox如果一个结点有两个入口线和一个出口线,而且它不执行任何计算,称为汇点。汇点又叫连接单元,在流程图中,汇点只是起一个简单的连接作用。例子例子L1:ifB1thengotoL2;S1;ifB2thengotoL2;S2;gotoL1;L2:S3;B1S1B2S2S3TTFF2.1.2正规程序一个流程图程序如果满足以下两个条件,称为正规程序:(1)具有一个入口线和一个出口线(2)对每一个结点,都有一条从入口线到出
4、口线的通路经过该点。正规程序正规程序(1)(2)(3)正规程序的抽象一个正规程序可以抽象为一个函数结点。这个函数结点概括了该正规程序对数据进行运算和测试的总的作用。a抽象成抽象成qpbpgbk正规子程序一个正规程序的某些部分仍然是正规程序,把这些部分称为正规子程序。g,b是k的正规子程序,a又是g的正规子程序bqapk抽象成gbP抽象成例子2.1.3基本程序一个正规程序,如果不包含多于一个结点的正规子程序,则称为基本程序。基本程序是正规程序基本程序可以包含正规子程序基本程序包含的正规子程序只有一
5、个结点例子判断:下面的流程图程序是不是基本程序?(1)(2)是是不是(3)七种基本程序ffgpfpfpfgpfpgf(1)(2)(3)(4)(5)(6)(7)FT函数序列do-untilif-then-elseif-thendo-while-dowhile-do基本程序结构化程序构造一个程序,并不需要使用所有7种基本结构。pfwhile-do=pfpIf-then和do-until2.1.4结构化程序为了构造一个流程图程序,可以只使用七种基本程序中的一部分,把从这七种基本程序中挑出的这部分叫做基
6、本程序的基集合。例如:{序列,if-then-else,while-do}{序列,if-then-else,do-until}复合程序反复应用基集合构造出来的程序称为基集合的复合程序。构造方法:一个基本程序的函数结点用另外一个基本程序替换。bqapkgbP结构化程序结构化程序由基本程序的一个固定的基集合,构造出来的复合程序称为结构化程序。流程图程序正规程序基本程序复合程序基集合{序列,if-then-else,while-do}判断:下述程序是否是结构化程序?(基集合为{序列,if-then-
7、else,while-do})While-do序列If-then-else判断:下述程序是否是结构化程序?(基集合为{序列,if-then-else,while-do})2.2结构化定理结构化定理:任意一个正规程序,都可以函数等价于一个由基集合{序列,if-then-else,while-do}产生的结构化程序。2.2.1程序函数任何一个正规程序可以定义程序初始状态与程序最终状态之间的函数,这个函数称为程序函数,记为[P]。X:程序初始状态;Y:程序最终状态。且:对于每一个初始的数据状态X,程
8、序是终止的对于每一个给定的X,值Y是唯一的PXY{(X,Y)}程序函数表示形式有序对、条件规则、数据赋值等形式例如:[ifxythenz:=xelsez:=yfi]有序对:{((x,y,z),(x,y,min(x,y)))}条件规则:{(x,y,z)
9、xyz:=x∨x>yz:=y}数据赋值:(z:=min(x,y))例子写出下列程序的程序函数(x,y为整数)1、[whilex>0dox:=x-1od]={(x,min(0,x))}=(x:=min(0,x))2、[x:=x+y;y:=x-