首页 百科知识 结构化程序设计方法遵循的原则

结构化程序设计方法遵循的原则

时间:2022-10-20 百科知识 版权反馈
【摘要】:模块化程序设计早在低级语言时期就已经出现,但却在结构化程序设计的发展中得到充实、提高和完善。因此,它也是结构化程序设计的组成部分。在引入结构化程序设计之后,这些模块不仅与通常所说的子算法、子程序或子过程有着相似的概念,是一种可供调用、相对独立的程序段,而且必须是由三种基本结构组成。

1.4.2 结构化程序设计方法遵循的原则

结构化程序设计方法遵循的原则是:自顶向下,逐步求精;模块化设计;结构化编程。下面分别加以说明。

1.自顶向下,逐步求精

把一个较大的复杂问题分解成若干相对独立而又简单的小问题,只要解决了这些小问题,整个问题也就解决了,如图1-9所示。

img10

图1-9 自顶向下逐步求精示例

2.模块化设计

模块化程序设计早在低级语言时期就已经出现,但却在结构化程序设计的发展中得到充实、提高和完善。因此,它也是结构化程序设计的组成部分。

一般而言,模块化设计是把复杂的算法或程序,分解成若干相对独立、功能单一,甚至可供其他程序调用的模块。在引入结构化程序设计之后,这些模块不仅与通常所说的子算法、子程序或子过程有着相似的概念,是一种可供调用、相对独立的程序段,而且必须是由三种基本结构组成。整个系统犹如积木一般,由各个模块组合而成。如图1-10所示,各功能模块用矩形框表示,实线箭头表示模块之间的调用关系,虚线箭头表示返回。

img11

图1-10 模块化结构示意图

在进行模块化设计时,注意在不同模块中提取功能相同的部分,作为一个独立的子模块。这样可以缩短程序,提高模块的复用率。设计模块时要尽量减小模块间的耦合度(模块间的相互依赖性),增大内聚度(模块内各成分的相互依赖性)。耦合度越小,模块相互间的独立性就越大。内聚度越大,模块内部各成分间的联系就越紧密,其功能也就越强。

程序中的子模块,在C语言中通常用函数实现,每个函数完成一个特定功能。根据经验每个函数一般以50行以下为宜(打印时不超过一页),这样的规模便于组织,也便于阅读。

3.结构化编程

所谓结构化编程是指利用高级语言提供的相关语句实现三种基本结构,每个基本结构具有唯一的出口和入口,整个程序由三种基本结构组成,程序中不用goto之类的语句。goto语句也称转移语句,用它可以改变程序中语句的执行次序。

4.结构化程序设计举例

下面以一个具体实例说明自顶向下,逐步求精的应用。

【例1-5】试从所有3位数的自然数中,选出满足下列条件中一个或两个的数:

(1)素数

(2)“水仙花数”。所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如,153是一个水仙花数,因为153=13+53+33

解:所有三位数的自然数为100~999间的数,在其中寻找满足条件的数。各种可能的条件为:

➢素数。

➢水仙花数。

➢水仙花素数。

采用模块化设计方法,系统结构如图1-11所示。

img12

图1-11 模块化设计示意图

【主模块算法设计】

主模块可谓一级求精模块,用算法结构化流程图表示,如图1-12所示。

在图1-12中,可对最下面的三个框进一步求精,从左到右的二级求精分别如图1-13~图1-15所示。

用图1-13~图1-15代替图1-12的相应部分,可得到主模块的二级求精N-S图。这时,二级求精已经到了实现级,不再需要进一步求精。下面讨论子模块“素数判定”和“水仙花数判定”的设计。

img13

图1-12 主模块一级求精N-S图

img14

图1-13 找出所有素数——二级求精N-S图

img15

图1-14 找出所有水仙花数——二级求精N-S图

【子模块的设计】

1.素数判定模块的设计

素数判定模块的N-S图如图1-16所示。

img16

图1-15 找出所有水仙花素数——二级求精N-S图

img17

图1-16 素数判定算法的N-S图

2.水仙花数判定模块的设计

水仙花数判定模块的N-S图如图1-17所示。

img18

图1-17 水仙花数判定算法的N-S图

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