您好,欢迎访问三七文档
第2章伪代码实例介绍主讲:黄明琼第2章伪代码实例介绍•2.1伪代码介绍•2.2三角形问题•2.3NextDate函数问题•2.4佣金问题•2.5简单ATM系统•2.6货币转换器本章教学目标正确理解伪代码的概念正确理解伪代码的规则正确理解伪代码实例中的逻辑能够看懂实例中的伪代码所表达的含义2.1伪代码介绍•2.1.1伪代码概念•2.1.2一种伪代码规则2.1伪代码介绍伪代码引言:在单元测试中,我们会用到三个例子,分别是:三角形问题;逻辑比较复杂的函数,NextDate();有代表性的MIS测试,佣金问题。这三个例子合在一起,可以说明测试人员在单元级别上会遇到的大多数问题,而在讨论这几个问题时,我们会用到伪代码这个工具,因此今天我们先介绍伪代码的概念和一种伪代码规则。2.1.1伪代码概念伪代码实际上是计算机代码的简略形式,它比流程图更像计算机代码。伪代码必须结构清晰,代码简单,可读性好。伪代码要求程序设计人员集中于解决问题而不是计算机语言。2.1.1伪代码概念(续)伪代码(Pseudocode)是一种算法描述语言。使用伪代码的目的是为了使被描述的算法可以容易地以任何一种编程语言(Pascal,C,Java,etc)实现。因此,伪代码必须结构清晰、代码简单、可读性好,并且类似自然语言。介于自然语言与编程语言之间。2.1.1伪代码概念(续)例如,类Pascal语言的伪代码的语法规则是:在伪代码中,每一条指令占一行(elseif,例外)。指令后不跟任何符号(Pascal和C中语句要以分号结尾)。书写上的“缩进”表示程序中的分支程序结构。这种缩进风格也适用于if-then-else语句。用缩进取代传统Pascal中的begin和end语句来表示程序的块结构可以大大提高代码的清晰性;同一模块的语句有相同的缩进量,次一级模块的语句相对与其父级模块的语句缩进。2.1.1伪代码概念(续)伪代码只是像流程图一样用在程序设计的初期,帮助写出程序流程。简单的程序一般都不用写流程、写思路,但是复杂的代码,最好还是把流程写下来,总体上去考虑整个功能如何实现。写完以后不仅可以用来作为以后测试,维护的基础,还可用来与他人交流。但是,如果把全部的东西写下来必定可能会浪费很多时间,那么这个时候可以采用伪代码方式。比如:IF九点以前THENdo私人事务;ELSF9点到18点THEN工作;ELSE下班;ENDIF这样不但可以达到文档的效果,同时可以节约时间.更重要的是,使结构比较清晰,表达方式更加直观.2.1.2一种伪代码规则变量声明符号‘后的内容表示注释数据结构声明赋值语句输入输出简单条件复合条件顺序结构简单选择选择多重选择计数循环While循环Unitl循环过程定义过程调用程序练习小结2.1.2一种伪代码规则(续)变量声明用:Dim变量As类型例如:DimaAsINTEGER意思是:声明a为整形变量Dima,b,c,matchAsINTEGER意思是:声明a,b,c,match都为整形变量符号‘后的内容表示注释;例如:Dima,b,cAsINTEGER‘定义三角形‘的三条边2.1.2一种伪代码规则(续)数据结构声明:Type类型名称字段描述列表End类型名称例如:TypeSTUDENTDimnameAsSTRINGDimageAsINTEGERDimNOAsSTRINGDimteleAsSTRINGEndSTUDENT2.1.2一种伪代码规则(续)赋值语句:变量=表达式例如:tomorrowDay=day+1tomorrowMonth=month+1输入:Input(变量列表)例如:Input(a)Input(a,b,c)2.1.2一种伪代码规则(续)输出Output(变量列表)例如:Output(“SideAis”,a)Output(“SideBis”,b)Output(“SideCis”,c)Output(“Error!pleaseagain!”)2.1.2一种伪代码规则(续)简单条件:表达式关系操作符表达式例如:Stud.age=0Stud.age=100a+bc2.1.2一种伪代码规则(续)复合条件:简单条件逻辑连接符简单条件例如:(ab+c)AND(ba+c)AND(ca+b)2.1.2一种伪代码规则(续)顺序结构语句按照串行顺序排列。例如:Output(“Enter3integerswhicharesidesofatriangle)Input(a,b,c)Output(“SideAis”,a)Output(“SideBis”,b)Output(“SideCis”,c)2.1.2一种伪代码规则(续)简单选择If条件Thenthen子句EndIf例如:ifa=bThenmatch=match+1EndIf2.1.2一种伪代码规则(续)选择If条件Thenthen子句Elseelse子句EndIf例如:if(ab+c)AND(ba+c)AND(ca+b)ThenIsTriangle=TrueElseIsTriangle=FalseEndIf2.1.2一种伪代码规则(续)多重选择Case变量ofCase1:谓词case子句……Casen:谓词case子句EndCase例如:CasescoreofCase1:score=90Output(“Good!”)Case2:60=score=89Output(“Pass!”)Case3:0=score=59Output(“NotPass!”)EndCase2.1.2一种伪代码规则(续)计数循环For计数器=开始To结束循环体EndFor例如:Fori=1to100sum=sum+iEndFor2.1.2一种伪代码规则(续)While循环DoWhile条件循环体EndWhile例如:DoWhilestature=165Output(“Stop!”)EndWhile2.1.2一种伪代码规则(续)Until循环Do循环体Until条件例如:sum=0i=1Dosum=sum+ii=i+1Untili=1002.1.2一种伪代码规则(续)过程定义(函数和面向对象方法的定义类似)过程名称(Input:变量列表;Output:变量列表)主体End过程名称2.1.2一种伪代码规则(续)过程调用(函数和面向对象方法的定义类似)Call过程名称(变量列表;变量列表)程序:Program程序名称单元列表End程序名称2.1.2一种伪代码规则(续)伪代码课堂练习问题:计算并报告一个班学生的平均分数。讨论:平均分数等于所有学生分数的和除以学生数。我们需要一个循环然后加班中每位学生的分数。在循环内仍需要班内学生的总数。2.1.2一种伪代码规则(续)开始将计数器与总和初始化为零计数器与总和初值为零还有数据吗?获得分数计数器加1将分数添加到总和将总和除以计算器值赋给平均分显示平均分读下一个分数计数器加1分数累加到总和求出平均值显示结果结束YESNOProgramaveragegradeDimgrade,sum,averageAsRealDimcounterAsintegersum=0.0counter=0Dowhiletherenomoredatainput(grade)sum=sum+gradecounter=counter+1EndWhileaverage=sum/counterOutput(average)Endaveragegrade2.1.2一种伪代码规则(续)小结这里介绍的伪代码提供了表示程序源代码的“独立于语言”的方式。伪代码有两层结构:单元和程序组建。单元既可以解释为传统组件(过程和函数),也可以解释为面向对象组件(类和对象)。使用伪代码可以使程序设计人员集中于解决问题而不是计算机语言。2.2三角形问题•2.2.1三角形问题陈述•2.2.2三角形问题实现2.2三角形问题引言:三角形问题是软件测试中一个经久不衰的例子,它包含了清晰而且复杂的逻辑。比如说三角形的性质:任何两边之和必须要严格大于第三条边。我们在讲述这个问题的时候还给出了三角形三条边的上限值,这主要是为了以后在讲黑盒测试时要用到这个上限值。2.2三角形问题三角形问题是在软件测试文献中使用最广的一个例子,这个例子经久不衰的原因之一是,它包含了清晰而又复杂的逻辑。它还是削弱客户、开发人员和测试人员沟通的不完整定义的典型例子。三角形问题之所以复杂,是因为输入与正确输出之间的关系复杂。2.2.1三角形问题陈述简单版本:三角形问题接受三个整数a、b和c作为输入,用作三角形的边。程序的输出是由这三条边确定的三角形类型:等边三角形、等腰三角形、不等边三角形或非三角形。有时这个问题被扩展为将直角三角形作为第五类,在有些练习中会使用这种扩展。改进版本:三角形问题接受三个整数a、b和c作为输入,用作三角形的边。整数a、b和c必须满足以下条件:c1:1=a=200c4:ab+cc2:1=b=200c5:ba+cc3:1=c=200c6:ca+b2.2.1三角形问题陈述(续)程序的输出是由这三条边确定的三角形类型:等边三角形、等腰三角形、不等边三角形或非三角形。如果输入值没有满足这些条件中的任何一个,则程序会通过输出消息来进行通知,例如,“b的取值不在允许范围内”,若c1、c2、c3满足,则给出以下四种相互排斥输出的一个:1.如果三条边相等,则程序的输出是等边三角形。2.如果两条边相等,则程序的输出是等腰三角形。3.如果没有两条边相等,则程序的输出是不等边三角形。4.如果c4、c5和c6中有一个条件不满足,则程序的输出是非三角形。2.2.2三角形问题实现以下是三角形问题的数据流图描述。可以把这个程序实现为一个主程序和三个简单的过程。在后续章节里我们还要用到这个例子,现在将它的实现用伪代码表示。2.2.2三角形问题实现(续)三角形程序实现的数据流图2.2.2三角形问题实现(续)三角形问题实现的伪代码Programtriangle2‘versionofsimpleDima,b,cAsIntegerDimIsATriangleAsBoolean‘Step1:GetInputOutput(“Enter3integerswhicharesidesofatriangle”)Input(a,b,c)Output(“SideAis”,a)Output(“SideBis”,b)Output(“SideCis”,c)‘Step2:IsATriangle?If(ab+c)AND(ba+c)AND(ca+b)ThenIsATriangle=TrueElseIsATriangle=FalseEndIf‘step3:DetermineTriangleTypeIfIsATrangleThenif(a=b)AND(b=c)ThenOutput(“Equilateral”)ElseIf(ab)AND(ac)AND(bc)ThenOutput(“Scalence”)ElseOutput(“Isosecles”)EndIfEndIfElseOutput(“NOTaTriangle”)EndIfEndtriangle22.2.2三角形问题实现(续)三角形问题实现的伪代码续……Programtriangle3‘improvedversionDima,b,cAsIntegerDimIsATriangleAsBoolean‘Step1:GetInputDoOutput(“Enter3integerswhicharesidesofatriangle”)Input(a,b,c)c1=(1=a)AND(a=200)c2=(1=b)AND(b=200)c3=(1=c)A
本文标题:伪代码实例介绍
链接地址:https://www.777doc.com/doc-7098366 .html