版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 第第2章章 伪代码实例介绍伪代码实例介绍 主讲:黄明琼主讲:黄明琼 2 第第2章章 伪代码实例介绍伪代码实例介绍 2.1 伪代码介绍伪代码介绍 2.2 三角形问题三角形问题 2.3 NextDate函数问题函数问题 2.4 佣金问题佣金问题 2.5 简单简单ATM系统系统 2.6 货币转换器货币转换器 3 本章教学目标本章教学目标 n正确理解伪代码的概念 n正确理解伪代码的规则 n正确理解伪代码实例中的逻辑 n能够看懂实例中的伪代码所表达的含义 4 2.1 伪代码介绍伪代码介绍 2.1.1 伪代码概念伪代码概念 2.1.2 一种伪代码规则一种伪代码规则 5 2.1 伪代码介绍伪代码介绍 伪
2、代码伪代码 引言:引言: n 在单元测试中,我们会用到三个例子,分别是: 三角形问题;逻辑比较复杂的函数,NextDate ();有代表性的MIS测试,佣金问题。这三个 例子合在一起,可以说明测试人员在单元级别上 会遇到的大多数问题,而在讨论这几个问题时, 我们会用到伪代码这个工具,因此今天我们先介 绍伪代码的概念和一种伪代码规则。 6 2.1.1 伪代码概念伪代码概念 n伪代码实际上是计算机代码的简略形式, 它比流程图更像计算机代码。 n伪代码必须结构清晰,代码简单,可读性 好。 n伪代码要求程序设计人员集中于解决问题 而不是计算机语言。 7 2.1.1 伪代码概念伪代码概念(续)(续) n
3、伪代码(Pseudocode)是一种算法描述语 言。使用伪代码的目的是为了使被描述的 算法可以容易地以任何一种编程语言 (Pascal,C,Java,etc)实现。因此, 伪代码必须结构清晰、代码简单、可读性伪代码必须结构清晰、代码简单、可读性 好,并且类似自然语言。好,并且类似自然语言。 介于自然语言与介于自然语言与 编程语言之间。编程语言之间。 8 2.1.1 伪代码概念伪代码概念(续)(续) n 例如例如,类类Pascal语言的伪代码的语法规则是语言的伪代码的语法规则是: 在 伪代码中,每一条指令占一行(else if,例外)。 指令后不跟任何符号(Pascal和C中语句要以分 号结尾)
4、。书写上的“缩进”表示程序中的分支 程序结构。这种缩进风格也适用于if-then-else语 句。用缩进取代传统Pascal中的begin和end语句 来表示程序的块结构可以大大提高代码的清晰性; 同一模块的语句有相同的缩进量,次一级模块的 语句相对与其父级模块的语句缩进。 9 2.1.1 伪代码概念伪代码概念(续)(续) n 伪代码只是像流程图一样用在程序设计的初期,帮助写出程序流程。 简单的程序一般都不用写流程、写思路,但是复杂的代码,最好还是 把流程写下来,总体上去考虑整个功能如何实现。写完以后不仅可以 用来作为以后测试,维护的基础,还可用来与他人交流。但是,如果把 全部的东西写下来必定
5、可能会浪费很多时间,那么这个时候可以采用 伪代码方式。比如:比如: IF 九点以前 THEN do 私人事务; ELSF 9点到18点 THEN 工作; ELSE 下班; END IF 这样不但可以达到文档的效果,同时可以节约时间. 更重要的是,使结构 比较清晰,表达方式更加直观. 10 2.1.2 一种伪代码规则一种伪代码规则 n 变量声明 n 符号后的内容表示注释 n 数据结构声明 n 赋值语句 n 输入 n 输出 n 简单条件 n 复合条件 n 顺序结构 n 简单选择 n 选择 n 多重选择 n 计数循环 n While循环 n Unitl循环 n 过程定义 n 过程调用 n 程序 n
6、练习 n 小结 11 2.1.2 一种伪代码规则一种伪代码规则(续续) n变量声明用:变量声明用:Dim As 例如例如: Dim a As INTEGER 意思是:声明a为整形变量 Dim a,b,c,match As INTEGER 意思是:声明a,b,c,match都为整形变量 n符号符号后的内容表示注释;后的内容表示注释; 例如:例如: Dim a,b,c As INTEGER 定义三角形 的三条边 12 2.1.2 一种伪代码规则一种伪代码规则(续续) n 数据结构声明:数据结构声明: Type End 例如例如: Type STUDENT Dim name As STRING Di
7、m age As INTEGER Dim NO As STRING Dim tele As STRING End STUDENT 13 2.1.2 一种伪代码规则一种伪代码规则(续续) n赋值语句:赋值语句: = 例如例如: tomorrowDay=day+1 tomorrowMonth=month+1 n输入:输入: Input () 例如例如: Input (a) Input(a,b,c) 14 2.1.2 一种伪代码规则一种伪代码规则(续续) n输出输出 Output () 例如例如: Output (“Side A is”,a) Output (“Side B is”,b) Outpu
8、t (“Side C is”,c) Output (“Error!please again!”) 15 2.1.2 一种伪代码规则一种伪代码规则(续续) n简单条件:简单条件: 例如例如: Stud.age=0 Stud.agec 16 2.1.2 一种伪代码规则一种伪代码规则(续续) n复合条件:复合条件: 例如例如: (ab+c) AND(ba+c)AND(ca+b) 17 2.1.2 一种伪代码规则一种伪代码规则(续续) n顺序结构顺序结构 语句按照串行顺序排列。语句按照串行顺序排列。 例如:例如: Output (“Enter 3 integers which are sides of
9、 a triangle) Input(a,b,c) Output (“Side A is”,a) Output (“Side B is”,b) Output (“Side C is”,c) 18 2.1.2 一种伪代码规则一种伪代码规则(续续) n简单选择简单选择 nIf Then n nEndIf 例如例如:if a=b Then match=match+1 EndIf 19 2.1.2 一种伪代码规则一种伪代码规则(续续) n选择选择 If Then Else EndIf 例如例如:if (ab+c) AND(ba+c)AND(ca+b) Then IsTriangle=True Else
10、 IsTriangle=False EndIf 20 2.1.2 一种伪代码规则一种伪代码规则(续续) n多重选择多重选择 Case of Case 1: Case n: EndCase 例如:例如: Case score of Case 1:score=90 Output(“Good!”) Case 2:60=score=89 Output(“Pass!”) Case 3:0=score=59 Output(“Not Pass!”) EndCase 21 2.1.2 一种伪代码规则一种伪代码规则(续续) n计数循环计数循环 For=To EndFor 例如例如: For i=1 to 100
11、 sum=sum+i EndFor 22 2.1.2 一种伪代码规则一种伪代码规则(续续) nWhile循环循环 Do While EndWhile 例如例如: Do While stature=165 Output(“Stop!”) EndWhile 23 2.1.2 一种伪代码规则一种伪代码规则(续续) nUntil循环循环 Do Until 例如例如: sum=0 i=1 Do sum=sum+i i=i+1 Until i=100 24 2.1.2 一种伪代码规则一种伪代码规则(续续) n过程定义过程定义(函数和面向对象方法的定义类似函数和面向对象方法的定义类似) (Input:; O
12、utput:) End 25 2.1.2 一种伪代码规则一种伪代码规则(续续) n过程调用过程调用(函数和面向对象方法的定义类似函数和面向对象方法的定义类似) Call (;) n程序:程序: Program End 26 2.1.2 一种伪代码规则一种伪代码规则(续续) n伪代码课堂练习伪代码课堂练习 问题:计算并报告一个班学生的平均分数。 讨论:平均分数等于所有学生分数的和除以 学生数。我们需要一个循环然后加班中每 位学生的分数。在循环内仍需要班内学生 的总数。 27 2.1.2 一种伪代码规则一种伪代码规则(续续) Program average grade Dim grade,sum
13、,average As Real Dim counter As integer sum=0.0 counter=0 Do while there no more data input(grade) sum=sum+grade counter=counter+1 EndWhile average=sum/counter Output(average) End average grade 28 2.1.2 一种伪代码规则一种伪代码规则(续续) n小 结 这里介绍的伪代码提供了表示程序源代码 的“独立于语言”的方式。伪代码有两层 结构:单元和程序组建。单元既可以解释 为传统组件(过程和函数),也可以
14、解释 为面向对象组件(类和对象)。使用伪代 码可以使程序设计人员集中于解决问题而 不是计算机语言。 29 2.2 三角形问题三角形问题 2.2.1 三角形问题陈述三角形问题陈述 2.2.2 三角形问题实现三角形问题实现 30 2.2 三角形问题三角形问题 n引言:引言: 三角形问题是软件测试中一个经久不衰的 例子,它包含了清晰而且复杂的逻辑。比 如说三角形的性质:任何两边之和必须要 严格大于第三条边。 我们在讲述这个问题 的时候还给出了三角形三条边的上限值, 这主要是为了以后在讲黑盒测试时要用到 这个上限值。 31 2.2 三角形问题三角形问题 n三角形问题是在软件测试文献中使用最广 的一个例
15、子,这个例子经久不衰的原因之 一是,它包含了清晰而又复杂的逻辑。它 还是削弱客户、开发人员和测试人员沟通 的不完整定义的典型例子。 n三角形问题之所以复杂,是因为输入与正 确输出之间的关系复杂。 32 2.2.1 三角形问题陈述三角形问题陈述 简单版本简单版本:三角形问题接受三个整数a、b和c作为 输入,用作三角形的边。程序的输出是由这三条 边确定的三角形类型:等边三角形、等腰三角形、 不等边三角形或非三角形。有时这个问题被扩展 为将直角三角形作为第五类,在有些练习中会使 用这种扩展。 改进版本改进版本:三角形问题接受三个整数a、b和c作为 输入,用作三角形的边。整数整数a、b和和c必须满足必
16、须满足 以下条件:以下条件: c1:1=a=200 c4: ab+c c2: 1=b=200 c5: ba+c c3: 1=c=200 c6: ca+b 33 2.2.1 三角形问题陈述三角形问题陈述(续续) 程序的输出是由这三条边确定的三角形类型: 等边三角形、等腰三角形、不等边三角形或非 三角形。如果输入值没有满足这些条件中的任 何一个,则程序会通过输出消息来进行通知, 例如,例如,“b的取值不在允许范围内”,若若c1、c2、 c3满足,则给出以下四种相互排斥输出的一个满足,则给出以下四种相互排斥输出的一个: 如果三条边相等,则程序的输出是等边三角形。 如果两条边相等,则程序的输出是等腰三
17、角形。 如果没有两条边相等,则程序的输出是不等边 三角形。 1.如果c4、c5和c6中有一个条件不满足,则程序 的输出是非三角形。 34 2.2.2 三角形问题实现三角形问题实现 n以下是三角形问题的数据流图描述以下是三角形问题的数据流图描述。可以 把这个程序实现为一个主程序和三个简单 的过程。在后续章节里我们还要用到这个 例子,现在将它的实现用伪代码表示。 35 2.2.2 三角形问题实现三角形问题实现(续续) 三角形程序实现的数据流图三角形程序实现的数据流图 36 2.2.2 三角形问题实现三角形问题实现(续续) n三角形问题实现的伪代码三角形问题实现的伪代码 Program triang
18、le2 version of simple Dim a,b,c As Integer Dim IsATriangle As Boolean Step1: Get Input 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) Step 2:Is A Triangle? If (ab+c) AND(ba+c)AND(ca+b) Then IsATriangle =True
19、Else IsATriangle =False EndIf step3:Determine Triangle Type If IsATrangle Then if(a=b)AND (b=c) Then Output(“Equilateral”) Else If(ab)AND(ac)AND(bc) Then Output(“Scalence”) Else Output(“Isosecles”) EndIf EndIf Else Output(“NOT a Triangle”) EndIf End triangle2 37 2.2.2 三角形问题实现三角形问题实现(续续) n三角形问题实现的伪代码
20、续三角形问题实现的伪代码续 Program triangle3 improved version Dim a,b,c As Integer Dim IsATriangle As Boolean Step1: Get Input Do Output(“Enter 3 integers 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”) End
21、If If NOT(c2) Then Output(“Value of b is not in the range of permitted values”) EndIf If NOT(c3) Then Output(“Value of c is not in the range of permitted values”) EndIf Until c1 AND c2 AND c3 Output(“Side A is ”,a) Output(“Side B is ”,b) Output(“Side C is ”,c) Step2 Step3 End triangle3 38 2.3 NextDa
22、te函数问题函数问题 2.3.1 NextDate 问题陈述问题陈述 2.3.2 NextDate 的伪代码实现的伪代码实现 2.3.3 NextDate 小结小结 39 2.3 NextDate函数问题函数问题 n引言:引言:NextDate问题说明了输入变量之间 的逻辑关系复杂性。 n输入变量之间的逻辑比较复杂 n有两种复杂性来源:输入域和闰年规则 n80%活动出现在20%的空间 40 2.3.1 NextDate 问题陈述问题陈述 n NextDate是一个有三个变量(月份、日期和年) 的函数。函数返回输入日期后面的那个日期。变 量月份、日期和年都是整数值,并满足以下条件: c1:1=月
23、份=12 c2:1=日期=31 c3:1812=年=2012 n 我们的处理要包括对月份、日期和年的无效输入 值的响应处理,还要对无效逻辑处理,例如例如任意 年的4月31日。 41 2.3.1 NextDate 问题陈述问题陈述(续)(续) n 在NextDate函数中有两种复杂性来源:输入域和闰年规则。 关于公历闰年是这样规定的:地球绕太阳公转一周叫做一 回归年,一回归年长365日5时48分46秒。因此,公历规 定有平年和闰年,平年一年有365日,比回归年短0.2422 日,四年共短0.9688日,故每四年增加一日,这一年有 366日,就是闰年。但四年增加一日比四个回归年又多 0.0312日
24、,400年后将多3.12日,故在400年中少设3个闰年, 也就是在400年中只设97个闰年,这样公历年的平均长度 与回归年就相近似了。由此规定:年份是整百数的必须是 400的倍数才是闰年,例如例如1900年、2100年就不是闰年。 42 2.3.2 NextDate 的伪代码实现的伪代码实现 If day31 then tomorrowDay=day+1 else tomorrowDay=1 tomorrowMonth=month+1 EndIf Case 2:month Is 4,6,9 or 11 30day month If day30 then tomorrowDay=day+1 el
25、se tomorrowDay=1 tomorrowMonth=month+1 EndIf Program NextDate1 Simple version Dim tomorrowDay,tomorrowMont h,tomorrowYear As Integer Dim day,month,year As Integer Output(“Enter todays date in the form MM DD YYYY”) Input(month,day,year) Case month Of Case 1:month Is1,3,5,7,8,or 10:31 day months (excp
26、et 12) 43 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 EndIf EndIf Case 4:month Is 2: If day45000.0) then commission=0.04*20000.0 commission= commission+0.01*250
27、00.0 commission= commission+0.005*(sales-45000.0) else If(sales20000) then commission=0.04* commission commission= commission+0.01*(sales-20000) else commission=0.04*sales EndIf EndIf Output(“Commission is ”,commission,”元”) EndCommission 52 2.5 简单简单ATM系统系统 2.5.1 SATM的问题描述的问题描述 2.5.2 SATM问题分析问题分析 2.5
28、.3 SATM问题实现问题实现 53 2.5 简单简单ATM系统系统 引言:引言: n 为了方便同学们了解集成测试和系统测试, 我们介绍一个简单的自动柜员机系统, n包含各种功能和交互,是一个典型的客户/ 服务系统的客户端。 54 2.5.1 SATM的问题描述的问题描述 nSATM客户可以选择 三种交易中的任意 一种:存款、取款 和查询余额。这些 交易可以在信用帐 户和储蓄帐户上完 成。 55 2.5.1 SATM的问题描述的问题描述(续续) 56 2.5.2 SATM问题分析问题分析 n有大量的信息隐藏在刚刚给出的系统描述 中。例如例如,100元的整数倍,这种文字描述 可能比实际问题中更加
29、精确。 nSATM-简单ATM n透支额度?放入多少现金?何种现金? 57 2.5.3 SATM问题实现问题实现 Programme teller (input,output) ATM Dim balance,inputMoney, outputMoney ,currentMoney As Integer Dim password As String Dim inquire ,fetch, deposit As String Dim isPasswordRight As Boolean currentMoney=balance+inputMoney output(“please input y
30、our card!”) input(“password”) for n=1 to 3 if isPasswordRight = False then if n=2 then output(“The password is wrong,insert again please”) else output(“Youve input wrong password 3 times,take the card down”) End if 58 2.5.3 SATM问题实现问题实现(续续) 续续 if isPasswordRight= True then output(“choose the type of
31、 deal”) End if if inquire then output(“Your balance is ”,balance) if fetch then output (“input your number want to fetch”) input (“outputMoney”) if outputMoney= balance then output(“please take your money away”) currentMoney=balance+inputMoney else output(“your balance is not enough”) End if If deposit then 存款不足 Output(“insert your money”) End if End if 59 2.6 货币转换器货币
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度生物制药厂房租赁合同及药品研发生产服务协议3篇
- 科技力量团队荣耀
- 2025年度精密模具加工委托合同协议书4篇
- 2025年度柴油发电机租赁与环保检测服务协议3篇
- 二零二五年度出租车租赁运营管理承包合同3篇
- 二零二五年度餐饮行业健康证照办理服务合同样本3篇
- 2025年度产学研合作知识产权共享合同2篇
- 专业钻掘设备出租协议规范文本一
- 个人租车合同协议书
- 2025年度厕所清洁能源应用与改造合同3篇
- 深圳2024-2025学年度四年级第一学期期末数学试题
- 中考语文复习说话要得体
- 《工商业储能柜技术规范》
- 华中师范大学教育技术学硕士研究生培养方案
- 医院医学伦理委员会章程
- xx单位政务云商用密码应用方案V2.0
- 风浪流耦合作用下锚泊式海上试验平台的水动力特性试验
- 高考英语语法专练定语从句含答案
- 有机农业种植技术操作手册
- 【教案】Unit+5+Fun+Clubs+大单元整体教学设计人教版(2024)七年级英语上册
- 2020年的中国海外工程示范营地申报材料及评分标准
评论
0/150
提交评论