版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、a,1,第2章 伪代码实例介绍,主讲:黄明琼,a,2,第2章 伪代码实例介绍,2.1 伪代码介绍 2.2 三角形问题 2.3 NextDate函数问题 2.4 佣金问题 2.5 简单ATM系统 2.6 货币转换器,a,3,本章教学目标,正确理解伪代码的概念 正确理解伪代码的规则 正确理解伪代码实例中的逻辑 能够看懂实例中的伪代码所表达的含义,a,4,2.1 伪代码介绍,2.1.1 伪代码概念 2.1.2 一种伪代码规则,a,5,2.1 伪代码介绍,伪代码 引言: 在单元测试中,我们会用到三个例子,分别是:三角形问题;逻辑比较复杂的函数,NextDate();有代表性的MIS测试,佣金问题。这三
2、个例子合在一起,可以说明测试人员在单元级别上会遇到的大多数问题,而在讨论这几个问题时,我们会用到伪代码这个工具,因此今天我们先介绍伪代码的概念和一种伪代码规则。,a,6,2.1.1 伪代码概念,伪代码实际上是计算机代码的简略形式,它比流程图更像计算机代码。 伪代码必须结构清晰,代码简单,可读性好。 伪代码要求程序设计人员集中于解决问题而不是计算机语言。,a,7,2.1.1 伪代码概念(续),伪代码(Pseudocode)是一种算法描述语言。使用伪代码的目的是为了使被描述的算法可以容易地以任何一种编程语言(Pascal,C,Java,etc)实现。因此,伪代码必须结构清晰、代码简单、可读性好,并
3、且类似自然语言。 介于自然语言与编程语言之间。,a,8,2.1.1 伪代码概念(续),例如,类Pascal语言的伪代码的语法规则是: 在伪代码中,每一条指令占一行(else if,例外)。指令后不跟任何符号(Pascal和C中语句要以分号结尾)。书写上的“缩进”表示程序中的分支程序结构。这种缩进风格也适用于if-then-else语句。用缩进取代传统Pascal中的begin和end语句来表示程序的块结构可以大大提高代码的清晰性;同一模块的语句有相同的缩进量,次一级模块的语句相对与其父级模块的语句缩进。,a,9,2.1.1 伪代码概念(续),伪代码只是像流程图一样用在程序设计的初期,帮助写出程
4、序流程。简单的程序一般都不用写流程、写思路,但是复杂的代码,最好还是把流程写下来,总体上去考虑整个功能如何实现。写完以后不仅可以用来作为以后测试,维护的基础,还可用来与他人交流。但是,如果把全部的东西写下来必定可能会浪费很多时间,那么这个时候可以采用伪代码方式。比如: IF 九点以前 THEN do 私人事务; ELSF 9点到18点 THEN 工作; ELSE 下班; END IF 这样不但可以达到文档的效果,同时可以节约时间. 更重要的是,使结构比较清晰,表达方式更加直观.,a,10,2.1.2 一种伪代码规则,变量声明 符号后的内容表示注释 数据结构声明 赋值语句 输入 输出 简单条件
5、复合条件 顺序结构 简单选择,选择 多重选择 计数循环 While循环 Unitl循环 过程定义 过程调用 程序 练习 小结,a,11,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 定义三角形 的三条边,a,12,2.1.2 一种伪代码规则(续),数据结构声明: Type End 例如: Type STUDENT Dim name As S
6、TRING Dim age As INTEGER Dim NO As STRING Dim tele As STRING End STUDENT,a,13,2.1.2 一种伪代码规则(续),赋值语句: = 例如: tomorrowDay=day+1 tomorrowMonth=month+1 输入: Input () 例如: Input (a) Input(a,b,c),a,14,2.1.2 一种伪代码规则(续),输出 Output () 例如: Output (“Side A is”,a) Output (“Side B is”,b) Output (“Side C is”,c) Outpu
7、t (“Error!please again!”),a,15,2.1.2 一种伪代码规则(续),简单条件: 例如: Stud.age=0 Stud.agec,a,16,2.1.2 一种伪代码规则(续),复合条件: 例如: (ab+c) AND(ba+c)AND(ca+b),a,17,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) Outp
8、ut (“Side C is”,c),a,18,2.1.2 一种伪代码规则(续),简单选择 If Then EndIf 例如:if a=b Then match=match+1 EndIf,a,19,2.1.2 一种伪代码规则(续),选择 If Then Else EndIf 例如:if (ab+c) AND(ba+c)AND(c=90 Output(“Good!”) Case 2:60=score=89 Output(“Pass!”) Case 3:0=score=59 Output(“Not Pass!”) EndCase,a,21,2.1.2 一种伪代码规则(续),计数循环 For=To
9、 EndFor 例如: For i=1 to 100 sum=sum+i EndFor,a,22,2.1.2 一种伪代码规则(续),While循环 Do While EndWhile 例如: Do While stature=165 Output(“Stop!”) EndWhile,a,23,2.1.2 一种伪代码规则(续),Until循环 Do Until 例如: sum=0 i=1 Do sum=sum+i i=i+1 Until i=100,a,24,2.1.2 一种伪代码规则(续),过程定义(函数和面向对象方法的定义类似) (Input:; Output:) End,a,25,2.1.
10、2 一种伪代码规则(续),过程调用(函数和面向对象方法的定义类似) Call (;) 程序: Program End ,a,26,2.1.2 一种伪代码规则(续),伪代码课堂练习 问题:计算并报告一个班学生的平均分数。 讨论:平均分数等于所有学生分数的和除以学生数。我们需要一个循环然后加班中每位学生的分数。在循环内仍需要班内学生的总数。,a,27,2.1.2 一种伪代码规则(续),Program average grade Dim grade,sum ,average As Real Dim counter As integer sum=0.0 counter=0 Do while there
11、 no more data input(grade) sum=sum+grade counter=counter+1 EndWhile average=sum/counter Output(average) End average grade,a,28,2.1.2 一种伪代码规则(续),小 结 这里介绍的伪代码提供了表示程序源代码的“独立于语言”的方式。伪代码有两层结构:单元和程序组建。单元既可以解释为传统组件(过程和函数),也可以解释为面向对象组件(类和对象)。使用伪代码可以使程序设计人员集中于解决问题而不是计算机语言。,a,29,2.2 三角形问题,2.2.1 三角形问题陈述 2.2.2
12、三角形问题实现,a,30,2.2 三角形问题,引言: 三角形问题是软件测试中一个经久不衰的例子,它包含了清晰而且复杂的逻辑。比如说三角形的性质:任何两边之和必须要严格大于第三条边。 我们在讲述这个问题的时候还给出了三角形三条边的上限值,这主要是为了以后在讲黑盒测试时要用到这个上限值。,a,31,2.2 三角形问题,三角形问题是在软件测试文献中使用最广的一个例子,这个例子经久不衰的原因之一是,它包含了清晰而又复杂的逻辑。它还是削弱客户、开发人员和测试人员沟通的不完整定义的典型例子。 三角形问题之所以复杂,是因为输入与正确输出之间的关系复杂。,a,32,2.2.1 三角形问题陈述,简单版本:三角形
13、问题接受三个整数a、b和c作为输入,用作三角形的边。程序的输出是由这三条边确定的三角形类型:等边三角形、等腰三角形、不等边三角形或非三角形。有时这个问题被扩展为将直角三角形作为第五类,在有些练习中会使用这种扩展。 改进版本:三角形问题接受三个整数a、b和c作为输入,用作三角形的边。整数a、b和c必须满足以下条件: c1:1=a=200 c4: ab+c c2: 1=b=200 c5: ba+c c3: 1=c=200 c6: ca+b,a,33,2.2.1 三角形问题陈述(续),程序的输出是由这三条边确定的三角形类型:等边三角形、等腰三角形、不等边三角形或非三角形。如果输入值没有满足这些条件中
14、的任何一个,则程序会通过输出消息来进行通知,例如,“b的取值不在允许范围内”,若c1、c2、c3满足,则给出以下四种相互排斥输出的一个: 如果三条边相等,则程序的输出是等边三角形。 如果两条边相等,则程序的输出是等腰三角形。 如果没有两条边相等,则程序的输出是不等边三角形。 如果c4、c5和c6中有一个条件不满足,则程序的输出是非三角形。,a,34,2.2.2 三角形问题实现,以下是三角形问题的数据流图描述。可以把这个程序实现为一个主程序和三个简单的过程。在后续章节里我们还要用到这个例子,现在将它的实现用伪代码表示。,a,35,2.2.2 三角形问题实现(续),三角形程序实现的数据流图,a,3
15、6,2.2.2 三角形问题实现(续),三角形问题实现的伪代码,Program triangle2 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+
16、c) AND(ba+c)AND(ca+b) Then IsATriangle =True 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 trian
17、gle2,a,37,2.2.2 三角形问题实现(续),三角形问题实现的伪代码续,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
18、 of permitted values”) EndIf,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 E
19、nd triangle3,a,38,2.3 NextDate函数问题,2.3.1 NextDate 问题陈述 2.3.2 NextDate 的伪代码实现 2.3.3 NextDate 小结,a,39,2.3 NextDate函数问题,引言:NextDate问题说明了输入变量之间的逻辑关系复杂性。 输入变量之间的逻辑比较复杂 有两种复杂性来源:输入域和闰年规则 80%活动出现在20%的空间,a,40,2.3.1 NextDate 问题陈述,NextDate是一个有三个变量(月份、日期和年)的函数。函数返回输入日期后面的那个日期。变量月份、日期和年都是整数值,并满足以下条件: c1:1=月份=12
20、 c2:1=日期=31 c3:1812=年=2012 我们的处理要包括对月份、日期和年的无效输入值的响应处理,还要对无效逻辑处理,例如任意年的4月31日。,a,41,2.3.1 NextDate 问题陈述(续),在NextDate函数中有两种复杂性来源:输入域和闰年规则。关于公历闰年是这样规定的:地球绕太阳公转一周叫做一回归年,一回归年长365日5时48分46秒。因此,公历规定有平年和闰年,平年一年有365日,比回归年短0.2422日,四年共短0.9688日,故每四年增加一日,这一年有366日,就是闰年。但四年增加一日比四个回归年又多0.0312日,400年后将多3.12日,故在400年中少设
21、3个闰年,也就是在400年中只设97个闰年,这样公历年的平均长度与回归年就相近似了。由此规定:年份是整百数的必须是400的倍数才是闰年,例如1900年、2100年就不是闰年。,a,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 else tomorrowDay=1 tomorrowMonth=m
22、onth+1 EndIf,Program NextDate1 Simple version Dim tomorrowDay,tomorrowMonth,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 (excpet 12),a,43,2.3.2 NextDate 的伪代码实现
23、(续),Case 3:month Is 12: If day20000) then commission=0.04* commission commission= commission+0.01*(sales-20000) else commission=0.04*sales EndIf EndIf Output(“Commission is ”,commission,”元”) EndCommission,a,52,2.5 简单ATM系统,2.5.1 SATM的问题描述 2.5.2 SATM问题分析 2.5.3 SATM问题实现,a,53,2.5 简单ATM系统,引言: 为了方便同学们了解集成
24、测试和系统测试,我们介绍一个简单的自动柜员机系统, 包含各种功能和交互,是一个典型的客户/服务系统的客户端。,a,54,2.5.1 SATM的问题描述,SATM客户可以选择三种交易中的任意一种:存款、取款和查询余额。这些交易可以在信用帐户和储蓄帐户上完成。,a,55,2.5.1 SATM的问题描述(续),a,56,2.5.2 SATM问题分析,有大量的信息隐藏在刚刚给出的系统描述中。例如,100元的整数倍,这种文字描述可能比实际问题中更加精确。 SATM-简单ATM 透支额度?放入多少现金?何种现金?,a,57,2.5.3 SATM问题实现,Programme teller (input,ou
25、tput) 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 your card!”) input(“password”) for n=1 to 3 if isPasswordRight = False then if n=2 t
26、hen output(“The password is wrong,insert again please”) else output(“Youve input wrong password 3 times,take the card down”) End if,a,58,2.5.3 SATM问题实现(续),续 if isPasswordRight= True then output(“choose the type of 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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- (新教材)2026人教版三年级下册数学 2.1.2 用除法估算解决问题 教学课件
- 2025 网络基础之全息通信与虚拟现实的融合发展课件
- 统编版语文六年级下册第一单元 质量提优卷(含答案)
- 2026年及未来5年市场数据中国果味啤酒行业市场深度分析及发展趋势预测报告
- 信息系统的基本概念和分类
- 2026年及未来5年市场数据中国装修装饰行业市场全景分析及投资前景展望报告
- 2025 高中信息技术数据与计算之计算思维在城市空气质量数据监测分析中的应用课件
- 2025 高中信息技术数据与计算之算法的蝙蝠算法课件
- 2026年理化检验技术师模拟试卷(专业知识)及答案
- 有机农产品种植技术全流程指南
- 2026上半年海南事业单位联考海口市美兰区招聘71人备考题库(第一号)含答案详解(考试直接用)
- 2026年江苏省苏州市高职单招语文真题及参考答案
- 2026年宣城职业技术学院单招综合素质考试模拟试题附答案详解
- 地理试卷江苏(南师附中、天一、海安、海门)四校2026届高三年级上学期12月份测试()(12.24-12.26)
- 年产2万吨聚苯硫醚填料生产基地项目可行性研究报告模板立项申批备案
- 静电地板更换施工技术与安全方案
- 特种设备安全生产风险评估报告
- (新教材)2026年部编人教版一年级下册语文 20 小壁虎借尾巴 课件
- DB50-T 1772-2024“职工之家”建设规范
- 2026年合肥经济技术职业学院单招职业技能测试题库附答案详解
- 2025年湖南省法院系统招聘74名聘用制书记员(公共基础知识)测试题附答案解析
评论
0/150
提交评论