伪代码实例介绍ppt课件.ppt

上传人:牧羊曲112 文档编号:1705312 上传时间:2022-12-15 格式:PPT 页数:65 大小:245.50KB
返回 下载 相关 举报
伪代码实例介绍ppt课件.ppt_第1页
第1页 / 共65页
伪代码实例介绍ppt课件.ppt_第2页
第2页 / 共65页
伪代码实例介绍ppt课件.ppt_第3页
第3页 / 共65页
伪代码实例介绍ppt课件.ppt_第4页
第4页 / 共65页
伪代码实例介绍ppt课件.ppt_第5页
第5页 / 共65页
点击查看更多>>
资源描述

《伪代码实例介绍ppt课件.ppt》由会员分享,可在线阅读,更多相关《伪代码实例介绍ppt课件.ppt(65页珍藏版)》请在三一办公上搜索。

1、第2章 伪代码实例介绍,主讲:黄明琼,第2章 伪代码实例介绍,2.1 伪代码介绍2.2 三角形问题2.3 NextDate函数问题2.4 佣金问题2.5 简单ATM系统2.6 货币转换器,本章教学目标,正确理解伪代码的概念正确理解伪代码的规则正确理解伪代码实例中的逻辑能够看懂实例中的伪代码所表达的含义,2.1 伪代码介绍,2.1.1 伪代码概念2.1.2 一种伪代码规则,2.1 伪代码介绍,伪代码引言:在单元测试中,我们会用到三个例子,分别是:三角形问题;逻辑比较复杂的函数,NextDate();有代表性的MIS测试,佣金问题。这三个例子合在一起,可以说明测试人员在单元级别上会遇到的大多数问题

2、,而在讨论这几个问题时,我们会用到伪代码这个工具,因此今天我们先介绍伪代码的概念和一种伪代码规则。,2.1.1 伪代码概念,伪代码实际上是计算机代码的简略形式,它比流程图更像计算机代码。伪代码必须结构清晰,代码简单,可读性好。伪代码要求程序设计人员集中于解决问题而不是计算机语言。,2.1.1 伪代码概念(续),伪代码(Pseudocode)是一种算法描述语言。使用伪代码的目的是为了使被描述的算法可以容易地以任何一种编程语言(Pascal,C,Java,etc)实现。因此,伪代码必须结构清晰、代码简单、可读性好,并且类似自然语言。 介于自然语言与编程语言之间。,2.1.1 伪代码概念(续),例如

3、,类Pascal语言的伪代码的语法规则是: 在伪代码中,每一条指令占一行(else if,例外)。指令后不跟任何符号(Pascal和C中语句要以分号结尾)。书写上的“缩进”表示程序中的分支程序结构。这种缩进风格也适用于if-then-else语句。用缩进取代传统Pascal中的begin和end语句来表示程序的块结构可以大大提高代码的清晰性;同一模块的语句有相同的缩进量,次一级模块的语句相对与其父级模块的语句缩进。,2.1.1 伪代码概念(续),伪代码只是像流程图一样用在程序设计的初期,帮助写出程序流程。简单的程序一般都不用写流程、写思路,但是复杂的代码,最好还是把流程写下来,总体上去考虑整个

4、功能如何实现。写完以后不仅可以用来作为以后测试,维护的基础,还可用来与他人交流。但是,如果把全部的东西写下来必定可能会浪费很多时间,那么这个时候可以采用伪代码方式。比如: IF 九点以前 THEN do 私人事务; ELSF 9点到18点 THEN 工作; ELSE 下班; END IF 这样不但可以达到文档的效果,同时可以节约时间. 更重要的是,使结构比较清晰,表达方式更加直观.,2.1.2 一种伪代码规则,变量声明 符号后的内容表示注释 数据结构声明 赋值语句 输入 输出 简单条件 复合条件 顺序结构简单选择,选择 多重选择 计数循环 While循环 Unitl循环 过程定义 过程调用 程

5、序 练习小结,2.1.2 一种伪代码规则(续),变量声明用:Dim As 例如: Dim a As INTEGER 意思是:声明a为整形变量 Dim a,b,c,match As INTEGER 意思是:声明a,b,c,match都为整形变量符号后的内容表示注释; 例如: Dim a,b,c As INTEGER 定义三角形 的三条边,2.1.2 一种伪代码规则(续),数据结构声明:TypeEnd例如:Type STUDENTDim name As STRINGDim age As INTEGERDim NO As STRINGDim tele As STRINGEnd STUDENT,2.1

