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