【教学课件】第七章详细设计.ppt

上传人:wuy****n92 文档编号:69865308 上传时间:2023-01-10 格式:PPT 页数:58 大小:283KB
返回 下载 相关 举报
【教学课件】第七章详细设计.ppt_第1页
第1页 / 共58页
【教学课件】第七章详细设计.ppt_第2页
第2页 / 共58页
点击查看更多>>
资源描述

《【教学课件】第七章详细设计.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第七章详细设计.ppt(58页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、 详细设计一、结构化程序设计思想1.结构化程序设计的提出Dijkstra在1965年召开的IFIP国际信息处理联合会议上提出将GOTO语句取消。1968年ACM美国计算机协会发表了Dijkstra一篇文章:GOTO语句有害论,并提出了3种基本控制结构。2.什么是结构程序设计l结构程序设计是一种设计程序的技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。l它包括顺序、条件和重复三种基本控制结构。三种基本的控制结构 其他常用的控制结构2.逐步求精的含义l详细设计阶段逐步求精的含义:把一个模块的功能逐步分解细化为一系列具体的处理步骤或某种高级语言的语句。l总体设计阶段逐步求精的含义:把

2、一个复杂问题的解法分解和细化成一个由许多模块组成的层次结构的软件系统。3.结构程序设计技术的优越性(1)自顶向下逐步求精的方法符合人类解决复杂问题的普遍规律,因此可以显著提高软件开发工程的成功率和生产率。(2)用先全局后局部、先整体后细节、先抽象后具体的逐步求精过程开发出的程序有清晰的层次结构,因此容易阅读和理解。(3)不使用GOTO语句仅使用单入口单出口的控制结构,使得程序的静态结构和它的动态执行情况比较一致,易于阅读和理解。(4)控制结构有确定的逻辑模式,编写程序代码只限于很少几种直截了当的方式,因此源程序清晰流畅。(5)程序清晰和模块化使得在修改和重新设计一个软件时可以重用的代码量最大。

3、(6)程序的逻辑结构清晰,有利于程序正确性证明。一、图形设计表示法1.程序流程图2.盒图(NS图)3.PAD图4.程序设计语言PDL详细设计工具1.程序流程图(1)程序流程图又称为程序框图,是早期软件设计的主要工具。(2)优点:l对控制流程的描绘很直观,便于初学者掌握。l结构清晰,可读性、可测试性和可维护性好。程序流程图(3)缺点:l程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构。l程序流程图中用箭头代表控制流,因此程序员不受约束,可以完全不顾结构程序设计的精神,随意转移控制。l程序流程图不易表示数据结构。Case条件(Repeat-unt

4、il)示例程序流程图的标准符号程序流程图的标准符号循环的标准符号循环的标准符号 注解的使用注解的使用多出口判断多出口判断N-S图2.盒图(N-S图)l盒图由Nassi和Shneiderman提出,又称为N-S图,它有以下特点:(1)功能域(即一个特定控制结构的作用域)明确,很容易从盒图上看出。(2)不可能任意转移控制(3)很容易确定局部和全程数据的作用域(4)很容易表现嵌套关系,也可以表示模块的层次结构(5)盒图没有箭头,不可以随意转移控制,不允许违背程序设计的原则。N-S图lN-S图也叫做盒图。五种基本控制结构由五种图形构件表示。N-S图的嵌套定义形式图的嵌套定义形式X8X6X7Casei=

5、2,3,4X3 X4Case i=2,3,4X3X4X2decX5与a图等价的流程图abx1x2fx6gihx8x7jx5x3x4dec练习:写出下列伪码的盒图StartIfPthenwhileQdoFEnddoelseblockGNendblockEndifstopPQFGNtrueflase()复习l图形设计表示法1.程序流程图2.盒图abx1x2fx6gihx8x7jx5x3x4decPAD图3.PAD图lPAD图由日本日立公司在1973年发明,它是一种用于过程设计的表达式,它综合了流程图、盒图、Warnier图和伪码等技术的一些特点,在Pascal语言基础上发展起来的。它用二维树型结构

6、的图来表示程序的控制流,比较容易翻译成程序代码。l生成PAD图的步骤:第一步要从系统设计的一种粗略、模糊概念出发,将过程描述为过程顺序部分的表示、重复部分的表示和选择部分的表示。重复以上步骤,直到过程完全确定和详尽为止。头脑中粗略模糊问题解的概念顺序过程的细化循环过程的细化选择过程的细化模糊模糊模糊模糊模糊模糊模糊模糊模糊模糊前处理后处理选择处理符号名称说明输入框框内写出输入变量名输出框框内写出输出变量名处理框框内写出处理名或语句名重复框先判定,后执行循环体重复框先执行循环体,再判定选择框框内写出选择条件子程序框框内写出子程序名定义框框内写出定义名P PA AD D图图的的基基本本符符号号及及

7、其其说说明明lPAD也设置了五种基本控制结构的也设置了五种基本控制结构的图式,并允许递归使用。图式,并允许递归使用。lPAD图转换为相应源程序的步骤:根据问题解画出PAD图;把PAD图看作横向生长的树,沿着树向前进,写出源程序。l写源程序时的原则:遇处理框和子程序框直接写出其处理内容遇选择框或重复框按照表4-2所示的语言模式写出相应的语句P PA AD D图图的的基基本本图图示示和和C C语语言言的的标标准准模模式式(表表4 4.2 2)构造PADC语言顺序H1H2选择IfthenIfthenelseDocase(switch)If(Q)HIf(Q)H1ElseH2SwitchIcaseI1:

8、H1;Break:caseIn:Hn;BreakDefault:HdH1H2HH1H2H1H2HnHdI1I2Indefault(Q)(Q)表表4 4.2 2(续续表表)构造PADC语言重复Do-whileDo-untilWhile(Q)HDoHWhile(Q)或者For(e1;e2;e3)H (Q)H(Q)HPAD图转换为C语言源程序的实例例1边长为x,y,z的三角形面积公式为:P=S(S-x)(S-y)(S-z)其中 S=(x+y+z)/2 现有三个三角形,它们的边长分别为a1,b1,c1;a2,b2,c2;a3,b3,c3,求这三个三角形面积之和。/*file:y9-9,c*/#incl

9、ude“stdio.h”Main()Float p();Float a1,b1,c1,a2,b2,c2,a3,b3,c3,sum;Scanf(“%f%f%f%f%f%f%f%f%f”,&a1,&b1,&c1,&a2,&b2,&c2,&a3,&b3,&c3,);ab /*file:y9-9,c*/#include“stdio.h”Main()Float p();Float a1,b1,c1,a2,b2,c2,a3,b3,c3,sum;Scanf(“%f%f%f%f%f%f%f%f%f”,&a1,&b1,&c1,&a2,&b2,&c2,&a3,&b3,&c3,);Extern float sqrt

10、();Printf(%f”,sum);Float(p(x,y,z)Float x,y,z;Sum=p(a1,b1,c1)+p(a2,b2,c2)+p(a3,b3,c31);ab Extern float sqrt();Printf(%f”,sum);Float(p(x,y,z)Float x,y,z;Sum=p(a1,b1,c1)+p(a2,b2,c2)+p(a3,b3,c3);cd Return(s1);Float s,s1;S=(x+y+z)/2;S1=sqrt(s*(s-x)*(s-y)*(s-z);cd Return(s1);Float s,s1;S=(x+y+z)/2;S1=sqrt

11、(s*(s-x)*(s-y)*(s-z);/*file:y9-9,c*/#include“stdio.h”Main()Float p();Float a1,b1,c1,a2,b2,c2,a3,b3,c3,sum;Scanf(“%f%f%f%f%f%f%f%f%f”,&a1,&b1,&c1,&a2,&b2,&c2,&a3,&b3,&c3,);Extern float sqrt();Printf(%f”,sum);Float(p(x,y,z)Float x,y,z;Sum=p(a1,b1,c1)+p(a2,b2,c2)+p(a3,b3,c3);Return(s1);Float s,s1;S=(x+

12、y+z)/2;S1=sqrt(s*(s-x)*(s-y)*(s-z);输入数据:3 4 5 3 4 5 3 4 5 三个三角形面积之和:18.000000 例2打印1968年出生的学生人数,并统计全班男女学生各有多少。/*file:10-38,c*/#include“stdio.h”#define Bsize 128main();Struct student ab Char sex,*name;/*file:10-38,c*/#include“stdio.h”#define Bsize 128main();Struct student Char sex,*name;Int birthyear;

13、Class5;Char bfbsize+2,*fp3;Int i;Int count68=0,countm=0,countf=0;cd Printf(“name,sex(m,f),birth yearn”);ab Int birthyear;Class5;Char bfbsize+2,*fp3;Int i;Int count68=0,countm=0,countf=0;Printf(“name,sex(m,f),birth yearn”);cd (I=0,I5,I+)gh Basicget(stdin,bf,bsize,fp,3)Classi.name=fp0;Classi.sex=*fp1;

14、Classi.birthyear=atio(fp2);ef (Classi.birthyear=1968)+count68;For(I=0,I5,I+)Basicget(stdin,bf,bsize,fp,3)Classi.name=fp0;Classi.sex=*fp1;Classi.birthyear=atio(fp2);If(Classi.birthyear=1968)+count68;将字符串表示的数据化为整数读入记录类型的数据ef gh (Classi.sex)=m)+countm;+countf;Printf(“male:%dn”,countm);Printf(“female:%d

15、n”,countf);Printf(“birthyear=1968%dn”,count68);If(Classi.sex)=m)+countm;+countf;elsePrintf(“male:%dn”,countm);Printf(“female:%dn”,countf);Printf(“birthyear=1968%dn”,count68);/*file:10-38,c*/#include“stdio.h”#define Bsize 128main();Struct student Char sex,*name;Int birthyear;Class5;Char bfbsize+2,*fp

16、3;Int i;Int count68=0,countm=0,countf=0;Printf(“name,sex(m,f),birthyearn”);For(I=0,I30国内乘客外国乘客头等舱其它舱残疾乘客-(W-30)*2正常乘客-(W-30)*4残疾乘客-(W-30)*3正常乘客-(W-30)*6头等舱其它舱残疾乘客-(W-30)*4正常乘客-(W-30)*8残疾乘客-(W-30)*6正常乘客-(W-30)*12行李重量W30免费练习:如果金额超过1000元又未过期,则发出批准单和提货单。如果金额超过2000元,但已经过期,则不发出批准单和提货单。如果金额低于2000元,则不论是否过期,都发出批准单和提货单,而且对低于2000元已经过期的还需发出通知单。过期FT2000金额T1000金额T金额2000T发批准单发提货单发通知单判定表TT判定树检查订货单过期不过期1000金额2000金额2000发提货单、批准单发通知单、提货单、批准单不发小结l重点难点:熟练掌握程序流程图、盒图、PAD图区分程序流程图、PAD图和数据流程图中的符号表示熟练掌握判定表和判定树以及它们之间的转换关系

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com