6、.2 一种伪代码规则(续),赋值语句:=例如:tomorrowDay=day+1tomorrowMonth=month+1输入:Input ()例如:Input (a)Input(a,b,c),2.1.2 一种伪代码规则(续),输出Output ()例如:Output (“Side A is”,a)Output (“Side B is”,b)Output (“Side C is”,c)Output (“Error!please again!”),2.1.2 一种伪代码规则(续),简单条件:例如:Stud.age=0Stud.agec,2.1.2 一种伪代码规则(续),复合条件:例如:(ab+c

7、) AND(ba+c)AND(ca+b),2.1.2 一种伪代码规则(续),顺序结构语句按照串行顺序排列。例如:Output (“Enter 3 integers which are sides of a triangle)Input(a,b,c)Output (“Side A is”,a)Output (“Side B is”,b)Output (“Side C is”,c),2.1.2 一种伪代码规则(续),简单选择If ThenEndIf例如:if a=b Then match=match+1 EndIf,2.1.2 一种伪代码规则(续),选择If ThenElse EndIf例如:if

8、 (ab+c) AND(ba+c)AND(ca+b) Then IsTriangle=True Else IsTriangle=False EndIf,2.1.2 一种伪代码规则(续),多重选择Case ofCase 1:Case n:EndCase,例如:Case score ofCase 1:score=90 Output(“Good!”)Case 2:60=score=89 Output(“Pass!”)Case 3:0=score=59 Output(“Not Pass!”)EndCase,2.1.2 一种伪代码规则(续),计数循环For=ToEndFor例如:For i=1 to 1

9、00 sum=sum+iEndFor,2.1.2 一种伪代码规则(续),While循环Do WhileEndWhile例如:Do While stature=165 Output(“Stop!”)EndWhile,2.1.2 一种伪代码规则(续),Until循环DoUntil 例如:sum=0i=1Do sum=sum+ii=i+1Until i=100,2.1.2 一种伪代码规则(续),过程定义(函数和面向对象方法的定义类似)(Input:; Output:)End,2.1.2 一种伪代码规则(续),过程调用(函数和面向对象方法的定义类似)Call (;)程序: Program End ,2

10、.1.2 一种伪代码规则(续),伪代码课堂练习问题:计算并报告一个班学生的平均分数。讨论:平均分数等于所有学生分数的和除以学生数。我们需要一个循环然后加班中每位学生的分数。在循环内仍需要班内学生的总数。,2.1.2 一种伪代码规则(续),Program average gradeDim grade,sum ,average As RealDim counter As integersum=0.0counter=0Do while there no more data input(grade) sum=sum+grade counter=counter+1EndWhileaverage=sum/

11、counterOutput(average)End average grade,2.1.2 一种伪代码规则(续),小 结 这里介绍的伪代码提供了表示程序源代码的“独立于语言”的方式。伪代码有两层结构:单元和程序组建。单元既可以解释为传统组件(过程和函数),也可以解释为面向对象组件(类和对象)。使用伪代码可以使程序设计人员集中于解决问题而不是计算机语言。,2.2 三角形问题,2.2.1 三角形问题陈述2.2.2 三角形问题实现,2.2 三角形问题,引言: 三角形问题是软件测试中一个经久不衰的例子,它包含了清晰而且复杂的逻辑。比如说三角形的性质:任何两边之和必须要严格大于第三条边。 我们在讲述这个

12、问题的时候还给出了三角形三条边的上限值,这主要是为了以后在讲黑盒测试时要用到这个上限值。,2.2 三角形问题,三角形问题是在软件测试文献中使用最广的一个例子,这个例子经久不衰的原因之一是,它包含了清晰而又复杂的逻辑。它还是削弱客户、开发人员和测试人员沟通的不完整定义的典型例子。三角形问题之所以复杂,是因为输入与正确输出之间的关系复杂。,2.2.1 三角形问题陈述,简单版本:三角形问题接受三个整数a、b和c作为输入,用作三角形的边。程序的输出是由这三条边确定的三角形类型:等边三角形、等腰三角形、不等边三角形或非三角形。有时这个问题被扩展为将直角三角形作为第五类,在有些练习中会使用这种扩展。改进版

