2章+伪代码实例介绍
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.1.1 伪代码概念(续)
伪代码只是像流程图一样用在程序设计的初期,帮助写出程序流程。 简单的程序一般都不用写流程、写思路,但是复杂的代码,最好还是 把流程写下来,总体上去考虑整个功能如何实现。写完以后不仅可以 用来作为以后测试,维护的基础,还可用来与他人交流。但是,如果把 全部的东西写下来必定可能会浪费很多时间,那么这个时候可以采用 伪代码方式。比如:
IF 九点以前 THEN
do 私人事务; ELSF 9点到18点 THEN
工作;
ELSE 下班; END IF 这样不但可以达到文档的效果,同时可以节约时间. 更重要的是,使结构 比较清晰,表达方式更加直观.
2.1.2 一种伪代码规则
变量声明
符号‘后的内容表示注释 数据结构声明 赋值语句 输入
第2章 伪代码实例介绍
主讲:黄明琼
第2章 伪代码实例介绍
• 2.1 伪代码介绍
• 2.2 三角形问题
• 2.3 NextDate函数问题
• 2.4 佣金问题
• 2.5 简单ATM系统
• 2.6 货币转换器
本章教学目标
正确理解伪代码的概念
正确理解伪代码的规则
正确理解伪代码实例中的逻辑
能够看懂实例中的伪代码所表达的含义
还有数 据吗? YES 获得分数
NO
读下一个分数
计数器加1
计数器加1
将分数添加 到总和
分数累加到总和
将总和除以 计算器值赋 给平均分
求出平均值
显示平均 分
显示结果
结束
Program average grade Dim grade,sum ,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
2.1.2 一种伪代码规则(续)
过程定义(函数和面向对象方法的定义类似)
<过程名称>(Input:<变量列表>;
Output:<变量列表>)
<主体>
End<过程名称>
2.1.2 一种伪代码规则(续)
过程调用(函数和面向对象方法的定义类似)
Call <过程名称>(<变量列表>;<变量列表>)
程序:
2.1.2 一种伪代码规则(续)
赋值语句: <变量>=<表达式> 例如: tomorrowDay=day+1 tomorrowMonth=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)
简单版本:三角形问题接受三个整数a、b和c作为 输入,用作三角形的边。程序的输出是由这三条 边确定的三角形类型:等边三角形、等腰三角形、 不等边三角形或非三角形。有时这个问题被扩展 为将直角三角形作为第五类,在有些练习中会使 用这种扩展。 改进版本:三角形问题接受三个整数a、b和c作为 输入,用作三角形的边。整数a、b和c必须满足 以下条件: c1:1<=a<=200 c4: a<b+c c2: 1<=b<=200 c5: b<a+c c3: 1<=c<=200 c6: c<a+b
Output (“Error!please again!”)
2.1.2 一种伪代码规则(续)
简单条件:
<表达式><关系操作符><表达式>
例如:
Stud.age>=0
Stud.age<=100
a+b>c
2.1.2 一种伪代码规则(续)
复合条件:
<简单条件><逻辑连接符><简单条件>
例如:
(a<b+c) AND(b<a+c)AND(c<a+b)
Output(“Pass!”) Case 3:0<=score<=59 Output(“Not Pass!”) EndCase
2.1.2 一种伪代码规则(续)
计数循环 For<计数器>=<开始>To<结束> <循环体> EndFor 例如: For i=1 to 100 sum=sum+i EndFor
2.1.2 一种伪代码规则(续)
数据结构声明:
Type<类型名称>
<字段描述列表> End<类型名称>
例如:
Type STUDENT Dim name As STRING Dim age As INTEGER Dim NO As STRING Dim tele As STRING End STUDENT
2.1.2 一种伪代码规则(续)
多重选择
例如:
Case score of Case 1:score>=90 Output(“Good!”)
Case <变量> of Case 1:<谓词> <case 子句>
……
Case n:<谓词> <case 子句> EndCase
Case 2:60<=score<=89
选择
多重选择 计数循环 While循环 Unitl循环
输出
简单条件 复合条件 顺序结构 简单选择
过程定义
过程调用 程序 练习 小结
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 一种伪代码规则(续)
简单选择 If<条件> Then <then 子句> EndIf 例如:if a=b Then match=match+1
EndIf
2.1.2 一种伪代码规则(续)
选择 If<条件> Then <then 子句> Else <else子句> EndIf 例如:if (a<b+c) AND(b<a+c)AND(c<a+b) Then IsTriangle=True Else IsTriangle=False EndIf
2.1.2 一种伪代码规则(续)
小 结 这里介绍的伪代码提供了表示程序源代码 的“独立于语言”的方式。伪代码有两层 结构:单元和程序组建。单元既可以解释 为传统组件(过程和函数),也可以解释 为面向对象组件(类和对象)。使用伪代 码可以使程序设计人员集中于解决问题而
不是计算机语言。
2.2 三角形问题
2.2.1 三角形问题陈述(续)
程序的输出是由这三条边确定的三角形类型: 等边三角形、等腰三角形、不等边三角形或非 三角形。如果输入值没有满足这些条件中的任 何一个,则程序会通过输出消息来进行通知, 例如,“b的取值不在允许范围内”,若c1、c2、 c3满足,则给出以下四种相互排斥输出的一个: 如果三条边相等,则程序的输出是等边三角形。 如果两条边相等,则程序的输出是等腰三角形。 如果没有两条边相等,则程序的输出是不等边 三角形。 如果c4、c5和c6中有一个条件不满足,则程序 的输出是非三角形。
2.1.2 一种伪代码规则(续)
While循环 Do While<条件> <循环体> EndWhile 例如: Do While stature=165 OutputБайду номын сангаас“Stop!”) EndWhile
2.1.2 一种伪代码规则(续)
Until循环 Do <循环体> Until <条件> 例如: sum=0 i=1 Do sum=sum+i i=i+1 Until i=100
指令后不跟任何符号(Pascal和C中语句要以分
号结尾)。书写上的“缩进”表示程序中的分支 程序结构。这种缩进风格也适用于if-then-else语 句。用缩进取代传统Pascal中的begin和end语句 来表示程序的块结构可以大大提高代码的清晰性;
同一模块的语句有相同的缩进量,次一级模块的
语句相对与其父级模块的语句缩进。
2.1 伪代码介绍
• 2.1.1 伪代码概念
• 2.1.2 一种伪代码规则
2.1 伪代码介绍
伪代码
引言:
在单元测试中,我们会用到三个例子,分别是:
三角形问题;逻辑比较复杂的函数,NextDate
();有代表性的MIS测试,佣金问题。这三个 例子合在一起,可以说明测试人员在单元级别上 会遇到的大多数问题,而在讨论这几个问题时, 我们会用到伪代码这个工具,因此今天我们先介
• 2.2.1 三角形问题陈述
• 2.2.2 三角形问题实现
2.2 三角形问题
引言: 三角形问题是软件测试中一个经久不衰的 例子,它包含了清晰而且复杂的逻辑。比 如说三角形的性质:任何两边之和必须要 严格大于第三条边。 我们在讲述这个问题 的时候还给出了三角形三条边的上限值, 这主要是为了以后在讲黑盒测试时要用到
绍伪代码的概念和一种伪代码规则。
2.1.1 伪代码概念
伪代码实际上是计算机代码的简略形式,
它比流程图更像计算机代码。 伪代码必须结构清晰,代码简单,可读性 好。 伪代码要求程序设计人员集中于解决问题 而不是计算机语言。
2.1.1 伪代码概念(续)
伪代码(Pseudocode)是一种算法描述语
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.2 三角形问题
三角形问题是在软件测试文献中使用最广
的一个例子,这个例子经久不衰的原因之 一是,它包含了清晰而又复杂的逻辑。它 还是削弱客户、开发人员和测试人员沟通 的不完整定义的典型例子。 三角形问题之所以复杂,是因为输入与正 确输出之间的关系复杂。
2.2.1 三角形问题陈述
1. 2. 3.
4.
2.2.2 三角形问题实现
以下是三角形问题的数据流图描述。可以
把这个程序实现为一个主程序和三个简单 的过程。在后续章节里我们还要用到这个 例子,现在将它的实现用伪代码表示。
2.2.2 三角形问题实现(续)
三角形程序实现的数据流图
2.2.2 三角形问题实现(续)
三角形问题实现的伪代码
言。使用伪代码的目的是为了使被描述的 算法可以容易地以任何一种编程语言 (Pascal,C,Java,etc)实现。因此, 伪代码必须结构清晰、代码简单、可读性 好,并且类似自然语言。 介于自然语言与 编程语言之间。
2.1.1 伪代码概念(续)
例如,类Pascal语言的伪代码的语法规则是: 在 伪代码中,每一条指令占一行(else if,例外)。
Program<程序名称>
<单元列表>
End <程序名称>
2.1.2 一种伪代码规则(续)
伪代码课堂练习
问题:计算并报告一个班学生的平均分数。
讨论:平均分数等于所有学生分数的和除以
学生数。我们需要一个循环然后加班中每
位学生的分数。在循环内仍需要班内学生
的总数。
2.1.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 (a<b+c) AND(b<a+c)AND(c<a+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(a<>b)AND(a<>c)AND(b<>c) Then Output(“Scalence”) Else Output(“Isosecles”) EndIf EndIf Else Output(“NOT a Triangle”) EndIf End triangle2