- ·上一篇内容:四个修女的命运
- ·下一篇内容:有关天堂和地狱的话题
1.3 结构化程序设计方法
1.3.3 结构化程序设计方法
结构化程序设计方法是公认的面向过程编程应遵循的基本方法和原则。结构化程序设计方法主要包括:①只采用三种基本的程序控制结构来编制程序,从而使程序具有良好的结构;②程序设计自顶而下;③用结构化程序设计流程图表示算法。
有关结构化程序设计及方法有一整套不断发展和完善的理论和技术,对于初学者来说,完全掌握是比较困难的。但在学习的起步阶段就了解结构化程序设计的方法,学习好的程序设计思想,对今后的实际编程是很有帮助的。
1.结构化程序设计特征
结构化程序设计的特征主要有以下几点:
(1) 以三种基本结构的组合来描述程序;
(2) 整个程序采用模块化结构;
(3) 有限制地使用转移语句,在非用不可的情况下,也要十分谨慎,并且只限于在一个结构内部跳转,不允许从一个结构跳到另一个结构,这样可缩小程序的静态结构与动态执行过程之间的差异,使人们能正确理解程序的功能;
(4) 以控制结构为单位,每个结构只有一个入口,一个出口,各单位之间接口简单,逻辑清晰;
(5) 采用结构化程序设计语言书写程序,并采用一定的书写格式使程序结构清晰,易于阅读;
(6) 注意程序设计风ge。
2. 自顶而下的设计方法
结构化程序设计的总体思想是采用模块化结构,自上而下,逐步求精。即首先把一个复杂的大问题分解为若干相对独立的小问题。如果小问题仍较复杂,则可以把这些小问题又继续分解成若干子问题,这样不断地分解,使得小问题或子问题简单到能够直接用程序的三种基本结构表达为止。然后,对应每一个小问题或子问题编写出一个功能上相对独立的程序块来,这种象积木一样的程序块被称为模块。每个模块各个击破,最后再统一组装,这样,对一个复杂问题的解决就变成了对若干个简单问题的求解。这就是自上而下,逐步求精的程序设计方法。
确切地说,模块是程序对象的集合,模块化就是把程序划分成若干个模块,每个模块完成一个确定的子功能,把这些模块集中起来组成一个整体,就可以完成对问题的求解。这种用模块组装起来的程序被称为模块化结构程序。在模块化结构程序设计中,采用自上而下,逐步求精的设计方法便于对问题的分解和模块的划分,所以,它是结构化程序设计的基本原则。
例1-9: 求一元二次方程:
ax2+bx+c=0
的根。
分析:先从最上层考虑,求解问题的算法可以分成三个小问题,即:输入问题、求根问题和输出问题。这三个小问题就是求一元二次方程根的三个功能模块:输入模块M1、计算处理模块M2和输出模块M3。其中M1模块完成输入必要的原始数据,M2模块根据求根算法求解,M3模块完成所得结果的显示或打印。这样的划分,使求一元二次方程根的问题变成了三个相对独立的子问题,其模块结构如图1-14所示。
分解出来的三个模块从总体上是顺序结构。其中M1和 M3模块是完成简单的输入和输出,可以直接设计出程序流程,不需要再分解。而M2模块是完成求根计算,求根则需要首先判断二次项系数a是否为0。当a=0时,方程蜕化成一次方程,求根方法就不同于二次方程。如果a≠0,则要根据b2-4ac的情况求二次方程的根。可见M2模块比较复杂,可以将其再细化成M21和M22两个子模块,分别对应一次方程和二次方程的求根,其模块结构如图1-15所示。
此次分解后,M21子模块的功能是求一次方程的根,其算法简单,可以直接表示。M22是求二次方程的根,用流程图表示算法如图1-16所示,它由简单的顺序结构和一个选择结构组成,这就是M22模块最细的流程表示。然后,按照细化M22模块的方法,分别将M1、M21和M3的算法用流程图表示出来,再分别按图1-15和图1-14的模块结构组装,最终将得到细化后完整的流程图。
可见,编制程序与建大楼一样,首先要考虑大楼的整体结构而忽略一些细节问题,待把整体框架搭起来后,再逐步解决每个房间的细节问题。在程序设计中就是首先考虑问题的顶层设计,然后再逐步细化,完成底层设计。使用自顶向下、逐步细化的设计方法符合人们解决复杂问题的一般规律,是人们习惯接受的方法,可以显著地提高程序设计的效率。在这种自顶而下、分而治之的方法的指导下,实现了先全局后局部,先整体后细节,先抽象后具体的逐步细化过程。这样编写的程序具有结构清晰的特点,提高程序的可读性和可维护性。
3. 程序设计的风ge
程序设计风ge从一定意义上讲就是一种个人编写程序时的习惯。而风ge问题不象方法问题那样涉及一套比较完善的理论和规则,程序设计风ge是一种编写程序的经验和教训的提炼,不同程度和不同应用角度的程序设计人员对此问题也各有所见。正因为如此,程序设计风ge很容易被人们忽视,尤其是初学者。结构化程序设计强调对程序设计风ge的要求。因为,程序设计风ge主要影响程序的可读性。一个具有良好风ge的程序应当注意以下几点:
(1) 语句形式化。程序语言是形式化语言,需要准确,无二义性。所以,形式呆板、内容活泼是软件行业的风范;
(2) 程序一致性。保持程序中的各部分风ge一致,文档格式一致;
(3) 结构规范化。程序结构、数据结构、甚至软件的体系结构要符合结构化程序设计原则;
(4) 适当使用注释。注释是帮助程序员理解程序,提高程序可读性的重要手段,对某段程序或某行程序可适当加上注释;
(5) 标识符贴近实际。程序中数据、变量和函数等的命名原则是:选择有实际意义标识符,以易于识别和理解。要避免使用意义不明确的缩写和标识符。例如:表示电压和电流的变量名尽量使用v和i,而不要用a和b。要避免使用类似aa、bb等无直观意义的变量名。
例如,有A和B两个小程序如下:
/* 程序A */ /* 程序B */
main() main()
{ int i=1 { int i=1
while (i<=100) /*循环开始行 */ while (i<=100)
{ if (i%3==0) /* 判断是否被3整除 */ { if (i%3==0)
printf("%d",i); /*输出*/ printf("%d ",i);
i++; i++;
} }
printf("%d ",i); printf("%d ",i);
} }
程序A和B的语句相同、功能相同,运行结果也相同,但程序风ge不同。程序A注意了格式缩进,并加了适当的注释,当你还读不懂一个C程序时,显然,程序A比程序B的可读性要好得多。
结构化程序设计方法作为面向过程程序设计的主流,被人们广泛地接受和应用,其主要原因在于结构化程序设计能提高程序的可读性和可靠性,便于程序的测试和维护,有效地保证了程序质量。读者对此方法的理解和应用要在初步掌握C语言之后,主要在今后大量的编程实践中去不断体会和提高。
本文源自:翔宇亭——IT乐园(http://www.biye5u.com),转载请保留此信息!