伪代码的例子

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

伪代码的例子
【篇一:伪代码的例子】
伪代码(pseudocode)是一种算法描述语言。

使用伪代码的目的是为了使被描述的算法可以容易地以任何一种编程语言(pascal,c,java,etc)实现。

因此,伪代码必须结构清晰、代码简单、可读性好,并且类自然语言。

介于自然语言与编程语言之间。

它以编程语言的书写形式指明算法的职能。

相比于程序语言(例如java, c ,c, dephi 等等)它更类自然语言。

它是半角式化、不标准的语言。

我们可以将整个算法运行过程的结构用接近自然语言的形式(这里,你可以使用任何一种你熟悉的文字,中文,英文等等,关键是你把你程序的意思表达出来)描述出来. 使用伪代码, 可以帮助我们更好的表述算法, 不用拘泥于具体的实现.
人们在用不同的编程语言实现同一个算法时意识到,他们的实现(注意:这里是实现,不是功能)很不同。

尤其是对于那些熟练于不同编程语言的程序员要理解一个(用其他编程语言编写的程序的)功能时可能很难,因为程序语言的形式限制了程序员对程序关键部分的理解。

这样伪代码就应运而生了。

当考虑算法功能(而不是其语言实现)时,伪代码常常得到应用。

计算机科学在教学中通常使用虚拟码,以使得所有的程序员都能理解。

综上,简单的说,让人便于理解的代码。

不依赖于语言的,用来表示程序执行过程,而不一定能编译运行的代码。

在数据结构讲算法的时候用的很多。

语法规则例如,类pascal语言的伪代码的语法规则是:在伪代码中,每一条指令占一行(else if,例外)。

指令后不跟任何符号(pascal和c中语句要以分号结尾)。

书写上的“缩进”表示程序中的分支程序结构。

这种缩进风也适用于if-then-else语句。

用缩进取代传统pascal中的begin和end语句来表示程序的块结构可以大大提高代码的清晰性;同一模块的语句有相同的缩进量,次一级模块的语句相对与其父级模块的语句缩进。

算法的伪代码语言在某些方面可能显得不太正规,但是给我们描述算法提供了很多方便,并且可以使我们忽略算法实现中很多麻烦的细节。

通常每个算法开始时都要描述它的输入和输出,而且算法中
的每一行都给编上号码,在解释算法的过程中会经常使用算法步骤
中的行号来指代算法的步骤。

算法的伪代码描述形式上并不是非常严,其主要特性和通常的规定如下:
1)算法中出现的数组、变量可以是以下类型:整数、实数、字符、位串或指针。

通常这些类型可以从算法的上下文来看是清楚的,并不
需要额外加以说明。

2)在算法中的某些指令或子任务可以用文字来叙述,例如,设x是
a中的最大项,这里a是一个数组;或者将x插入l中,这里l是
一个链表。

这样做的目的是为了避免因那些与主要问题无关的细节
使算法本身杂乱无章。

3)算术表达式可以使用通常的算术运算符(,-,*,/,以及表示幂
的^)。

逻辑表达式可以使用关系运算符=,≠, , ,≤和≥,以及逻辑运算
符与(and),或(or),非(not)。

4)赋语句是如下形式的语句:a -b。

这里a是变量、数组项,b是算术表达式、逻辑表达式或指针表达式。

语句的含义是将b的赋给a。

5)若a和b都是变量、数组项,那么记号a - b 表示a和b的内容
进行交换。

6)goto语句具有形式
goto label(goto标号)
它将导致转向具有指定标号的语句。

7)条件语句有以下两种形式:
if c then s或者
if c then s
else s′
这里c是逻辑表达式,s和s′是单一的语句或者是被括在do和end
之间的语句串。

对于上述两种形式,假若c为真,则s被执行一次。

假若c为假,则在第一种形式中,if语句的执行就完成了,而在第二种形式中,执行s′。

在所有的情况下,控制就进行到了下一个语句,除非在s或s′中的goto语句使控制转向到其它地方。

8)有两种循环指令:while和for。

while语句的形式是
while c do
s
end
这里c是逻辑表达式,而s是由一个或更多个语句组成的语句串。

当c为真时,执行s。