13、本:三角形问题接受三个整数a、b和c作为输入,用作三角形的边。整数a、b和c必须满足以下条件:c1:1=a=200 c4: ab+cc2: 1=b=200 c5: ba+cc3: 1=c=200 c6: ca+b,2.2.1 三角形问题陈述(续),程序的输出是由这三条边确定的三角形类型:等边三角形、等腰三角形、不等边三角形或非三角形。如果输入值没有满足这些条件中的任何一个,则程序会通过输出消息来进行通知,例如,“b的取值不在允许范围内”,若c1、c2、c3满足,则给出以下四种相互排斥输出的一个:如果三条边相等,则程序的输出是等边三角形。如果两条边相等,则程序的输出是等腰三角形。如果没有两条边相

14、等,则程序的输出是不等边三角形。如果c4、c5和c6中有一个条件不满足,则程序的输出是非三角形。,2.2.2 三角形问题实现,以下是三角形问题的数据流图描述。可以把这个程序实现为一个主程序和三个简单的过程。在后续章节里我们还要用到这个例子,现在将它的实现用伪代码表示。,2.2.2 三角形问题实现(续),三角形程序实现的数据流图,2.2.2 三角形问题实现(续),三角形问题实现的伪代码,Program triangle2 version of simpleDim a,b,c As IntegerDim IsATriangle As BooleanStep1: Get InputOutput(“E

15、nter 3 integers which are sides of a triangle”)Input(a,b,c)Output(“Side A is ”,a)Output(“Side B is ”,b)Output(“Side C is ”,c)Step 2:Is A Triangle?If (ab+c) AND(ba+c)AND(ca+b)Then IsATriangle =TrueElse IsATriangle =FalseEndIf,step3:Determine Triangle TypeIf IsATrangle Then if(a=b)AND (b=c) Then Outpu

16、t(“Equilateral”) Else If(ab)AND(ac)AND(bc) Then Output(“Scalence”) Else Output(“Isosecles”) EndIf EndIf Else Output(“NOT a Triangle”)EndIfEnd triangle2,2.2.2 三角形问题实现(续),三角形问题实现的伪代码续,Program triangle3 improved versionDim a,b,c As IntegerDim IsATriangle As BooleanStep1: Get InputDoOutput(“Enter 3 inte

17、gers which are sides of a triangle”)Input(a,b,c)c1=(1=200)c2=(1=200)c3=(1=200)If NOT(c1) Then Output(“Value of a is not in the range of permitted values”)EndIf,If NOT(c2) Then Output(“Value of b is not in the range of permitted values”)EndIfIf NOT(c3) Then Output(“Value of c is not in the range of p

18、ermitted values”)EndIfUntil c1 AND c2 AND c3Output(“Side A is ”,a)Output(“Side B is ”,b)Output(“Side C is ”,c) Step2 Step3End triangle3,2.3 NextDate函数问题,2.3.1 NextDate 问题陈述2.3.2 NextDate 的伪代码实现2.3.3 NextDate 小结,2.3 NextDate函数问题,引言:NextDate问题说明了输入变量之间的逻辑关系复杂性。输入变量之间的逻辑比较复杂有两种复杂性来源:输入域和闰年规则80%活动出现在20%

19、的空间,2.3.1 NextDate 问题陈述,NextDate是一个有三个变量(月份、日期和年)的函数。函数返回输入日期后面的那个日期。变量月份、日期和年都是整数值,并满足以下条件:c1:1=月份=12c2:1=日期=31c3:1812=年=2012 我们的处理要包括对月份、日期和年的无效输入值的响应处理,还要对无效逻辑处理,例如任意年的4月31日。,2.3.1 NextDate 问题陈述(续),在NextDate函数中有两种复杂性来源:输入域和闰年规则。关于公历闰年是这样规定的:地球绕太阳公转一周叫做一回归年,一回归年长365日5时48分46秒。因此,公历规定有平年和闰年,平年一年有365

20、日,比回归年短0.2422日,四年共短0.9688日,故每四年增加一日,这一年有366日,就是闰年。但四年增加一日比四个回归年又多0.0312日,400年后将多3.12日,故在400年中少设3个闰年,也就是在400年中只设97个闰年,这样公历年的平均长度与回归年就相近似了。由此规定:年份是整百数的必须是400的倍数才是闰年,例如1900年、2100年就不是闰年。,2.3.2 NextDate 的伪代码实现,If day31 then tomorrowDay=day+1 else tomorrowDay=1 tomorrowMonth=month+1EndIfCase 2:month Is 4,

