课件23张PPT。1.1.1 算法的概念[读教材·填要点]
1.算法的概念
算法可以理解为由基本运算及规定的 所构成的完整的 ,或者看成按照要求设计好的 确切的计算序列,并且这样的步骤或序列能够解决这一类问题.
2.描述算法的方式
(1)可以用 和 加以叙述;
(2)可以借助 (算法语言)给出精确的说明;
(3)可以用 直观地显示算法的全貌.运算顺序解题步骤有限的自然语言数学语言形式语言框图 3.算法的要求
(1)写出的算法,必须能 ,并且能 .?
(2)算法过程要能一步一步执行,每一步执行的操作,必须 ,不能含混不清,而且经过 步后能得出结果.解决一类问题重复使用确切有限[小问题·大思维]
1.一个具体问题的算法唯一吗?
提示:不一定唯一.如二元一次方程组的解法就有消元法、代入法等.由于传统数学解法不唯一.故使得解某一个问题的算法不一定只有一个.2.算法与具体问题解法一样吗?
提示:算法同一般意义上具体问题的解法既有联系.又有别.
它们之间有一般与特殊的关系,也是抽象与具体的关系.
算法不仅适用于一般意义上具体问题的求解方法,而且任何一个具体问题都可以利用这类问题的一般算法来解决. 【解析】算法是解决问题的精确的描述,但是并不是所有问题都有算法,有些问题使用形式化、程序化的刻画是最恰当的.
【答案】 D[悟一法]
(1)算法一般是机械的,有时要进行大量重复的计算.只要按部就班地去做,总能算出结果.
(2)实际上,处理任何问题都需要算法,比如,中国象棋有中国象棋的棋谱,国际象棋有国际象棋的棋谱.
(3)算法指在有限步骤内求解某一问题所使用的一组定义明确的规则.[变式训练]
1.下列关于算法的说法中,正确的是 ( )
①求解一类问题的算法是唯一的;
②算法必须在有限步操作之后停止;
③算法的每一步操作必须是明确的,不能有歧义;
④算法执行后一定产生确定的结果.
A.1个 B.2个
C.3个 D.4个【解析】根据算法的定义,它实际上是解决问题的一种程序性方法,通常指向一类问题,具有可终止性,明确性和确定性,所以②③④正确,一般说解决某类问题的算法不唯一,故①错.
【答案】C [例2] 写出求1+2+3+4+5+6的值的一个算法. 解:算法1:
S1 计算1+2得3;
S2 将S1中的运算结果3与3相加得到6;
S3 将S2中的运算结果6与4相加得到10;
S4 将S3中的运算结果10与5相加得到15;
S5 将S4中的运算结果15与6相加得到21.[悟一法]
(1)算法1是最原始的办法,比较烦琐,步骤较多.当加数较大时,比如1+2+3+…+10 000,再利用这种方法计算会很慢;算法2是比较简单的算法,它体现了算法的本质“对一类问题机械的统一的求解方法”,且易于在计算机上执行操作.
(2)对于数值型计算问题的算法,可以借助数学公式采用数学计算的方法,将过程分解成清晰的步骤,使之条理化即可,但应注意多个数进行四则运算时应分步计算,依次进行,直到算出结果. [例3] 请设计一个算法,找出a,b,c,d四个互不相同的数中的最小数.
解:算法如下:
S1 定义最后求得的最小者为m,令m=a.
S2 如果bm,则m的值不变.
S3 如果cm,则m的值不变.
S4 如果dm,则m的值不变.
S5 输出m,则m就是a,b,c,d这四个互不相同的数 中的最小数.[悟一法]
1.非数值性计算问题主要指顺序、查找最大(小)值、变量的交换、文字处理等问题.
2.求解此类问题需先建立过程模型,通过过程模型进行算法的设计与描述,在写算法时应简练、清晰地表达,要善于分析任何可能的情况,体现出思维的严密性和完整性. 3.任给有限个数,求其中的最大数,最小数的算法,在数不是很多的情况下,可以采用逐一比较的办法.解这类问题,应先找出解题的数学方法,然后按部就班地做,每一步都有唯一结果,有限步之后总能得出结论.[变式训练]
3.一位喜欢收藏钱币的人,购得了9枚银元,其中有1枚略轻的是假银元.你能用天平(无砝码)帮他将假银元找出来吗?写出解决这一问题的一种算法.解:算法1:
S1 任取2枚银元分别放在天平两边,如果天平不平衡,则轻的是假银元,结束;如果天平平衡,那么执行S2;
S2 取下右边的银元放在一边,然后把剩下的7枚银元依次放在右边进行称量,直到天平不平衡,偏轻的那一枚就是假银元.算法2:
S1 把9枚银元分成3组,每组3枚;
S2 先将其中的两组放在天平的两边,如果天平不平衡,那么假银元在较轻的那一组;如果天平平衡,那么假银元在未称量的那一组;
S3 从含假银元的那一组中,任取2枚银元放在天平的两边,如果天平不平衡,那么较轻的是假银元;如果天平平衡,那么没称的那一枚是假银元.当堂检测
设计一个算法,将高一某班56名同学中考试成绩不及格者的分数打印出来.
解:算法步骤如下:
S1 令n=1;
S2 如果n>56,则转到S7;
S3 输入一个学生的成绩G;
S4 将G和60比较,如果G<60,则输出G;
S5 n=n+1;
S6 转到S2;
S7 结束.