算法的流程图表示
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
算法的流程图表示
一、算法的概念
要计算机解决某一个问题,必须编写相应的程序。
编写程序需要确定解决问题的方法和思路,并要正确地写出求解步骤,这就叫解决这个问题的算法(algorithm)。
计算机处理某一问题的过程与我们日常处理事情的过程十分相似,都要按一定的步骤和相应的方法来处理。
例如,邮寄一封信的过程可分为写信、写信封、贴邮票、投入信箱等四个步骤,这些步骤可以看作是写信的算法。
下面举三个计算机处理问题的算法的例子。
【例6-1-1】交换两个变量中的数据。
已知变量x和y中分别存放了数据,现在要交换其中的数据。
为了达到交换的目的,需要引进一个中间变量m,其算法如下:
①将x中的数据送给变量m,即x→m;
②将y中的数据送给变量x,即y→x;
③将m中的数据送给变量y,即m→y。
【例6-1-2】输入三个不相同的数,求出其中的最小数。
先设置一个变量min,用于存放最小数。
当输入a、b、c三个不相同的数后,先将a与b进行比较,把小者送给变量min,再把c与min 进行比较,若c<min,则将c的数值送给min,最后min中就是三个数中的最小数,具体算法如下:
①若a<b ,则a→min,否则b→min;
②再将c与min进行比较,若c<min,则c→min。
这样,min 中存放的即是三个数中的最小数。
【例6-1-3】输入两个正整数a和b(a>b),求它们的最大公约数。
求两个正整数a、b(a>b)的最大公约数,可以归结为求一数列:
a,b,r1,r2,……,r n-1,r n,r n+1,0
此数列的首项与第二项是a和b,从第三项开始的各项,分别是前两项相除所得的余数,如果余数为0,它的前项r n+1即是a和b的最大公约数,这种方法叫做欧几里德辗转相除法,其算法如下:
①输入a,b(a>b);
②求a/b的余数r;
③如果r≠0,则将b→a,r→b,再次求a/b的余数r,转至③;
④输出最大公约数b。
对于同一个问题,可以有不同的算法。
例如求1+2+3+…+100的和,可以采用如下方法:先求1+2,再加3,再加4,一直加到100,最后得到结果5050。
也可以采用这样的方法:1+2+3+…+100=(1+100)+(2+99)+(3+98)+…+(50+51)= 50 101 = 5050。
显然,对
于心算来说,后一种方法更简便,而累加更适用于计算机解题。
因此,为了有效的进行解题,不仅要保证算法正确,还要选择好的算法,即方法简单、运算步骤少,能迅速得出正确结果的算法。
二、算法的描述
为了描述一个算法,可以用自然语言、流程图(float chart)或其他形式进行。
自然语言就是人们日常使用的语言,前面三个例子的算法基本上是用自然语言描述的。
用自然语言描述算法,比较习惯和容易接受,但是叙述较繁琐和冗长,容易出现“歧义性”,一般不采用这种方法。
用流程图描述算法,能够将解决问题的步骤清晰、直观地表示出来,所以本章采用流程图描述算法。
流程图是用一组几何图形表示各种类型的操作,在图形上用扼要的文字和符号表示具体的操作,并用带有箭头的流线表示操作的先后次序。
表6-1列出了流程图的基本符号及其含义。
表 6-1
图6-1、图6-2和图6-3分别是前面三个例子的流程图。
需要注意的是,流程图仅仅描述了算法,但计算机是无法识别和执行用流程图表示的算法的,还必须使用某种计算机语言(如VB)编写出程序,然后让计算机运行此程序,得到所需的结果。
Y N
图6-1 图6-2 图6-3。