算法可以理解为由基本运算及规定的运算顺序所构成的完整的解题步骤,或者看成按照要求设计好的有限的确切的计算序列,并且这样的步骤和序列可以解决一类问题。一般算法有
顺序结构、
选择结构、
循环结构三种基本
逻辑结构。
简介
算法可以理解为由基本运算及规定的运算顺序所构成的完整的解题步骤,或者看成按照要求设计好的有限的确切的计算序列,并且这样的步骤和序列可以解决一类问题。
我们可以用自然语言来描述一个算法详细信息,但这样做的话,往往过程比较复杂,缺乏简洁性,同时自然语言描述的内容可能使不同的读者产生不同的理解,因此,我们很有必要来探究使算法表达得更加简洁,更加直观,更加准确的方法,其中最普遍使用到的是
程序流程图。
一般算法有顺序结构、选择结构、循环结构三种基本逻辑结构。
顺序结构
顺序结构是最简单的算法结构,框与框之间,语句与语句之间,都是按照它们出现的先后顺序依次进行的,即它是由若干个依次执行的处理步骤组成的。可以说顺序结构是任何一个算法都离不开的一种基本逻辑结构。
如图1,其中A和B两个框是依次执行的,只有在执行完A框所指定的操作后,才能接着执行B框所指定的操作。顺序结构的一个简单的例子是交换变量a和b的值。
算法如下:
S1:m=a; S2:a=b;S1:b=m;
程序框图如图2:
例:尺规作图,确定线段一个五等分点。
步骤:1、从线段的左端A点出发做一条射线;
2、在射线上取点C,得到单位线段AC;
3、在射线上做线段CE=AC;EF=AC;FG=AC;GD=AC;
4、连接DB;
5、过C做BD的平行线,交线段AB于M,即为五等分点。
选择结构
在一个算法中,经常会遇到一些条件的判断、算法的流程根据条件是否成立有不同的流向,这种先根据条件作出判断,再决定执行哪一种操作的结构称为选择结构,如图3所示的一个条件分支结构,此结构中包含一个判断框,根据给定的条件P是否成立而选择执行A框或B框,请注意,无论P条件是否成立,只能执行A框或B框之一,不可能既执行A框又执行B框,也不可能A框和B框都不执行。无论走哪一条路径,在执行完A框或B框之后,脱离本选择结构。A框或B框两个框中,可以有一个是空的,即不执行任何操作。
例:输入3个数a,b,c,要求输出最大值
步骤:
1、先比较2个数,取其中大者与第三个数比较,得出较大者为最大数,记为max
2、输入a,b,c
3、比较a,b,若a>b,则执行第三步;否则,执行第四步
4、比较a,c,若a>c,则输出最大数max=a;否则,输出最大数max=c
5、比较b,c,若b>c,则输出最大数max=b;否则,输出最大数max=c。
循环结构
需要重复执行同一操作的结构称为循环结构,即从某处开始,按照一定条件反复执行某一处理步骤,反复执行的处理步骤称为循环体。循环结构中通常都有一个起循环计数作用的变量,这个变量的取值一般都包含在执行或终止循环的条件中。循环结构有while型循环(也称当型循环)和until型循环(也称直到型循环)两种。
例:求解1到100之间所有数字之和
我们可以知道,只有在满足循环条件的情况下,才能执行循环体的操作。那么,在算法中,也会存在这种情况呢:循环条件永远满足导致循环体一直会被执行。
如果出现类似这种循环,我们称之为死循环。因为循环条件满足,则循环体会被无休止的执行下去,直到资源耗尽,那么,假若在循环结构之后还有其它的算法步骤,则没有机会被执行到。为了避免这种情况的出现,我们应该尽量在循环体中构建出能够退出循环的条件,以确保循环结构之后的算法步骤能够被执行到。当然,我们也可以在循环体中使用break,continue,return这样的跳转语句来使循环体有机会被跳出。
特点
这三种基本结构的共同特点是:
1、只有一个入口和出口。
2、结构内的每一部分都有机会被执行到,也就是说对每一个框来说都应当有一条从入口到出口的路径通过它,没有一条从入口到出口的路径通过它,就是不符合要求的算法结构。
3、结构内不存在死循环,即无终止的循环,在流程图中是不允许死循环的。