- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
软件工程
5.1 软件实现的主要任务
使用选定的程序设计语言,把模块的过程性描述翻译为用该语言书写的源程序(源代码)。
清晰性
效率
开发
时间
程序
输出
内存数
语句数
程序可读性最佳
输出可读性最佳
占内存最小
语句数最少
开发时间最短
1
1
4
5
3
2
1
5
3
3
3
5
1
2
4
3
5
2
1
4
4
2
5
2
1
Winberg 的程序实验结果
3
结构化程序设计是一种设计程序的技术,它采用
自顶向下、逐步细化的设计方法和单入口(Single entry)、
单出口(Single exit)的控制结构。
这种控制结构包括有:顺序、选择和循环。
5.2 结构化程序设计
4
5.2 结构化程序设计
F
T
T
F
F
T
单入口
单出口
5
AB
A,B,C
BC
AC
打印B
F
T
F
T
T
F
打印C
打印A
5.2 结构化程序设计
6
无节制地使用了GOTO语句所产生的程序流程
5.2 结构化程序设计
7
一、结构化程序设计的原则
1、使用语言中的顺序、选择、重复等有限的基本控制结构表示程序;
2、选用的控制结构只准许有一个入口和一个出口;
3、程序语句组成容易识别的块(Block),每块只有一个入口和一个出口;
4、复杂结构应该用基本控制结构进行组合嵌套来实现;
5、严格控制GOTO语句。
5.2 结构化程序设计
8
5.2 结构化程序设计
9
Begin
Xm=(X0+X1)/2 Fm=F(m)
T
T
F
T
F
F
F0=F(a) F1=F(b)
i=n
i
Q=abs((Fm)eps||abs(X1-X0)eps)
10
… …
F0=F(a); F1=F(b);
if(F0*F1=0)
{ X0=a; X1=b;
for(i=1;i=n;i++)
{ Xm=(X0+X1)/2; Fm=F(Xm);
if(abs(Fm)eps||abs(X1-X0)eps)
break;
if(F0*Fm0)
{ X0=Xm; F0=Fm;}
else
X1=Xm;
}
printf(“%d\n”,Xm);
}
11
… …
F0=F(a); F1=F(b);
if(F0*F1=0)
{ X0=a; X1=b; i=1; finish=0;
while(i=n finish==0)
{ Xm=(X0+X1)/2; Fm=F(Xm);
if(abs(Fm)eps||abs(X1-X0)eps) finish=1;
if(finish==0);
if(F0*Fm0) { X0=Xm; F0=Fm;}
else X1=Xm;
i++;
}
printf(“%d\n”,Xm);
}
12
二、程序设计自顶向下,逐步求精
1、程序设计是一个由粗到细的 “渐进” 的过程
2、程序设计不仅包括对控制结构的设计,也包括对数据结构的设计。
二者都要一步一步地细化。
5.2 结构化程序设计
13
用逐步细化方法设计一个程序,其功能为:
“从一组数中找出最大的数”
举例
14
用逐步细化方法设计一个程序,其功能为:
“从一组数中找出最大的数”
举例
15
练习
请用逐步细化方法设计由下列描述的程序结构
读入一段任意长度的英语课文,将其分解为单字,然后输出一张单词表(list of words),并指出每种单词在课文中的出现次数。
16
三、程序复杂性的度量
程序复杂性主要是指模块内部程序的复杂性。它
直接关系到软件开发费用的多少,开发周期的长短和
软件和软件内部潜伏错误的多少。同时它也是软件可
理解性的另一种度量。
5.2 结构化程序设计
17
它可以用来计算任何一个程序的复杂性;
对于不合理的程序,例如对于长度动态增长的程序,或者对于原则上无法排错的程序,不应当使用它进行复杂性计算;
如果程序中指令条数、附加存储量、计算时间增多,不会增加程序的复杂性。
为了度
文档评论(0)