21、6,9 or 11 30day monthIf day30 then tomorrowDay=day+1 else tomorrowDay=1 tomorrowMonth=month+1EndIf,Program NextDate1 Simple versionDim tomorrowDay,tomorrowMonth,tomorrowYear As IntegerDim day,month,year As IntegerOutput(“Enter todays date in the form MM DD YYYY”)Input(month,day,year)Case month OfCas

22、e 1:month Is1,3,5,7,8,or 10:31 day months (excpet 12),2.3.2 NextDate 的伪代码实现(续),Case 3:month Is 12:If day31 then tomorrowDay=day+1 else tomorrowDay=1 tomorrowMonth=1 If year=2012 then Output(“2012 is over”) else tomorrowYear=year+1 EndIfEndIfCase 4:month Is 2:If day28 then tomorrowDay=day+1 else if d

23、ay=28 Then if(year is a leap year) then tomorrowDay=29,else tomorrowDay=1 tomorrowMonth=3 EndIf else if day=29 then tomorrowDay=1 tomorrowMonth=3 else Output(“Cannot have Feb.”,day) Endif EndifEndIfEndCaseOutput(“Tomorrow date is”, tomorrowMonth, tomorrowDay,tomorrowYear)End NextDate1,续,2.3.3 NextDa

24、te 小结,小 结 这一次课介绍了我们以后要用到的2个例子,对于软件测试中2两个比较经典的例子,我们要能够分析和提出实现方法,同时这一次我们也做了一些扩展练习。重要的是,通过这样分析问题和实现问题,我们能提高对程序的敏感度,为以后发现软件缺陷提高敏感度。,2.4 佣金问题,2.4.1 佣金问题陈述2.4.2 佣金问题分析2.4.3 佣金问题的伪代码实现,2.4 佣金问题,引言: 这是一个典型的商务计算例子,包含了计算和决策,因此引出有意思的测试问题。,2.4.1 佣金问题陈述,一酒水销售公司指派销售员销售各种酒水。白酒卖168元/瓶,红酒卖120元/瓶,啤酒卖5元/瓶。白酒每月的供应量为500

25、0瓶,红酒为3000瓶,啤酒为30000瓶,各个销售员每月至少要售出白酒50瓶,红酒30瓶,啤酒300瓶。月末,每个销售员上报他所在区域的销售业绩。这样酒水销售公司就知道了当月的销售情况,并根据销售额计算佣金提成如下:2万以下(含):4%;2万(不含)4.5万(含):1%4.5万以上(不含):0.5%这样,佣金程序生成月份销售报告,汇总售出的白酒、红酒和啤酒总数,销售公司的总销售额和各个销售员的佣金。,2.4.2 佣金问题分析,这个问题分为三个不同的部分:输入数据部分,用来处理输入数据的有效性(与前面讲的2个问题一样),在这里,我们略过不再重复这个内容;销售额计算部分;佣金(提成)计算部分。,

26、2.4.3 佣金问题的伪代码实现,Program Commisson(Input,Output)Dim tipple,wine,beer As IntegerDim tipplePrice,winePrice,beerPrice As RealDim totalTipple,totalWine,totalBeer As IntegerDim tippleSales,wineSales,beerSales As RealDim sales,commission As RealtipplePrice=168.00winePrice=120.00beerPrice=5.00totalTipple=0

27、totalWine=0totalBeer=0,2.4.3 佣金问题的伪代码实现(续),续Input(tipple)While NOT(tipple=-1)指出边界Input (wine,beer)totalTipple=totalTipple+tippletotalWine=totalWine+winetotalBeer= totalBeer+beerInput(tipple)EndWhileOutput(“tipple sold:”, totalTipple)Output(“wine sold:”, totalwinee)Output(“beer sold:”, totalbeer)tipp

