1、1.3 算法案例第一、二课时 辗转相除法与更相减损术(1)教学目标(a)知识与技能1.理解辗转相除法与更相减损术中蕴含的数学原理,并能根据这些原理进行算法分析。2.基本能根据算法语句与程序框图的知识设计完整的程序框图并写出算法程序。(b)过程与方法在辗转相除法与更相减损术求最大公约数的学习过程中对比我们常见的约分求公因式的方法,比较它们在算法上的区别,并从程序的学习中体会数学的严谨,领会数学算法计算机处理的结合方式,初步掌握把数学算法转化成计算机语言的一般步骤。(c)情态与价值1.通过阅读中国古代数学中的算法案例,体会中国古代数学对世界数学发展的贡献。2.在学习古代数学家解决数学问题的方法的过
2、程中培养严谨的逻辑思维能力,在利用算法解决数学问题的过程中培养理性的精神和动手实践的能力。(2)教学重难点重点:理解辗转相除法与更相减损术求最大公约数的方法。难点:把辗转相除法与更相减损术的方法转换成程序框图与程序语言。(3)学法与教学用具学法:在理解最大公约数的基础上去发现辗转相除法与更相减损术中的数学规律,并能模仿已经学过的程序框图与算法语句设计出辗转相除法与更相减损术的程序框图与算法程序。教学用具:电脑,计算器,图形计算器(4)教学设想(一)创设情景,揭示课题1.教师首先提出问题:在初中,我们已经学过求最大公约数的知识,你能求出 18 与30 的公约数吗?2.接着教师进一步提出问题,我们
3、都是利用找公约数的方法来求最大公约数,如果公约数比较大而且根据我们的观察又不能得到一些公约数,我们又应该怎样求它们的最大公约数?比如求 8251 与 6105 的最大公约数?这就是我们这一堂课所要探讨的内容。(二)研探新知1.辗转相除法例 1 求两个正数 8251 和 6105 的最大公约数。(分析:8251 与 6105 两数都比较大,而且没有明显的公约数,如能把它们都变小一点,根据已有的知识即可求出最大公约数)解:8251610512146显然 8251 的最大公约数也必是 2146 的约数,同样 6105 与 2146 的公约数也必是 8251的约数,所以 8251 与 6105 的最大
4、公约数也是 6105 与 2146 的最大公约数。6105214621813214618131333181333351483331482371483740则 37 为 8251 与 6105 的最大公约数。以上我们求最大公约数的方法就是辗转相除法。也叫欧几里德算法,它是由欧几里德在公元前 300 年左右首先提出的。利用辗转相除法求最大公约数的步骤如下:第一步:用较大的数 m 除以较小的数 n 得到一个商 q0和一个余数 r0;第二步:若 r00,则 n 为 m,n 的最大公约数;若 r00,则用除数 n 除以余数 r0得到一个商 q1和一个余数 r1;第三步:若 r10,则 r1为 m,n 的
5、最大公约数;若 r10,则用除数 r0除以余数 r1得到一个商 q2和一个余数 r2;依次计算直至 rn0,此时所得到的 rn1 即为所求的最大公约数。练习:利用辗转相除法求两数 4081 与 20723 的最大公约数(答案:53)2.更相减损术我国早期也有解决求最大公约数问题的算法,就是更相减损术。更相减损术求最大公约数的步骤如下:可半者半之,不可半者,副置分母子之数,以少减多,更相减损,求其等也,以等数约之。翻译出来为:第一步:任意给出两个正数;判断它们是否都是偶数。若是,用 2 约简;若不是,执行第二步。第二步:以较大的数减去较小的数,接着把较小的数与所得的差比较,并以大数减小数。继续这
6、个操作,直到所得的数相等为止,则这个数(等数)就是所求的最大公约数。例 2 用更相减损术求 98 与 63 的最大公约数.解:由于 63 不是偶数,把 98 和 63 以大数减小数,并辗转相减,即:9863356335283528728721217141477所以,98 与 63 的最大公约数是 7。练习:用更相减损术求两个正数 84 与 72 的最大公约数。 (答案:12)3.比较辗转相除法与更相减损术的区别(1)都是求最大公约数的方法,计算上辗转相除法以除法为主,更相减损术以减法为主,计算次数上辗转相除法计算次数相对较少,特别当两个数字大小区别较大时计算次数的区别较明显。(2)从结果体现形
7、式来看,辗转相除法体现结果是以相除余数为 0 则得到,而更相减损术则以减数与差相等而得到4. 辗转相除法与更相减损术计算的程序框图及程序利用辗转相除法与更相减损术的计算算法,我们可以设计出程序框图以及 BSAIC 程序来在计算机上实现辗转相除法与更相减损术求最大公约数,下面由同学们设计相应框图并相互之间检查框图与程序的正确性,并在计算机上验证自己的结果。(1)辗转相除法的程序框图及程序程序框图:输入两个正整数 m , nm n ?r = m M O D nr = 0 ?m = nn = r结束开始x = nn = mm = x输出 n否是否是程序:INPUT “m=”;mINPUT “n=”;
8、nIF m0 r=m MOD nm=nn=rWENDPRINT mEND5.课堂练习一.用辗转相除法求下列各组数的最大公约数,并在自己编写的 BASIC 程序中验证。(1)225;135 (2)98;196 (3)72;168 (4)153;119二.思考:用求质因数的方法可否求上述 4 组数的最大公约数?可否利用求质因数的算法设计出程序框图及程序?若能,在电脑上测试自己的程序;若不能说明无法实现的理由。三。思考:利用辗转相除法是否可以求两数的最大公倍数?试设计程序框图并转换成程序在 BASIC 中实现。6.小结:辗转相除法与更相减损术求最大公约数的计算方法及完整算法程序的编写。(5)评价设计
9、作业:P38 A(1)B(2)补充:设计更相减损术求最大公约数的程序框图第三、四课时 秦九韶算法与排序(1)教学目标(a)知识与技能1.了解秦九韶算法的计算过程,并理解利用秦九韶算法可以减少计算次数提高计算效率的实质。2.掌握数据排序的原理能使用直接排序法与冒泡排序法给一组数据排序,进而能设计冒泡排序法的程序框图及程序,理解数学算法与计算机算法的区别,理解计算机对数学的辅助作用。(b)过程与方法模仿秦九韶计算方法,体会古人计算构思的巧妙。能根据排序法中的直接插入排序法与冒泡排序法的步骤,了解数学计算转换为计算机计算的途径,从而探究计算机算法与数学算法的区别,体会计算机对数学学习的辅助作用。(c
10、)情态与价值通过对秦九韶算法的学习,了解中国古代数学家对数学的贡献,充分认识到我国文化历史的悠久。通过对排序法的学习,领会数学计算与计算机计算的区别,充分认识信息技术对数学的促进。(2)教学重难点重点:1.秦九韶算法的特点2.两种排序法的排序步骤及计算机程序设计难点:1.秦九韶算法的先进性理解2.排序法的计算机程序设计(3)学法与教学用具学法:1.探究秦九韶算法对比一般计算方法中计算次数的改变,体会科学的计算。2.模仿排序法中数字排序的步骤,理解计算机计算的一般步骤,领会数学计算在计算机上实施的要求。教学用具:电脑,计算器,图形计算器(4)教学设想(一)创设情景,揭示课题我们已经学过了多项式的
11、计算,下面我们计算一下多项式当 时的值,并统计所做的计算的种类及计算次1)(2345xxf 5数。根据我们的计算统计可以得出我们共需要 10 次乘法运算,5 次加法运算。我们把多项式变形为: 再统计一下计算当1)(1()2 xxf时的值时需要的计算次数,可以得出仅需 4 次乘法和 5 次加法运算即可得出结果。5x显然少了 6 次乘法运算。这种算法就叫秦九韶算法。(二)研探新知1.秦九韶计算多项式的方法 012132 01321)( )() axaxaxaxaxaf nnnnnnn 例 1 已知一个 5 次多项式为 8.07.16.25.35(4 xxf用秦九韶算法求这个多项式当 时的值。解:略
12、思考:(1)例 1 计算时需要多少次乘法计算?多少次加法计算?(2)在利用秦九韶算法计算 n 次多项式当 时需要多少次乘法计算和多少次加0x法计算?练习:利用秦九韶算法计算 15.03.16.4.83.0)( 25 xxf当 时的值,并统计需要多少次乘法计算和多少次加法计算?5x例 2 设计利用秦九韶算法计算 5 次多项式当 时的值的程序框图。012345)( axxaaf0x解:程序框图如下: 开始输入 f ( x ) 的系数 :a1, a2, a3, a4, a5输入 x0n = 1v = a5n 5v = v x0+ a5 - nn = n + 1输出 v结束是否练习:利用程序框图试编写
13、 BASIC 程序并在计算机上测试自己的程序。2.排序在信息技术课中我们学习过电子表格,电子表格对分数的排序非常简单,那么电子计算机是怎么对数据进行排序的呢?阅读课本 P30P31 面的内容,回答下面的问题:(1)排序法中的直接插入排序法与冒泡排序法的步骤有什么区别?(2)冒泡法排序中对 5 个数字进行排序最多需要多少趟?(3)在冒泡法排序对 5 个数字进行排序的每一趟中需要比较大小几次?游戏:5 位同学每人拿一个数字牌在讲台上演示冒泡排序法对 5 个数据 4,11,7,9,6 排序的过程,让学生通过观察叙述冒泡排序法的主要步骤.并结合步骤解决例 3 的问题.例 3 用冒泡排序法对数据 7,5
14、,3,9,1 从小到大进行排序解:P32练习:写出用冒泡排序法对 5 个数据 4,11,7,9,6 排序的过程中每一趟排序的结果.例 4 设计冒泡排序法对 5 个数据进行排序的程序框图.解: 程序框图如下:开始输入 a1, a2, a3, a4, a5i = 1ai ai + 1x = aiai= ai + 1ai + 1= xi = 5r = 5输出a1, a2, a3, a4, a5结束i = i + 1 r = r + 1r = 1否否是否是是思考:直接排序法的程序框图如何设计?可否把上述程序框图转化为程序?练习:用直接排序法对例 3 中的数据从小到大排序3.小结:(1)秦九韶算法计算多
15、项式的值及程序设计(2)数字排序法中的常见的两种排序法直接插入排序法与冒泡排序法(3)冒泡法排序的计算机程序框图设计(5)评价设计作业:P38 A(2) (3)补充:设计程序框图对上述两组数进行排序第五课时 进位制(1)教学目标(a)知识与技能了解各种进位制与十进制之间转换的规律,会利用各种进位制与十进制之间的联系进行各种进位制之间的转换。(b)过程与方法学习各种进位制转换成十进制的计算方法,研究十进制转换为各种进位制的除 k 去余法,并理解其中的数学规律。(c)情态与价值领悟十进制,二进制的特点,了解计算机的电路与二进制的联系,进一步认识到计算机与数学的联系。(2)教学重难点重点:各进位制表
16、示数的方法及各进位制之间的转换难点:除 k 去余法的理解以及各进位制之间转换的程序框图的设计(3)学法与教学用具学法:在学习各种进位制特点的同时探讨进位制表示数与十进制表示数的区别与联系,熟悉各种进位制表示数的方法,从而理解十进制转换为各种进位制的除 k 去余法。教学用具:电脑,计算器,图形计算器(4)教学设想(一)创设情景,揭示课题我们常见的数字都是十进制的,但是并不是生活中的每一种数字都是十进制的.比如时间和角度的单位用六十进位制,电子计算机用的是二进制.那么什么是进位制?不同的进位制之间又又什么联系呢?(二)研探新知进位制是一种记数方式,用有限的数字在不同的位置表示不同的数值。可使用数字
17、符号的个数称为基数,基数为 n,即可称 n 进位制,简称 n 进制。现在最常用的是十进制,通常使用 10 个阿拉伯数字 0-9 进行记数。对于任何一个数,我们可以用不同的进位制来表示。比如:十进数 57,可以用二进制表示为 111001,也可以用八进制表示为 71、用十六进制表示为 39,它们所代表的数值都是一样的。表示各种进位制数一般在数字右下脚加注来表示,如 111001(2)表示二进制数,34 (5)表示5 进制数.电子计算机一般都使用二进制,下面我们来进行二进制与十进制之间的转化例 1 把二进制数 110011(2)化为十进制数.解:110011=1*2 5+1*24+0*23+1*2
18、4+0*22+1*21+1*20=32+16+2+1=51例 2 把 89 化为二进制数.解:根据二进制数满二进一的原则,可以用 2 连续去除 89 或所得商,然后去余数.具体的计算方法如下:89=2*44+144=2*22+022=2*11+011=2*5+15=2*2+1所以:89=2*(2*(2*(2*(2*2+1)+1)+0)+0)+1=1*26+0*25+1*24+1*23+0*22+0*21+1*20=1011001(2)这种算法叫做除 2 取余法,还可以用下面的除法算式表示:把上式中的各步所得的余数从下到上排列即可得到 89=1011001(2)上述方法也可以推广为把十进制化为
19、k 进制数的算法,这种算法成为除 k 取余法.当数字较小时,也可直接利用各进位制表示数的特点,都是以幂的形式来表示各位数字,比如2*103表示千位数字是 2,所以可以直接求出各位数字.即把 89 转换为二进制数时,直接观察得出 89 与 64 最接近故 89=64*1+25同理:25=16*1+99=8*!+1即 89=64*1+16*1+8*!+1=1*26+1*24+1*23+1*20位数 6 5 4 3 2 1 0数字 1 0 1 1 0 0 1即 89=1011001(2)练习:(1)把 73 转换为二进制数(2)利用除 k 取余法把 89 转换为 5 进制数把 k 进制数 a(共有
20、n 位)转换为十进制数 b 的过程可以利用计算机程序来实现,语句为:INPUT a,k,ni=1b=0WHILE i=nt=GET aib=b+t*k(i-1)i=i+1WENDPRINT bEND练习:(1)请根据上述程序画出程序框图.参考程序框图:8944221152122222220余数1001101开始结束输入 a , k , ni = 1b = 0t = G E T a i b = b + t * k ( i - 1 )i = n输出 bi = i + 1是否(2)设计一个算法,实现把 k 进制数 a(共有 n 位)转换为十进制数 b 的过程的程序中的 GET函数的功能,输入一个正 5 位数,取出它的各位数字,并输出.小结:(1)进位制的概念及表示方法(2)十进制与二进制之间转换的方法及计算机程序(5)评价设计作业:P38 A(4)补充:设计程序框图把一个八进制数 23456 转换成十进制数.