在每一次执行s之前,c都被检查一下;假若c为假,控制就进行到紧跟在while语句后面的语句。

注意,当控制第一次达到while语句时,假若c为假,则s一次也不执行。

for语句的形式是
for var init to limit by incr do
s
end
这里var是变量,init、limit和incr都是算术表达式,而s是由一个或多个语句组成的语句串。

初始时,var被赋予init的。

假若incr≥0,则只要var≤l imit,就执行s并且将incr加到var上。

(假若incr 0,则只要var≥limit,就执行s并且将incr加到var上)。

incr的符号不能由s来该改变。

9)exit语句可以在通常的结束条件满足之前,被用来结束while循环或者for循环的执行。

exit导致转向到紧接在包含exit的(最内层)while或者for循环后面的一个语句。

10)return用来指出一个算法执行的终点;如果算法在最后一条指令之后结束,它通常是被省略的;它被用得最多的场合是检测到不合需要的条件时。

return的后面可以紧接被括在引号的信息。

11)算法中的注释被括在/* */之中。

诸如read和output之类的各种输入或者输出也在需要时被用到。

伪代码实例伪代码只是像流程图一样用在程序设计的初期,帮助写出程序流程。

简单的程序一般都不用写流程、写思路,但是复杂的代码,最好还是把流程写下来,总体上去考虑整个功能如何实现。

写完以后不仅可以用来作为以后测试,维护的基础,还可用来与他人交流。

但是,如果把全部的东西写下来必定可能会让费很多时间,那么这个时候可以采用伪代码方式。

比如:
if 九点以前 then
do 私人事务;
else 9点到18点 then
工作;
else
下班;
end if
这样不但可以达到文档的效果,同时可以节约时间. 更重要的是,使结构比较清晰,表达方式更加直观.
【篇二:伪代码的例子】
2.1伪代码介绍 2.2三角形问题 2.3nextdate函数问题 2.4佣金问题2.5简单atm系统 2.6货币转换器正确理解伪代码的概念正确理解
伪代码的规则正确理解伪代码实例中的逻辑能够看懂实例中的伪代
码所表达的含义 2.1 2.1.1伪代码概念 2.1.2一种伪代码规则 2.1 伪
代码引言:在单元测试中,我们会用到三个例子,分别是:三角形
问题;逻辑比较复杂的函数,nextdate ();有代表性的mis测试,佣金问题。

这三个例子合在一起,可以说明测试人员在单元级别上
会遇到的大多数问题,而在讨论这几个问题时,我们会用到伪代码
这个工具,因此今天我们先介绍伪代码的概念和一种伪代码规则。

2.1.1 伪代码实际上是计算机代码的简略形式,它比流程图更像计算
机代码。

伪代码必须结构清晰,代码简单,可读性伪代码要求程序设计人员
集中于解决问题而不是计算机语言。

2.1.1 伪代码(pseudocode)是一种算法描述语言。

使用伪代码的
目的是为了使被描述的算法可以容易地以任何一种编程语言(pascal,c,java,etc)实现。

因此,伪代码必须结构清晰、代
码简单、可读性好,并且类似自然语言。

介于自然语言与编程语言
之间。

2.1.1 例如,类pascal语言的伪代码的语法规则是:在伪代码中,
每一条指令占一行(else if,例外)。

指令后不跟任何符号(pascal和c中语句要以分号结尾)。

书写上
的“缩进”表示程序中的分支程序结构。

这种缩进风格也适用于if-
then-else语句。

用缩进取代传统pascal中的begin和end语句
来表示程序的块结构可以大大提高代码的清晰性;同一模块的语句
有相同的缩进量,次一级模块的语句相对与其父级模块的语句缩进。

2.1.1 伪代码只是像流程图一样用在程序设计的初期,帮助写出程序
流程。

简单的程序一般都不用写流程、写思路,但是复杂的代码,
最好还是把流程写下来,总体上去考虑整个功能如何实现。

写完以
后不仅可以用来作为以后测试,维护的基础,还可用来与他人交流。

但是,如果把全部的东西写下来必定可能会浪费很多时间,那么这
个时候可以采用伪代码方式。

