软件工程-程序编码
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三步:确定数据结构
3.1:定义一数组 A 3.2:max=A(1) 3.3:从A(2)至A(n)开始比较 3.4:若当前数大于max, 则令:max=A(i)
2019/11/15
第四步:用PDL描述
Input array A Set Max=A(1) DO for i=2 to N
IF Max<A(i) Set Max=A(i)
语句数最少
开发时间最短
清晰性
程序 输出
1-2
2
1-2
1
4
4
5
3
3
wenku.baidu.com
3
效率
内存数 语句数
3
3
5
5
1
2
2
1
4
4
开发 时间
4 2-3 5 2-3 1
2019/11/15
6.2 结构化程序设计 (Structured Programming)
结构化程序设计是一种设计程序的技术,它采用 自顶向下逐步细化的设计方法和单入口(Single entry) 单出口(Single exit)的控制结构。 这种控制结构包 括有:
}
2019/11/15
二、程序设计自顶向下,逐步求精
1、程序设计是一个由粗到细的 “渐进” 的过程 2、程序设计不仅包括对控制结构的设计,也包括对数据结构的设计。
二者都要一步一步地细化。
列出问题的初步解
分解主要问题
继续细化
采用逐步细化方法 设计程序的步骤
利用图形工具或伪代码 描述程序的详细逻辑
2019/11/15
顺序、选择和循环。
2019/11/15
…… for(a=1,b=1;a<=100,a++)
{ if (b>=20) break;
if (b%3==1) { b+=3; continue; }
b-=5; } ……
单入口
M1
b+=3 T
a=0,b=1
a++
F
a<=100
T b>=20 T
F
b%3==1
用逐步细化方法设计一个程序,其功能为 “从一组数中找出最大的数 ”
第一步:列出问题的初步解 1:输入一组数 2:找出其中最大的数 3:输出最大的数
2019/11/15
第二步:分解主要问题
2.1:首先读入一个数并设其为最大的数 2.2:将该数逐次与其它数进行比较 2.3:若有大于该数的则将其保存
2019/11/15
}
2019/11/15
…… 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*Fm>0) { X0=Xm; F0=Fm;} else X1=Xm; i++; } printf(“%d\n”,Xm);
ENDIF ENDDO Print Max
2019/11/15
请用逐步细化方法设计一由下列描述 的程序结构
读入一段任意长度的英语课文,将其分解为单字,然后输出 一张单词表(list of words),并指出每种单词在课文中的出现次数。
2019/11/15
三、程序复杂性的度量
程序复杂性主要是指模块内部程序的复杂性。它 直接关系到软件开发费用的多少,开发周期的长短和 软件和软件内部潜伏错误的多少。同时它也是软件可 理解性的另一种度量。
第六章 程序编码
6.1 编码的目的
编码的目的: 是使用选定的程序设计 语言,把模块的过程性描述翻译为用该语 言书写的源程序(源代码)
模块的过程性描述 (不可执行的)
编码 源程序 (可执行的)
2019/11/15
Winberg 的程序实验结果
结果
评判
名次 项目
编码要求
程序可读性最佳
输出可读性最佳
占内存最小
2019/11/15
为了度量程序复杂性,要求复杂性度量应满足以下假设: 它可以用来计算任何一个程序的复杂性; 对于不合理的程序,例如对于长度动态增长的程序, 或者对于原则上无法排错的程序,不应当使用它进行 复杂性计算;
}
2019/11/15
2
Begin
F0=F(a) F1=F(b) F
(F0*F1)<=0 T
X0=a X1=b i=1
i<=n
Xm=(X0+X1)/2 Fm=F(m)
F
Q
T
1
Q=abs((Fm)<eps||abs(X1-X0)<eps)
T
F
(F0*Fm)>0
X0=Xm F0=Fm
X1=Xm
i
1
Xm
M2
A,B,C
F A<B T
B<C F T
F A<C T
打印B 打印C 打印A
----- 单入口多出口结构
2019/11/15
M
无节制地使用了GOTO语句所产生的程序流程
2019/11/15
一、结构化程序设计的原则
1、使用语言中的顺序、选择、重复等有限的基本控制结构表示程序 2、选用的控制结构只准许有一个入口和一个出口 3、程序语句组成容易识别的块(Block),每块只有一个入口和一个
出口
4、复杂结构应该用基本控制结构进行组合嵌套来实现 5、严格控制GOTO语句
2019/11/15
…… 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) goto finish; if(F0*Fm>0) { X0=Xm; F0=Fm;} else X1=Xm; } finish: printf(“%d\n”,Xm);
F b-=5
单出口
2019/11/15
…… If (A.LT.B) goto 120 If (B.LT.C) goto 110 100 write(6,*) C goto 140 110 write(6,*) B goto 140 120 If(A.LT.C) goto 130 goto 100 130 write(6,*) A 140 continue
2
End
2019/11/15
…… 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*Fm>0) { X0=Xm; F0=Fm;} else X1=Xm; } printf(“%d\n”,Xm);