28、leSales=tipplePrice* totalTipplewineSales=winePrice* totalWnebeerSales=beerPrice* totalBeer,2.4.3 佣金问题的伪代码实现(续),续sales= tippleSales+wineSales+beerSalesOutput(“Total Sales:”,sales)If (sales45000.0) then commission=0.04*20000.0 commission= commission+0.01*25000.0 commission= commission+0.005*(sales-45

29、000.0) else If(sales20000) then commission=0.04* commission commission= commission+0.01*(sales-20000) else commission=0.04*sales EndIfEndIfOutput(“Commission is ”,commission,”元”)EndCommission,2.5 简单ATM系统,2.5.1 SATM的问题描述2.5.2 SATM问题分析2.5.3 SATM问题实现,2.5 简单ATM系统,引言: 为了方便同学们了解集成测试和系统测试,我们介绍一个简单的自动柜员机系统,

30、包含各种功能和交互,是一个典型的客户/服务系统的客户端。,2.5.1 SATM的问题描述,SATM客户可以选择三种交易中的任意一种:存款、取款和查询余额。这些交易可以在信用帐户和储蓄帐户上完成。,2.5.1 SATM的问题描述(续),2.5.2 SATM问题分析,有大量的信息隐藏在刚刚给出的系统描述中。例如,100元的整数倍,这种文字描述可能比实际问题中更加精确。SATM-简单ATM透支额度?放入多少现金?何种现金?,2.5.3 SATM问题实现,Programme teller (input,output) ATMDim balance,inputMoney, outputMoney ,cu

31、rrentMoney As IntegerDim password As StringDim inquire ,fetch, deposit As StringDim isPasswordRight As BooleancurrentMoney=balance+inputMoneyoutput(“please input your card!”)input(“password”)for n=1 to 3if isPasswordRight = False then if n=2 then output(“The password is wrong,insert again please”) e

32、lse output(“Youve input wrong password 3 times,take the card down”)End if,2.5.3 SATM问题实现(续),续 if isPasswordRight= Truethen output(“choose the type of deal”)End ifif inquire thenoutput(“Your balance is ”,balance)if fetch thenoutput (“input your number want to fetch”)input (“outputMoney”) if outputMon

33、ey= balance then output(“please take your money away”) currentMoney=balance+inputMoney else output(“your balance is not enough”) End ifIf deposit then 存款不足 Output(“insert your money”) End ifEnd if,2.6 货币转换器,2.6.1 问题陈述2.6.2 问题实现 2.6.3 小结,2.6 货币转换器,引言:货币转换程序是另外一种事件驱动的程序。强调与图形用户界面(GUI)关联的代码。,2.6.1 问题陈述

34、,这个应用程序将人民币任意转换为美元、加拿大元、欧元和日元。货币选择用单选按钮控制。选择外币之前或之后,用户在输入人民币金额,就可以点击“计算”、“清除”、“退出”按钮,来完成相应得工作。我们将在面向对象的测试中用到这个实例。货币转换器是另一种事件驱动的程序。它强调图形用户界面关联的代码。这个例子很好的说明了UML描述和一个面向对象的实现。,2.6.2 问题实现,我们在Visual Basic中可以用Radio按钮控制货币选择,这些按钮之间相互排斥,即一次只有一个按钮可见。当用户选择完要换算的外币之后,程序通过标签Label做出应答,例如如果选择的是美元按钮,则“等价于”就会变成“等于美元”,

35、而且在等价金额输出位置的旁边会显示一面很小的美国国旗。在外币选择之前或者之后,用户输入人民币金额,就可以按下三个命令按钮做相应得处理了。若按下“计算”按钮,可以将人民币金额转换为所选外币的等价金额;若按下“清除”按钮,那么程序的焦点落在人民币的输入框中,而且程序界面如图2-4一样,这时用户可以重新输入参数;若按下“退出”按钮,则结束该应用程序。请同学们试着写出伪代码,2.6.3 小结,本章我们介绍了几个例子。针对单元测试中,我们介绍的分别是:三角形问题;NextDate;佣金问题。这三个例子合在一起,可以说明测试人员在单元级别上会遇到的大多数问题。对于集成测试和系统测试,我们讲了另外两个例子:一个简单自动柜员机(SATM);货币转换器,一个是事件驱动的应用程序,另一个是典型的GUI应用程序。同学们学习本章后,对计算机问题实现应该有了认识,可以为我们以后的学习打下伏笔。,习题,伪代码的规则有哪些?根据伪代码的规则,写出下表的伪代码。,谢谢!,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号