比如:九点以前thendo 私人事务;elsf 9点到18点then 工作; else 下班; end 这样不但可以达到文
档的效果,同时可以节约时间.更重要的是,使结构比较清晰,表达方式
更加直观. 2.1.2 小结2.1.2 变量声明用:dim 例如: dim integer意
思是:声明a为整形变量 dim a,b,c,match integer意思是:声明
a,b,c,match都为整形变量符号‘后的内容表示注释;例如: dim integer??定义三角形‘的三条边 2.1.2 数据结构声明:type end 例如: type student dim name stringdim age integerdim stringdim tele stringend student 2.1.2 赋值语句:= 例如:
tomorrowday=day+1 tomorrowmonth=month+1 输入: input ()
例如: input input(a,b,c)2.1.2 输出output () 例如: output (“side output(“side output(“side output(“error!please again!”) 2.1.2 简单条件:例如: stud.age>=0 stud.age 例如: 顺序结构语句按照串行顺序排列。

例如: output (“enter integerswhich triangle)input(a,b,c) output (“side output(“side output(“side 简单选择if 子句>endif 例如:if match=match+1endif 2.1.2 选择if 子句>else endif 例如:if istriangle=trueelse istriangle=false endif 2.1.2 多重选择case case1: casen: endcase 例如: case score case1:score>=90 output(“good!”) case 2:60=to endfor 例如: 100sum=sum+i endfor 2.1.2 while循环do while endwhile 例如: do while
stature=165 output(“stop!”) endwhile 2.1.2 until循环do until 例如: sum=0 dosum=sum+i i=i+1 until i=100 2.1.2 过程定义(函数和
面向对象方法的定义类似)(input:; output:) end 2.1.2 过程调用(函数和面向对象方法的定义类似)call (;) 程序: program end 2.1.2 伪代
码课堂练习问题:计算并报告一个班学生的平均分数。

讨论:平均分数等于所有学生分数的和除以学生数。

我们需要一个
循环然后加班中每位学生的分数。

在循环内仍需要班内学生的总数。

2.1.2 开始将计数器与总和初始化计数器与总和初值为零还有数获
得分数计数器加1 将分数添加到总和将总和除以计算器值赋给平
均分显示平均读下一个分数计数器加1 分数累加到总和求出平均值显示结果结束 yes programaverage grade dim grade,
sum ,average realdim counter integersum=0.0 counter=0 do while moredata input(grade) sum=sum+grade
counter=counter+1 endwhile average=sum/counter
output(average) end average grade 2.1.2 这里介绍的伪代码提供
了表示程序源代码的“独立于语言”的方式。

伪代码有两层结构:单
元和程序组建。

单元既可以解释为传统组件(过程和函数),也可
以解释为面向对象组件(类和对象)。

使用伪代码可以使程序设计
人员集中于解决问题而不是计算机语言。

2.2 2.2.1三角形问题陈述 2.2.2三角形问题实现 2.2 引言:三角形
问题是软件测试中一个经久不衰的例子,它包含了清晰而且复杂的
逻辑。

比如说三角形的性质:任何两边之和必须要严格大于第三条边。

我们在讲述这个问题的时候还给出了三角形三条边的上限值,
这主要是为了以后在讲黑盒测试时要用到这个上限值。

2.2 三角形问题是在软件测试文献中使用最广的一个例子,这个例子经久不衰的原因之一是,它包含了清晰而又复杂的逻辑。

它还是削
弱客户、开发人员和测试人员沟通的不完整定义的典型例子。

三角形问题之所以复杂,是因为输入与正确输出之间的关系复杂。

2.2.1 简单版本:三角形问题接受三个整数a、b和c作为输入,用
作三角形的边。

程序的输出是由这三条边确定的三角形类型:等边
三角形、等腰三角形、不等边三角形或非三角形。

有时这个问题被
扩展为将直角三角形作为第五类,在有些练习中会使用这种扩展。

改进版本:三角形问题接受三个整数a、b和c作为输入,用作三
角形的边。

整数a、b和c必须满足以下条件: c1:1=200)
c2=(1=200) c3=(1=200) permittedvalues”) endif permittedvalues”) endif permittedvalues”) endif until c1
c3output(“side ??step3end triangle3 2.3 nextdate 2.3.1nextdate 问题陈述 2.3.2nextdate 的伪代码实现 2.3.3nextdate 小结 2.3 nextdate 引言:nextdate问题说明了输入变量之间的逻辑关系复
杂性。

2.4 2.4.1佣金问题陈述 2.4.2佣金问题分析 2.4.3佣金问题的伪代码
实现 2.4 引言:这是一个典型的商务计算例子,包含了计算和决策,因此引出有意思的测试问题。

2.4.1 佣金问题陈述一酒水销售公司指派销售员销售各种酒水。

白酒
卖168元/ 瓶,红酒卖120元/瓶,啤酒卖5元/瓶。

白酒每月的供应
量为5000瓶,红酒为3000瓶,啤酒为30000瓶,各个销售员每
月至少要售出白酒50瓶,红酒30瓶,啤酒300瓶。

月末,每个销
售员上报他所在区域的销售业绩。

这样酒水销售公司就知道了当月
的销售情况,并根据销售额计算佣金提成如下: 2万以下(含):4%; 2万(不含)~4.5万(含):1% 4.5万以上(不含):0.5%
这样,佣金程序生成月份销售报告,汇总售出的白酒、红酒和啤酒
总数,销售公司的总销售额和各个销售员的佣金。

2.4.2 佣金问题分析这个问题分为三个不同的部分:输入数据部分,用来处理输入数据的有效性(与前面讲的2个问题一样),在这里,
我们略过不再重复这个内容;销售额计算部分;佣金(提成)计算
部分。

2.4.3 佣金问题的伪代码实现 program commisson(input,output) dim tipple,wine,beer integerdim tippleprice,wineprice,beerprice realdim totaltipple,totalwine,totalbeer integerdim
tipplesales,winesales,beersales realdim sales,commission realtippleprice=168.00 wineprice=120.00 beerprice=5.00 totaltipple=0 totalwine=0 totalbeer=0 2.4.3 佣金问题的伪代码实
现(续) input(tipple)while not(tipple=-1)’指出边界 input
(wine,beer) totaltipple=totaltipple+tipple
totalwine=totalwine+wine totalbeer= totalbeer+beer input(tipple) endw hile output(“tipple sold:”, totaltipple) output(“wine sold:”, totalwinee) output(“beer sold:”, totalbeer)
tipplesales=tippleprice* totaltipple winesales=wineprice* totalwne beersales=beerprice* totalbeer 2.4.3 佣金问题的伪代码
实现(续) sales=tipplesales+winesales+beer sales output(“total sales:”,sales) commission=0.04*20000.0commission= commission+0.01*25000.0 commission=
commission+0.005*(sales-45000.0) else if(sales>20000) commission=0.04*commission commission=
commission+0.01*(sales-20000) else commission=0.04*sales endif endif output(“commission ”,commission,”
元”)endcommission 2.5 atm 2.5.1satm的问题描述 2.5.2satm问
题分析 2.5.3satm问题实现 2.5 atm 引言:为了方便同学们了解集
成测试和系统测试,我们介绍一个简单的自动柜员机系统,包含各
种功能和交互,是一个典型的客户/ 服务系统的客户端。

2.5.1 satm satm客户可以选择三种交易中的任意一种:存款、取
款和查询余额。

这些交易可以在信用帐户和储蓄帐户上完
2.5.1satm 2.5.2satm 有大量的信息隐藏在刚刚给出的系统描述中。

例如,100元的整数倍,这种文字描述可能比实际问题中更加精确。

satm------简单atm 透支额度?放入多少现金?何种现金? 2.5.3 satm programme teller (input,output) ’atm dim
balance,inputmoney, outputmoney ,currentmoney integerdim password stringdim inquire ,fetch, deposit stringdim ispasswordright booleancurrentmoney=balance+inputmoney output(“please input your card!”) input(“password”)
output(“thepassword wrong,insertagain please”) else
output(“you’ve input wrong password carddown”) end
2.5.3satm ispasswordright=tru e deal”)end output(“yourbalance output(“input your number want fetch”)input (“outputmoney”) outputmoney伪代码的规则有哪些?根据伪代码的规则,写出下表的伪代码。

相关文档
最新文档