1、普通高中课程标准实验教科书必修,算法与程序框图,1.小品“钟点工”片段:,一、问题情境,要把大象装冰箱,总共分几步?,问:,答:分三步:,第一步:打开冰箱门,第二步:把大象装冰箱,第三步:关上冰箱门,1.1.1 算法的概念,第二步, 解得,第三步, - 2得 5y=3; ,第四步, 解得,做一做,你能写出解一般的二元一次方程组的步骤吗?,思考,第一步, - ,得. ,第二步,解 ,得 .,第三步, - ,得. ,第四步,解 ,得 .,第一步:,第二步:,第三步:,-,事实上,我们可以将一般的二元一次方程组的解法转化成计算机语言,做成一个求解二元一次方程组的程序.,这儿已经做好了,试一试吧!,在
2、数学中,算法通常是指按照一定规则解决某一类问题的明确和有限的步骤.现在,算法通常可以编成计算机程序,让计算机执行并解决问题.,2.算法的要求,(1)写出的算法,必须能解决一类问题(例如解任意一个二元一次方程组),并且能重复使用;,(2) 算法过程要能一步一步执行,每一步执行的操作,必须确切,不能含混不清,而且在有限步之内完成后能得出结果.,1.算法的定义,讲授新课,例1.(1)设计一个算法判断7 是否为质数.,第一步, 用2除7,得到余数1.因为余数不为0,所以2不能整除7.,第二步, 用3除7,得到余数1.因为余数不为0,所以3不能整除7.,第三步, 用4除7,得到余数3.因为余数不为0,所
3、以4不能整除7.,第四步, 用5除7,得到余数2.因为余数不为0, 所以5不能整除7.,第五步, 用6除7,得到余数1.因为余数不为0, 所以6不能整除7.因此,7是质数.,例1.(2)设计一个算法判断35是否为质数.,第一步, 用2除7,得到余数1.因为余数不为0,所以2不能整除7.,第二步, 用3除7,得到余数1.因为余数不为0,所以3不能整除7.,第三步, 用4除7,得到余数3.因为余数不为0,所以4不能整除7.,第四步, 用5除7,得到余数2.因为余数不为0, 所以5不能整除7.,第五步, 用6除7,得到余数1.因为余数不为0, 所以6不能整除7.因此,7是质数.,例1.(2)设计一个
4、算法判断35是否为质数.,第一步, 用2除35,得到余数1.因为余数不为0,所以2不能整除35.,第二步, 用3除7,得到余数1.因为余数不为0,所以3不能整除7.,第三步, 用4除7,得到余数3.因为余数不为0,所以4不能整除7.,第四步, 用5除7,得到余数2.因为余数不为0, 所以5不能整除7.,第五步, 用6除7,得到余数1.因为余数不为0, 所以6不能整除7.因此,7是质数.,例1.(2)设计一个算法判断35是否为质数.,第一步, 用2除35,得到余数1.因为余数不为0,所以2不能整除35.,第二步, 用3除35,得到余数2.因为余数不为0,所以3不能整除35.,第三步, 用4除7,
5、得到余数3.因为余数不为0,所以4不能整除7.,第四步, 用5除7,得到余数2.因为余数不为0, 所以5不能整除7.,第五步, 用6除7,得到余数1.因为余数不为0, 所以6不能整除7.因此,7是质数.,例1.(2)设计一个算法判断35是否为质数.,第一步, 用2除35,得到余数1.因为余数不为0,所以2不能整除35.,第二步, 用3除35,得到余数2.因为余数不为0,所以3不能整除35.,第三步, 用4除35,得到余数3.因为余数不为0,所以4不能整除35.,第四步, 用5除7,得到余数2.因为余数不为0, 所以5不能整除7.,第五步, 用6除7,得到余数1.因为余数不为0, 所以6不能整除
6、7.因此,7是质数.,例1.(2)设计一个算法判断35是否为质数.,第一步, 用2除35,得到余数1.因为余数不为0,所以2不能整除35.,第二步, 用3除35,得到余数2.因为余数不为0,所以3不能整除35.,第三步, 用4除35,得到余数3.因为余数不为0,所以4不能整除35.,第四步, 用5除35,得到余数0.因为余数为0, 所以5能整除35.,例1.(2)设计一个算法判断1997是否为质数.,第一步, 用2除35,得到余数1.因为余数不为0,所以2不能整除35.,第二步, 用3除35,得到余数2.因为余数不为0,所以3不能整除35.,第三步, 用4除35,得到余数3.因为余数不为0,所
7、以4不能整除35.,第四步, 用5除35,得到余数0.因为余数为0, 所以5能整除35.,例1.(2)设计一个算法判断1997是否为质数.,第一步, 用2除1997,得到余数1.因为余数不为0,所以2不能整除1997.,第二步, 用3除35,得到余数2.因为余数不为0,所以3不能整除35.,第三步, 用4除35,得到余数3.因为余数不为0,所以4不能整除35.,第四步, 用5除35,得到余数0.因为余数为0, 所以5能整除35.,例1.(2)设计一个算法判断1997是否为质数.,第一步, 用2除1997,得到余数1.因为余数不为0,所以2不能整除1997.,第二步, 用3除1997,得到余数2
8、.因为余数不为0,所以3不能整除1997.,第三步, 用4除35,得到余数3.因为余数不为0,所以4不能整除35.,第四步, 用5除35,得到余数0.因为余数为0, 所以5能整除35.,例1.(2)设计一个算法判断1997是否为质数.,第一步, 用2除1997,得到余数1.因为余数不为0,所以2不能整除1997.,第二步, 用3除1997,得到余数2.因为余数不为0,所以3不能整除1997.,第三步, 用4除1997,得到余数1.因为余数不为0,所以4不能整除1997.,第1995步, 用1996除1997,得到余数1.因为余数不为0,所以1996不能整除1997.,思考4:用21996逐一去
9、除1997求余数,需要1995个步骤,这些步骤基本是重复操作,我们可以按下面的思路改进这个算法,减少算法的步骤.,(1)用i表示21996中的任意一个整数,并从2开始取数;,(2)用i除1997,得到余数r. 若r=0,则1997不是质数;若r0,将i用i+1替代,再执行同样的操作;,(3)这个操作一直进行到i取1996为止.,你能按照这个思路,设计一个“判断1997是否为质数”的算法步骤吗?,用i除1997,得到余数r;,令i=2;,若r=0,则1997不是质数,结束算法;若r0,将i的值增加1,仍用i表示;,判断“i1996”是否成立?若是,则1997是质数,结束算法;否则,返回第二步.,
10、第一步,,第四步,,第三步,,第二步,,算法设计:,n,n,n-1,n,任意给定一个大于1的整数 n ,试设计一个程序或步骤对 n 是否为质数做出判定。,第一步,,给定大于2的整数n;,二,三,四,五,三,二分法,对于区间a,b 上连续不断、且 f(a)f(b)0的函数y=f(x),通过不断地 把函数f(x)的零点所在的区间一分 为二,使区间的两个端点逐步逼近 零点,进而得到零点或其近似值的 方法叫做二分法.,第四步, 若f(a) f(m) 0,则含零点的区间为a,m;,第二步, 给定区间a,b,满足f(a) f(b)0,第三步, 取中间点 ,第五步,判断f(m)是否等于或者a,b的长度是否小于d,若是,则m是方程的近似解;否则,返回第三步,将新得到的含零点的仍然记为a,b.,否则,含零点的区间为m, b.,算法步骤: 第一步, 令 ,给定精确度d.,练习2. 任意给定一个正实数,设计一个算法求以这个数为半径的圆的面积.,算法步骤:,第一步:给定一个正实数r; 第二步:计算以r为半径的圆的面积S=r2; 第三步:得到圆的面积S.,一人带着一只狼、一只羊和一箱蔬菜要过河,但只有一条小船.乘船时,每次只能带狼、羊和蔬菜中的一种.当有人在场时,狼、羊、蔬菜都相安无事.一旦人不在,狼会吃羊,羊会吃菜.请设计一个方案,安全地将狼、羊和蔬菜带过河.,趣味益智游戏,