- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
软件工程第章复习资料
第四章 程序编码
一、复习要求
1. 了解什么是结构化程序设计,以及结构化程序设计的原则。
2. 了解程序设计风格4个方面的要求。
3. 了解提高程序效率的方法。
4. 了解程序设计语言的分类和特点。
5. 掌握度量程序复杂性的McCabe方法和Halstead方法。
二、内容提要
1. 结构化程序设计
结构化程序设计技术是60年代中期提出来的,它主要包括两个方面:
( 在编写程序时,强调使用几种基本控制结构,通过组合嵌套,形成程序的控制结构。尽可能避免使用会使程序质量受到影响的GOTO语句。
( 在程序设计过程中,尽量采用自顶向下和逐步细化的原则,由粗到细,一步步展开。
(1) 结构化程序设计的原则
( 使用语言中的顺序、选择、重复等有限的基本控制结构表示程序逻辑。
( 选用的控制结构只准许有一个入口和一个出口。
( 程序语句组成容易识别的块,每块只有一个入口和一个出口。
( 复杂结构应该用基本控制结构进行组合嵌套来实现。
( 语言中没有的控制结构,可用一段等价的程序段模拟,但要求该程序段在整个系统中应前后一致。
( 严格控制GOTO语句,仅在用一个非结构化的程序设计语言去实现一个结构化的构造,或者在某种可以改善而不是损害程序可读性的情况下才可以使用GOTO语句。
大量采用GOTO语句实现控制路径,会使程序路径变得复杂而且混乱,因此要控制GOTO语句的使用。但有时完全不用GOTO语句进行程序编码,比用GOTO语句编出的程序可读性差。例如,在查找结束时,文件访问结束时,出现错误情况要从循环中转出时,使用布尔变量和条件结构来实现就不如用GOTO语句来得简洁易懂。
对于常用的高级程序设计语言,一般都具备前述的几种基本控制结构。即使不具备等同的结构,也可以采用仿真来实现。下面以FORTRAN77为例进行说明,参看图4.1。
基本控制结构 用FORTRAN77模拟基本控制结构 判断语句
if ( p ) S1;
else S2; IF ( p ) THEN
S1
ELSE
S2
ENDIF 先判断型循环语句
while ( p )
S; 100 CONTINUE
IF ( p ) THEN
S
GOTO 100
ENDIF 后判断型循环语句
do S; while ( p ); 100 CONTINUE
S
IF ( p ) GOTO 100 图4.1 用FORTRAN77语句实现基本控制结构
(2) 程序设计自顶向下,逐步求精
在详细设计和编码阶段,应当采取自顶向下,逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,进而翻译成一系列用某种程序设计语言写成的程序。
例如,要求用筛选法求100以内的素数。所谓筛选法,就是从2到100中去掉2,3,…,9,10的倍数,剩下的就是100以内的素数。为了解决这个问题,可先按程序功能写出一个框架。
main ( ) { 建立2到100的数组A[ ],其中A[i]=i; - - - - - - - - - - - - -- - - - - - - - - - - - 1 建立2到10的素数表B[ ],其中存放2到10以内的素数;- - - - - - - - - - - - 2 若A[i]=i是B[ ]中任一数的倍数,则剔除A[i];- - - - - - - - - - - - - - - - - - - - 3 输出A[ ]中所有没有被剔除的数;- - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - 4}上述框架中每一个加工语句都可进一步细化成一个循环语句。main ( ) {
/*建立2到100的数组A[ ],其中A[i]=i*/ - - - - - - - - - - - - - - - - - - - - - - - - 1
for (i = 2;i = 100;i++)A[i] = i;
/* 建立2到10的素数表B[ ],其中存放2到10以内的素数*/ - - - - - - - - - - - 2
B[1] =2; B[2] = 3; B[3] = 5; B[4] = 7;
/*若A[i]=i是B[ ]中任一数的倍数,则剔除A[i]*/ - - - - - - - - - - - - - - - - - - - - 3
for (j =
文档评论(0)