版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1第五章第五章 详细设计详细设计 总体设计是实现模块的划总体设计是实现模块的划分和模块接口的设计;分和模块接口的设计;详细设计也称过程设计。详细设计也称过程设计。 详细详细设计则是对每个模块给出详细设计则是对每个模块给出详细的过程性描述。的过程性描述。 但是,这些描述是应用但是,这些描述是应用详细设计的表达详细设计的表达工具工具来表达,来表达,而不是计算机上运行的程序。而不是计算机上运行的程序。21. 详细设计的过程和任务详细设计的过程和任务 1、 详细设计的任务详细设计的任务 详细设计的总体目标是确定怎样具体地实现所详细设计的总体目标是确定怎样具体地实现所要求的系统。即对软件结构图的每个模块
2、所采用的要求的系统。即对软件结构图的每个模块所采用的逻辑关系进行分析,设计出全部必要的过程细节,逻辑关系进行分析,设计出全部必要的过程细节,并给出清晰的描述,从而在编码阶段可以把这个描并给出清晰的描述,从而在编码阶段可以把这个描述直接翻译成某种程序设计语言书写的程序述直接翻译成某种程序设计语言书写的程序。详细详细设计的结果对最终程序代码的质量起着决定性的作设计的结果对最终程序代码的质量起着决定性的作用,对软件的测试和维护人员了解模块的内部结构用,对软件的测试和维护人员了解模块的内部结构也是很重要的。也是很重要的。3 2、 详细设计的过程详细设计的过程(1) 算法设计:为每个模块确定算法,并用算
3、法设计:为每个模块确定算法,并用适当的工具表达算法的过程,给出详细的描适当的工具表达算法的过程,给出详细的描述。述。(2) 数据结构设计:确定每个模块使用的数数据结构设计:确定每个模块使用的数据结构和模块接口的细节,包括内部接口、据结构和模块接口的细节,包括内部接口、外部接口、模块的输入、输出及局部数据。外部接口、模块的输入、输出及局部数据。(3)物理设计:确定文件、数据库等物理结构,物理设计:确定文件、数据库等物理结构,要明确相关数据的记录格式、存储方法、存要明确相关数据的记录格式、存储方法、存储介质等。储介质等。4(4) 测试预备设计:为每个模块设计一组测试测试预备设计:为每个模块设计一组
4、测试用例,以便在编码阶段对模块代码进行预用例,以便在编码阶段对模块代码进行预定的测试。定的测试。(5)其他设计:完整性控制(如:用户访问权其他设计:完整性控制(如:用户访问权限设置)、输入输出设计(如输入输出数限设置)、输入输出设计(如输入输出数据的类型,长度,数量等)、人机对话设据的类型,长度,数量等)、人机对话设计(对话方式内容格式等)、数据代码设计(对话方式内容格式等)、数据代码设计。计。(6) 编写详细设计说明书,提交复审。编写详细设计说明书,提交复审。53、详细设计原则:、详细设计原则:采用自顶向下、逐步求精的程序设计方法。采用自顶向下、逐步求精的程序设计方法。 在详细设计过程中,采
5、用逐步求精的方法可以在详细设计过程中,采用逐步求精的方法可以降低待处理问题的复杂度。降低待处理问题的复杂度。 使用顺序、选择、循环三种基本结构构造程序,使用顺序、选择、循环三种基本结构构造程序,具有单入、单出的控制结构(取消具有单入、单出的控制结构(取消GOTO语句,语句,以限制无条件跳转)以限制无条件跳转)设计人员组织结构采用设计人员组织结构采用“外科医生外科医生助手助手”模式。模式。 在这种组织结构中,外科医生和助手都应了解在这种组织结构中,外科医生和助手都应了解相关设计内容,但相关设计内容,但外科医生外科医生在设计中起在设计中起主导主导作用,作用,是设计的技术负责人,是设计的技术负责人,
6、助手助手只起只起技术支持技术支持作用。作用。此种模式区别于传统的此种模式区别于传统的“平等组合平等组合”模式,使设模式,使设计责任集中在少数人身上,避免了因观点不同而计责任集中在少数人身上,避免了因观点不同而造成的设计策略和接口的差异。造成的设计策略和接口的差异。6 2. 详细设计的工具详细设计的工具 详细设计阶段的工具分为图形、表格和语言三类详细设计阶段的工具分为图形、表格和语言三类。具体包括具体包括程序流程图、程序流程图、N-S图(盒图)、图(盒图)、PAD图(问题图(问题分析图)、判定树、判定表分析图)、判定树、判定表、PDL(过程设计)语言(过程设计)语言等。等。 1、程序流程图、程序
7、流程图(Program Flow Chart) 也称程序框图,历史悠久且使用广泛的一种算法也称程序框图,历史悠久且使用广泛的一种算法表达工具。表达工具。基本符号及基本符号及5种基本控制结构为:种基本控制结构为:789( (1) 1) 顺序结构顺序结构(2) (2) 选择结构选择结构ABPBAFT(3) (3) 先判定型循环结构先判定型循环结构(while-loop)(4) (4) 后判定型循环结构后判定型循环结构(until-loop)TPSFFSTP(5) (5) 多情况选择多情况选择(case)TA1FP=1TA2FP=2TAnFP=n 任何复杂的程序流程图都应由任何复杂的程序流程图都应由
8、以上五种基本结构组合而成。以上五种基本结构组合而成。 10例:用程序流程图描述例:用程序流程图描述下列计算过程:下列计算过程:1)输入数组)输入数组A,元素个,元素个数为数为N2)MAX=A13)从)从A2AN与与MAX比较比较4)如新元素)如新元素MAX,则则 MAX=新元素新元素5)输出最大数)输出最大数MAX开始开始输入数组输入数组AMAX=A1I=2I=NMAX0 时时:两个不相等的实根两个不相等的实根; 0结结 束束不是二次方程不是二次方程X1,2=-b/2aaacbbX2422,1YN12例:下图表示一个非结构化的程序。例:下图表示一个非结构化的程序。显然,第显然,第一个程序一个程
9、序流程图代流程图代表一个非表一个非结构化程结构化程序。因为序。因为有两个程有两个程序出口。序出口。第二个图第二个图为其修改为其修改图。图。开开 始始Pgq结结 束束FF开开 始始P & flaggq结结 束束Flag=1继续退出, 1, 0flagflagFFflag=0TT13例:将以下伪码转换为程序流程图。例:将以下伪码转换为程序流程图。 语句语句 a; do 语句语句 b; if (X1=T) 语句语句f; if (X4=T) do 语句语句i; until(X5); else 语句语句 g; 语句语句 h; else switch (X2) case 1: while (X3) 语句语
10、句 c; case 2: 语句语句 d; case 3: 语句语句 e; until (X6); 语句语句j;14 15 优点:使用方便、绘制简单、容易掌握,优点:使用方便、绘制简单、容易掌握,且历史且历史“悠久悠久”,使用广泛。,使用广泛。 缺点:缺点:本质上不具备逐步求精的特点,本质上不具备逐步求精的特点,对于提高大型系统的可理解性作用甚微;对于提高大型系统的可理解性作用甚微; 不易表示数据结构;不易表示数据结构; 随意性太强,流程箭头灵活性过随意性太强,流程箭头灵活性过大,转移控制太方便。大,转移控制太方便。 趋势:使用逐渐减少趋势:使用逐渐减少161、顺序结构、顺序结构块块1块块2PF
11、T块块1块块22、选择结构、选择结构PFT 块块当条件成立时当条件成立时循环体循环体3、While当型循环当型循环直到条件成立直到条件成立循环体循环体5、Until直到型循环直到型循环6、Case多分支多分支选择结构选择结构P=1=2=nA1A2An7、调用模块、调用模块块块2、盒图、盒图(Box Diagram): 1973年提出的符合结构化呈现年提出的符合结构化呈现设计原则的图形描述工具,又称为设计原则的图形描述工具,又称为N-S 图。图。 P86页页For I=1,N块块4、For循环循环17例:用例:用N-S图描述求数组元素的最大值。图描述求数组元素的最大值。输入数组输入数组AMAX=
12、A1MAXAITFMAX=AI输出输出MAXFOR I=2,N1819x21cDo-While x323dek :2. 工具工具也可采用如下的方式:也可采用如下的方式:x4TFDo-Until x5ighfkx1TFbDo-Until x6aj20例:任意输入一个日期,判断该日期的第二天是何例:任意输入一个日期,判断该日期的第二天是何年何月何日?用年何月何日?用N-S图描述其算法。图描述其算法。输入日期输入日期计算本月有几天计算本月有几天本日是月尾本日是月尾FT日日日日+1月不变月不变月月=13日日 1月月月月+1FT月月 1年年年年+1输出年、月、日输出年、月、日21课堂练习:阅读下列课堂练
13、习:阅读下列C程序,画出程序,画出N-S图。图。Main() int a11, i, j, t; printf(“Input 10 numbers:n”); for ( i =1; i=10; i+) scanf(“%d”, &ai); for (j =1; j=9; j+) for ( i =1; iai+1) t = ai; ai= ai+1; ai+1=t; printf(“The sorted numbers:n”); for ( i =1; iai+1TFaiai+1输出数组输出数组aFOR i=1 to N-j222. 工具工具特点:特点: 没有箭头,不允许随意转移控制;没有箭头,
14、不允许随意转移控制; 每个矩形框每个矩形框(Case中条件取值例外中条件取值例外)都是一都是一个功能域个功能域(即一个特定结构的作用域即一个特定结构的作用域),结,结构表示明确;构表示明确; 局部及全程数据的作用域易见;局部及全程数据的作用域易见; 易表现嵌套关系以及模块的层次结构。易表现嵌套关系以及模块的层次结构。23AB顺序 While PS Until PS循环PABTHENELSE选择P =A1A2Case型多分支An12n语句标号def定义3、PAD问题分析图问题分析图:PAD图采用二维树型结构表示程图采用二维树型结构表示程序的控制流。序的控制流。基本符号基本符号如下:如下:24对应
15、于增量型循环结构 for i := n1 to n2 step n3 do在PAD中有相应的循环控制结构25输入数组输入数组AMAX=A1I=2, N, 1输出输出MAXMAXai+1TFai ai+1输出数组输出数组aFOR i=1 to N-j开始开始 结束结束 输入输入a输出输出 a j=1, N-1,1aiai+1ai ai+1 i=1, N-j, 1292. 工具工具特点:特点:结构清晰,层次分明,易读、易懂、易记;结构清晰,层次分明,易读、易懂、易记;支持逐步求精的设计思想;支持逐步求精的设计思想;支持结构化程序设计;支持结构化程序设计;容易将容易将PAD自动转换为高级语言源程序。
16、自动转换为高级语言源程序。 PAD不如程序流程图和不如程序流程图和N-S图普及。图普及。304、PDL(过程设计语言)(过程设计语言) 是一种描述功能模块算法设计和加工细节的语言是一种描述功能模块算法设计和加工细节的语言,也称为程序设计语言也称为程序设计语言.过程设计语言是在伪码的基础过程设计语言是在伪码的基础上,增加了控制结构和数据结构的定义,以完成模上,增加了控制结构和数据结构的定义,以完成模块、数据和输入输出的描述(也可称为块、数据和输入输出的描述(也可称为“伪码伪码”) PDLPDL是一种是一种“类语言类语言”,是由自然语言的词汇和某,是由自然语言的词汇和某一种高级语言的语法结合而成。
17、一种高级语言的语法结合而成。关键字具有固定的语法格式,可提供结构化控制关键字具有固定的语法格式,可提供结构化控制结构、数据和模块说明;结构、数据和模块说明;说明性语言可以采用自然语言、便于理解;说明性语言可以采用自然语言、便于理解;可说明简单数据结构和复杂数据结构;可说明简单数据结构和复杂数据结构;可完成模块定义和说明,完成各种接口的描述。可完成模块定义和说明,完成各种接口的描述。可自动生成程序可自动生成程序31 5 5、判定表、判定表 & & 判定树判定树 P43P43 当算法中包含多重嵌套的条件选择时,用程序流当算法中包含多重嵌套的条件选择时,用程序流程图、程图、N-S图、图、PAD图或图
18、或PDL(过程设计)语言都不(过程设计)语言都不易清楚描述。易清楚描述。 判断表能表示复杂的条件组合与应做动作之间的判断表能表示复杂的条件组合与应做动作之间的对应关系。对应关系。 (1)判定表判定表 判定表由四部分组成,制作时用双线分割为判定表由四部分组成,制作时用双线分割为4个个区域:左上部列出所有条件,左下部分是所有可能区域:左上部列出所有条件,左下部分是所有可能的动作,右上部是各种条件组合的一个矩阵,右下的动作,右上部是各种条件组合的一个矩阵,右下部是和每种条件取值组合相对应的动作。部是和每种条件取值组合相对应的动作。动作定义动作定义条件定义条件定义条件取值的组合条件取值的组合在各种取值
19、的组合下应执行的动作在各种取值的组合下应执行的动作32 判定表的判定表的优点优点是能够简洁、无二义性地描述所是能够简洁、无二义性地描述所有的处理规则,但只能表示静态逻辑,不能作为通有的处理规则,但只能表示静态逻辑,不能作为通用的设计工具。用的设计工具。可以采取的步骤:可以采取的步骤:(1)提取问题中的条件:性别、年龄、婚姻。)提取问题中的条件:性别、年龄、婚姻。(2)标出条件取值:为了绘制方便,可用符号代替条)标出条件取值:为了绘制方便,可用符号代替条件取值。件取值。 例:申请汽车保险时规定:若申请者年龄在例:申请汽车保险时规定:若申请者年龄在21岁以下,岁以下,要额外收费;在要额外收费;在2
20、1岁以上并岁以上并26岁以下的女性,适合岁以下的女性,适合A类保险;类保险;26岁以下的已婚男性或岁以下的已婚男性或26岁以上的男性,适岁以上的男性,适合合B类保险;类保险; 21岁以下的女性或岁以下的女性或26岁以下的单身男性,岁以下的单身男性,适合适合C类保险;其他类型的人适合类保险;其他类型的人适合A类保险。类保险。33(4)提取可能采用的动作:)提取可能采用的动作:A类、类、 B类、类、 C类保险、额外收费。类保险、额外收费。条件名条件名取取 值值符符 号号取值数取值数年龄年龄=2121年龄年龄26年年 龄龄CYLm1=3男男女女MF性性 别别m2=2未婚未婚已婚已婚婚婚 姻姻WEm3
21、=2条件取值表条件取值表12321mmmm条条件件取取值值数数n n1 1i ii im mN:NN:N组合数组合数(3)计算所有条件的(3)计算所有条件的34额外收费额外收费123456789101112年年 龄龄性性 别别婚婚 姻姻A类保险类保险B类保险类保险C类保险类保险CCCCYYYYLLLLFFFFFFMMMMMMWWWWWWEEEEEE判判 定定 表表(5)制作判断表)制作判断表352. 工具工具例:航空行李托运费的算法例:航空行李托运费的算法按规定:按规定:重量不超过重量不超过30公斤公斤的行李可的行李可免费托运免费托运。重量超过重量超过30公斤时,对超运部分公斤时,对超运部分,
22、头等头等舱舱国内乘客国内乘客收收4元元/公斤公斤;其它舱位其它舱位国内国内乘客收乘客收6元元/公斤公斤;外国乘客外国乘客收费为国内收费为国内乘客的乘客的2倍倍;残疾乘客残疾乘客的收费为的收费为正常乘正常乘客客的的1/2。 36规则规则规则号规则号 条件分类条件分类收费计算收费计算37 (2)判定树判定树 判定树是判断表的变种,也能清晰地表示复杂判定树是判断表的变种,也能清晰地表示复杂的条件组合与应作的动作之间的对应关系。它的优的条件组合与应作的动作之间的对应关系。它的优点是形式简单、直观,不需要任何说明;缺点是不点是形式简单、直观,不需要任何说明;缺点是不如判定表简洁,如判定表简洁,同时与判断
23、表一样只能表示静态逻同时与判断表一样只能表示静态逻辑,不能作为通用的设计工具。辑,不能作为通用的设计工具。行李费行李费算法算法行李重量行李重量W 30行李重量行李重量W 30免费免费国内乘客国内乘客外国乘客外国乘客头等舱头等舱其他舱其他舱残疾乘客残疾乘客正常乘客正常乘客(W-30) 2(W-30) 4残疾乘客残疾乘客正常乘客正常乘客(W-30) 3(W-30) 6头等舱头等舱其他舱其他舱残疾乘客残疾乘客正常乘客正常乘客(W-30) 4(W-30) 8残疾乘客残疾乘客正常乘客正常乘客(W-30) 6(W-30) 12注:判定表与判定树并不适用于注:判定表与判定树并不适用于作为一种通用的设计工具,
24、不能作为一种通用的设计工具,不能表示顺序结构、循环结构,通常表示顺序结构、循环结构,通常将之用于辅助测试。将之用于辅助测试。38用判定树表示计算行李费的算法用判定树表示计算行李费的算法注:判定表与判定树并不适用于注:判定表与判定树并不适用于作为一种通用的设计工具,不能作为一种通用的设计工具,不能表示顺序结构、循环结构,通常表示顺序结构、循环结构,通常将之用于辅助测试。将之用于辅助测试。汽车保险例汽车保险例2121:A A类保险类保险年龄年龄收费收费2121:C C类保险且额外类保险且额外年龄年龄女女2626:B B类保险类保险年龄年龄未婚:未婚:C C类保险类保险已婚:已婚:B B类保险类保险
25、2626年龄年龄2121收费收费已婚:已婚:B B类保险且额外类保险且额外收费收费未婚:未婚:C C类保险且额外类保险且额外2121年龄年龄男男保险类别保险类别39课堂练习:课堂练习: 某校根据专、兼职教师决定其课时标准。规定专职教师课某校根据专、兼职教师决定其课时标准。规定专职教师课时津贴:教授时津贴:教授50元,副教授元,副教授40元,讲师元,讲师30元,助教元,助教20元;兼职元;兼职教师中教授教师中教授60元,副教授元,副教授50元,讲师元,讲师40元,助教元,助教30元;试用判元;试用判定表和判定树表示各类教师的课时津贴。定表和判定树表示各类教师的课时津贴。条件名条件名取取 值值符符
26、 号号取值数取值数教教 授授副教授副教授讲讲 师师助助 教教职职 称称ABCDm1=4专职专职兼职兼职专兼职专兼职TFm2=2条件取值表条件取值表821mmm条条件件取取值值数数4012345678职称职称专兼职专兼职AABBCCDDTFTFTFTF判判 定定 表表60元元50元元40元元30元元20元元当有多个动作,且每一列规则只有一个动作时,也可采用下表:当有多个动作,且每一列规则只有一个动作时,也可采用下表:12345678职称AABBCCDD专兼职TFTFTFTF课时津贴50604050304020304130元30元教教 助助40元40元师师 讲讲50元50元副教授副教授60元60元
27、 授 授教教兼职兼职20元20元教教 助助30元30元师师 讲讲40元40元副教授副教授50元50元 授 授教教专职专职课时津贴课时津贴423. Jackson 程序设计方法程序设计方法(JSD) 在前面我们介绍了在前面我们介绍了面向数据流的设计方法面向数据流的设计方法(SD方法),在总体设计中常用该方法。在详细设计阶方法),在总体设计中常用该方法。在详细设计阶段,采用的主要方法是面向数据结构的方法段,采用的主要方法是面向数据结构的方法,即即Jackson方法和方法和Warnier方法。方法。 1、基本思想、基本思想 在在20世纪世纪60年代,有专家认为,内在数据结构年代,有专家认为,内在数据
28、结构致关重要,可致关重要,可利用输入数据结构和输出数据结构来利用输入数据结构和输出数据结构来推导出程序结构。推导出程序结构。在许多领域,在许多领域,数据的结构十分出数据的结构十分出色地指示了程序的结构色地指示了程序的结构。面向数据结构的设计方法。面向数据结构的设计方法就是利用这些结构来作为开发软件的基础。就是利用这些结构来作为开发软件的基础。43 2、SD方法与方法与JSD方法的异同方法的异同 面向数据流的设计面向数据流的设计(SD方法和方法和OOD)和面向数据和面向数据结构的设计结构的设计(JSD方法方法)的的相同点是:相同点是:都以数据信息驱都以数据信息驱动,都试图将数据表示转换为软件表示
29、;动,都试图将数据表示转换为软件表示; 不同点是:面向数据结构的设计不利用数据流,不同点是:面向数据结构的设计不利用数据流,而根据数据结构的表示来设计。而根据数据结构的表示来设计。JSD根据输入、输根据输入、输出的数据结构,按一定的规则映射成软件的过程描出的数据结构,按一定的规则映射成软件的过程描述,述,即程序结构即程序结构;而而SD方法根据数据流图来设计,方法根据数据流图来设计,最终目标是建立软件体系结构的描述,最终目标是建立软件体系结构的描述,即软件的层即软件的层次结构次结构。44ABCBCA =ABoCoSA =SCBA = BAB*I3、 Jackson图图 (1) 顺序结构:顺序结构
30、:数据由一个或多个元素组成,每个元数据由一个或多个元素组成,每个元素按确定次序出现一次。素按确定次序出现一次。(2) 选择结构:选择结构:数据包含两个或多个元素,每次使用数据包含两个或多个元素,每次使用数据时按一定条件从这些元素中选择一个。数据时按一定条件从这些元素中选择一个。(3) 重复结构:重复结构:数据由一个元素出现零次或多次构成。数据由一个元素出现零次或多次构成。45(1) 顺序结构:顺序结构: A seq B C A end(2) 选择结构:选择结构: A select代码代码1 B A or 代码代码2 C A or 代码代码3 D A end(3) 重复结构:重复结构: A it
31、er until(while) 代码代码 B A end4、JSD使用的伪码使用的伪码465 5、JacksonJackson方法方法 Jackson Jackson方法由下述五步组成:方法由下述五步组成:(1)(1)分析并确定分析并确定输入、输出数据输入、输出数据的逻辑结构,的逻辑结构,并用并用JacksonJackson数据结构图数据结构图描述所用的数据描述所用的数据结构。结构。(2)(2)找出找出输入数据结构与输出数据结构之间输入数据结构与输出数据结构之间有对应关系的单元有对应关系的单元。有。有对应关系指有直接对应关系指有直接的因果关系,程序可一起处理的数据的单的因果关系,程序可一起处理
32、的数据的单元。若是重复的数据单元,重复次序、次元。若是重复的数据单元,重复次序、次数必须相同才算对应。数必须相同才算对应。47(3) (3) 由数据结构确定程序结构。映射规则主要有以由数据结构确定程序结构。映射规则主要有以下三条:下三条: 为每对为每对有对应关系的数据单元有对应关系的数据单元,按所在数据结,按所在数据结构的层次,在程序结构的适当位置构的层次,在程序结构的适当位置画一个处理框画一个处理框。 为为输入数据结构输入数据结构中每一中每一剩余数据单元画一处理剩余数据单元画一处理框。框。 为为输出数据结构输出数据结构中每一中每一剩余数据单元画一处理剩余数据单元画一处理框。框。 简单说,每对
33、简单说,每对有对应关系的数据单元合画一框,有对应关系的数据单元合画一框,没有对应关系的所有数据单元各画一框没有对应关系的所有数据单元各画一框。(4) (4) 列出和分配可执行操作。列出和分配可执行操作。(5) (5) 写出与程序结构图对应的伪代码表示。写出与程序结构图对应的伪代码表示。48 例:一个例:一个正文文件正文文件由由若干个记录若干个记录组成,每个组成,每个记记录是一个字符串录是一个字符串。要求。要求统计每个记录中空格字符统计每个记录中空格字符的个数的个数,以及文件中空格字符的总个数。以及文件中空格字符的总个数。要求的要求的输出一张表格,输出一张表格,其数据格式是:每其数据格式是:每复
34、制一行输入复制一行输入字符串字符串之后,之后,另起一行印出这个字符串中的空格另起一行印出这个字符串中的空格数数,最后最后印出文件中印出文件中空格的总个数空格的总个数。49第第1 1步:用步:用JacksonJackson图描述图描述 I/O I/O 的数据结构的数据结构正文文件正文文件I字符串字符串*字符字符*空格空格O非空格非空格OIS输入输入输出表格输出表格表格体表格体串信息串信息*字符串字符串空格数空格数I输出输出空格总数空格总数第第2 2步:在两个图中指出有直接因果关系步:在两个图中指出有直接因果关系、可以同时可以同时处理的单元(重复的次序,次数均相同)处理的单元(重复的次序,次数均相
35、同)50正文文件正文文件I字符串字符串*字符字符*空格空格O非空格非空格OIS输入输入输出表格输出表格表格体表格体串信息串信息*字符串字符串空格数空格数I输出输出空格总数空格总数? 经过程序处理由经过程序处理由正文文件正文文件得到得到输出表格输出表格。 每处理输入中一个每处理输入中一个字符串字符串后就得到输出中一个后就得到输出中一个串信息串信息,二者重复次序和次数均相同。二者重复次序和次数均相同。 字符字符不能与多字符组成的不能与多字符组成的字符串字符串对应。对应。 单个单个空格空格不能决定不能决定空格数空格数。51正文文件正文文件I字符串字符串*字符字符*空格空格O非空格非空格OIS输入输入
36、输出表格输出表格表格体表格体串信息串信息*字符串字符串空格数空格数I输出输出空格总数空格总数统计空格统计空格处理字符串处理字符串*I程序体程序体印总数印总数印字符串印字符串印空格数印空格数分析字符分析字符*I分析字符串分析字符串处理空格处理空格o处理非空格处理非空格oS注:顺序执行的处理中不允许混有重注:顺序执行的处理中不允许混有重复执行或选择执行的处理,故在复执行或选择执行的处理,故在第四层增加了第四层增加了“分析字符串分析字符串”。第第3 3步:数据结构步:数据结构 程序结构程序结构把有对应关系的单元合为一个处理框,画把有对应关系的单元合为一个处理框,画在相应的层次中(在相应的层次中(不同
37、层以低层为准不同层以低层为准)52第第4 4步:列出所有操作条步:列出所有操作条件,并分配到上幅程序件,并分配到上幅程序结构图中。结构图中。统计空格统计空格处理字符串处理字符串*I(1)程序体程序体印总数印总数印字符串印字符串印空格数印空格数分析字符分析字符*I2分析字符串分析字符串处理空格处理空格o处理非空格处理非空格oS23145打开文件打开文件读入字符串读入字符串空格总数空格总数 totalsum=0关闭文件关闭文件停止停止I 文件结束文件结束I (2)字符串结束字符串结束53统计空格 seq 打开文件 读入字符串 total sum:=0 程序体 iter until 文件结束 处理字
38、符串 seq 印字符串seq 印出字符串 印字符串end sum:=0 pointer:=1 分析字符串 iter until 字符串结束 分析字符 select 字符是空格 处理空格 seq sum:=sum + 1 pointer:= pointer+1 处理空格 end 第第5步:用伪代码表示程序。步:用伪代码表示程序。统计空统计空格格处理字符处理字符串串*I(1)程序体程序体印总数印总数印字符印字符串串印空格印空格数数分析字符分析字符*I分析字符分析字符串串处理空处理空格格o处理非空处理非空格格oS2314554分析字符串 or 字符不是空格 处理非空格 seq pointer:= p
39、ointer+1 处理非空格 end 分析字符end 分析字符串 end 印空格数 seq 印出空格数目 印空格数 end total sum:=total sum + sum 读入字符串 处理字符串 end 程序体 end 印总数seq 印出空格总数 印总数end 关闭文件 停止统计空格end跳过下个例题55 例:某仓库存放多种零件例:某仓库存放多种零件(如如P1,P2, ),每个零件每个零件的每次进货、发货都有的每次进货、发货都有一张卡片一张卡片作出记录,每月根作出记录,每月根据这样一叠卡片打印一张月报表。在报表中每行均据这样一叠卡片打印一张月报表。在报表中每行均要列出某种零件的名称和本月
40、库存量的净变化。用要列出某种零件的名称和本月库存量的净变化。用JSD方法对该问题进行设计。方法对该问题进行设计。 分析:分析: (1) 输入数据:输入数据:把同一种零件的卡片放在一起组成把同一种零件的卡片放在一起组成一组,所有的卡片组按零件名排序。输入数据由许一组,所有的卡片组按零件名排序。输入数据由许多零件组组成的文件,每个零件组有许多张卡片,多零件组组成的文件,每个零件组有许多张卡片,每张卡片记录本零件进货或发货的信息。每张卡片记录本零件进货或发货的信息。 (2)输出数据:输出数据:输出数据是一张月报表,它由表头和输出数据是一张月报表,它由表头和表体组成,表体有多行,一个零件的净变化占一行
41、。表体组成,表体有多行,一个零件的净变化占一行。56第第1 1步:用步:用JacksonJackson图描述图描述 I/O 的数据结构的数据结构输入文件输入文件I零件组零件组*卡片卡片*进货进货O发货发货OIS输入输入输出输出表体表体行行*零件名零件名净变化净变化I表头表头月报表月报表第第2 2步:在两个图中指出有直接因果关系步:在两个图中指出有直接因果关系、可以同时可以同时处理的单元(重复的次序,次数均相同)处理的单元(重复的次序,次数均相同)月报表月报表零件名净变化P1P2P3.+200-100+300.57输入文件输入文件I零件组零件组*卡片卡片*进货进货O发货发货OIS输输 入入表体表
42、体行行*零件名零件名净变化净变化I表头表头月报表月报表输输 出出经过程序处理由经过程序处理由输入文件输入文件得到得到月报表。月报表。表体的每一行数据由输入文件的每一个表体的每一行数据由输入文件的每一个“零件组零件组”计算而来,行数与组数相同,且行的排列次序与组计算而来,行数与组数相同,且行的排列次序与组的排列次序一致,都按零件号排序。故的排列次序一致,都按零件号排序。故“零件组零件组”与与“行行”两个单元对应。两个单元对应。58第第3 3步步:数据结构数据结构 程序结构程序结构 把有对应关系的单元合为一个处理框,画在相应的层把有对应关系的单元合为一个处理框,画在相应的层次中(不同层以低层为准)
43、次中(不同层以低层为准)输入文件输入文件I零件组零件组*卡片卡片*进货进货O发货发货OIS输输 入入表体表体行行*零件名零件名净变化净变化I表头表头月报表月报表输输 出出由输入文件产生月报表由输入文件产生月报表由零件组产生输出行由零件组产生输出行*I产生表体产生表体产生表头产生表头产生零件名产生零件名产生净变化产生净变化处理卡片处理卡片*I处理零件组处理零件组处理进货处理进货o处理发货处理发货oS 注:顺序执行的处理中不允许混有注:顺序执行的处理中不允许混有重复执行或选择执行的处理,故重复执行或选择执行的处理,故在第四层增加了在第四层增加了“处理零件组处理零件组”59第第4 4步:列出所有操作
44、条步:列出所有操作条件,并分配到程序结构件,并分配到程序结构图中图中打开文件打开文件读一张卡读一张卡置零件组开始标志置零件组开始标志关闭文件关闭文件停止停止(6)产生行结束符产生行结束符(7)打印字符行打印字符行(8)打印净变化打印净变化(9)累计进货量累计进货量(10)累计发货量累计发货量I (1)输入条件未结束输入条件未结束I (2)零件组未结束零件组未结束S (3)进发货标志进发货标志由输入文件产生月报表由输入文件产生月报表产生表头产生表头产生表体产生表体23145由零件组产生输出行由零件组产生输出行*I(1)产生零件名产生零件名产生净变化产生净变化处理卡片处理卡片*I(2)处理零件组处理零件组处理进货处理进货o处理发货处理发货oS(3)79108660第第5 5步:用伪代码表示程序步:用伪代码表示程序产生月报表产生月报表seq 打开文件打开文件 读一张卡读一张卡 置零件组开始标志置零件组开始标志 产生表头产生表头 产生表体产生表体iter while 输入文件未结束输入文件未结束 由零件组产生输出行由零件组产生输出行seq 产生零件名产生零件名seq 打印字符行打印字符行 产生零件名产生零件名end 处
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年度机械设备制造修理人员全真模拟模拟题1套附答案详解
- 2024-2025学年大连汽车职业技术学院单招《语文》真题附参考答案详解(综合题)
- 2024-2025学年度电工通关题库及完整答案详解一套
- 2024-2025学年医学检验(士)过关检测试卷附参考答案详解(综合题)
- 2024-2025学年咨询工程师通关考试题库【模拟题】附答案详解
- 2024-2025学年度护士资格证综合提升测试卷附参考答案详解(综合题)
- 鼻中隔偏曲的物理治疗护理
- 2024-2025学年医师定期考核练习题带答案详解(考试直接用)
- 2024-2025学年化验员考前冲刺练习题及答案详解【全优】
- 就项目合作事宜的确认函6篇范本
- 2026天津宏达投资控股有限公司及所属企业招聘工作人员16人备考题库带答案详解(完整版)
- 学校饮用水污染事件应急报告与管理制度
- 洁净灯具施工方案(3篇)
- 政治试题-汕头市2025-2026学年度普通高中毕业班教学质量监测(含解析)
- 2026-2030中国一次性餐盒行业深度调研及投资前景预测研究报告
- 2026年春苏教版新教材小学科学二年级下册(全册)教学设计(附教材目录P97)
- 注塑岗位安全培训课件
- 2026年考试题库北汽集团高管知识水平测试
- 三项管理制度及生产安全事故应急救援预案
- 核电防异物管理指南(核心版)
- 2026年国家电网招聘之电网计算机考试题库500道含完整答案(历年真题)
评论
0/150
提交评论