gate_s

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

算法的流程图表示
一、算法的概念
要计算机解决某一个问题,必须编写相应的程序。编写程序需要确定解决问题的方法和思路,并要正确地写出求解步骤,这就叫解决这个问题的算法(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,……,rn-1,rn,rn+1,0
此数列的首项与第二项是a和b,从第三项开始的各项,分别是前两项相除所得的余数,如果余数为0,它的前项rn+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列出了流程图的基本符号及其含义。

posted on 2014-02-14 09:59  gate_s  阅读(2506)  评论(0编辑  收藏  举报