高中信息技术粤教版高中选修1算法与程序设计第四章算法与程序实现4.4.5_第1页
高中信息技术粤教版高中选修1算法与程序设计第四章算法与程序实现4.4.5_第2页
高中信息技术粤教版高中选修1算法与程序设计第四章算法与程序实现4.4.5_第3页
高中信息技术粤教版高中选修1算法与程序设计第四章算法与程序实现4.4.5_第4页
高中信息技术粤教版高中选修1算法与程序设计第四章算法与程序实现4.4.5_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章递归算法与递归程序 递归算法四川省内江市第六中学尤丹【教材分析】“递归算法与递归程序”是广东教育出版社《算法与程序设计》选修1第四章的内容。递归算法是计算机程序设计中的一种重要的算法,是较难理解的算法之一。“递归算法”的基本思想:把规模大的、较难解决的问题变成规模较小的、易解决的同一问题。规模较小的问题又变成规模更小的问题,并且小到一定程度直到可以直接得出它的解,从而得到原来问题的解。本节课设置了前置学习知识点:自定义函数,在学习自定义函数的基础上,学习递归算法的程序实现是自定义函数的一种具体应用,培养学生“自顶向下”、“逐步求精”的意识起着重要的作用。由于教材中的“斐波那契兔子问题”是递归的多函数调用,递归过程较为复杂,所以本节课在设计时充分考虑学情,设计一些生活中、数学中常见的递归问题,让学生通过学习和反复的练习,由浅入深地理解“递归算法”,并善于用递归思想解决复杂的递归问题。【学情分析】本节课授课对象是高一年级的学生。学生有一定的知识储备,有一定的计算机操作能力,也具有基本的编程思想。在学习《算法与程序设计》的过程中,学习了程序设计的三种基本结构,在学习程序设计三种基本结构的应用过程中培养了学生用计算机编程解决现实中一些问题的能力,特别是在学习循环语句的过程中,应用了大量的“递推”算法。前一节课学习了如何自定义函数,在此基础上深入学习和体会自定义函数的应用。以递推算法的逆向思维进行问题求解,在学习过程中体会递归算法的基本思想。多维度的思考问题和解决问题是提高学生的学习兴趣关键。同时学生通过初中数学和高中数学的学习,对函数也有基本的了解和掌握。将函数知识与模块化程序设计的思想相结合,能够让学生在理解“递归算法”的基础上,利用“递归思想”解决递归问题,也充分体现了STEM教育的多学科融合思想。【设计思路】本堂课设计思路是从“找位置”不同的真实情境出发,引入课题;以简单数学问题“求阶乘”,让学生将数学问题计算机程序化解决,体验从“分析问题”→“设计算法”→“编写程序”→“调试程序”的求解过程,从而渐进式地让学生接收递归思想,了解递归算法的原理。然后通过分析、解决“年龄计算”、“猴子吃桃”等问题强化、巩固知识,学生通过知识迁移建构自我知识体系,从而达到教学效果。本节课以信息技术课程为载体,以“递归算法的实现”为项目,采用项目式教学法。教师将STEM教育理念融入教学中,以学生为主体,教师引导学生进行多学科融合的学习,提升学生发现问题和解决问题的能力。【教学目标】1.知识与技能(1)理解什么是“递归算法”,能用“递归算法”的思想分析问题。(2)能够应用自定义函数方法实现“递归算法”的编程。2.过程与方法(1)通过生活中的“递归现象”,让学生初步思考和理解“递归算法”思想。(2)学生参与讨论,通过思考、动手操作,体验“递归算法”的程序。3.情感态度与价值观(1)通过利用“递归算法”解决实际问题,让学生体验成功。(2)结合数学中的实例,激发学生的数学建模意识,培养学生多维度的思考问题和解决问题。(3)多学科融合,促进学科知识的迁移。【教学重点】1.递归算法的含义。2.自定义函数实现递归算法的编程。【教学难点】1.用递归算法的思想分析和解决问题。2.自定义函数实现递归算法的编程。【教法学法】项目教学法、任务驱动法、合作讨论法、讲授法、演示法【教学过程】教学环节教师活动学生活动设计意图复习旧知温故知新回顾自定义函数:为了实现某种功能而编写的一段相对独立的程序,并且能够多次调用。Function函数名(参数As数据类型)As数据类型函数体EndFunction回顾、思考复习旧知通过前置课程让学生理解自定义函数的定义和格式,为新课教学做好准备。创设情境问题导入创设情境问题导入“找位置活动”:选择两组学生表演1.第1组从第一位同学开始依序报出自己的位置。活动规则:(1)第1组同学从第一位同学开始。(2)依次报出自己所在位置序号。(3)一直到最后一个同学报完。2.第2组从最后一名同学开始报出自己的位置。活动规则:(1)从最后一位同学开始。(2)每位同学只能问他相邻的同学且每位同学最多只能问一次和被问一次,当任何一个同学知道了答案,要求立即告诉曾经问过他的那个同学(不能告诉其他同学)以此类推。(3)直到每位同学知道自己的位置后,游戏结束。思考与讨论:(1)这两种“找位置”的方法的共性是什么?(2)第二种方法与第一种方法相比存在什么不同点?(3)第二种“找位置”的结束条件是什么?第1组学生表演,由最后一名同学分析自己得到位置的过程。明确活动规则。第2组学生表演,由最后一位同学分析自己得到位置的过程。以小组为单位思考和讨论问题小组代表发言1.采用情境教学法,从真实情境出发,培养学生发现问题并解决问题的能力。2.学生从活动中体验“问题的发生与解决”,初步理解递归的思维模式,能够初步将实际问题计算机程序化。3.活动中的问题促进学生积极思考,激发学生学习兴趣。4.为进一步学习递归算法埋下伏笔。自主学习知识梳理活动1分析:从第一个同学依次向后递推,从而得到自己的位置。(递推)活动2分析:最后一个同学想知道自己的位置,就必须向前面的同学询问位置,前面的同学又得向前面的同学询问,直到一个同学的前面没有人,他就是第一个,然后向他后面的同学报告自己的位置,以此类推,直到最后一个同学知道自己的位置后,报告位置。(递归)1.递归算法(1)递归算法是(自己调用自己)的编程方法。函数先由上向下调用(递推),当达到最底层后,再将函数值层层向上返回(回归)。(递推+回归就是递归)(2)必须有一个(结束)调用递归函数的条件。2.“找位置”算法描述:Functionwz(nAsInteger)AsIntegerIf我知道位置Then我就告诉你Else我要问了下一个同学,再告诉你EndIfEndFunction讨论、分析明确活动过程分小组结合《学案》自主讨论、总结1.让学生进行自主探究学习,使学生主动、积极的学习新知识,培养他们的自学能力。2.通过自主学习,引导学生发现、整理基础知识,提炼核心问题。3.培养学生整理信息、发现问题的能力。4.为知识应用打下夯实基础。以问导思知识精讲计算一个正整数n的阶乘。一、分析问题f(1)=1f(2)=f(1)*2f(1)=1f(2)=f(1)*2f(3)=f(2)*3f(4)=f(3)*4f(5)=f(4)*5f(n)=f(n-1)*nf(n)=f(n-1)*nn=1,1!=1n=2,2!=1*2n=3,3!=1*2*3n=4,4!=1*2*3*4n=5,5!=1*2*3*4*5n!=1*2*3*4*5*……*n2.数学递推公式:用jc(n)表示n的阶乘jc=1n=1jc=jc(n-1)*nn>13.结束递归调用的条件:n=1,jc=1调用递归函数jc(n)开始调用递归函数jc(n)开始结束输入n输出ss=jc(n)自定义函数流程图自定义函数流程图开始结束jc=jc(m-1)*mm=1?jc=1否是编写程序PrivateSubCommand1_Click()DimnAsInteger,sAsDoublen=InputBox("n=")s=jc(n)PrintsEndSubFunctionjc(mAsInteger)AsDoubleIfm=1Thenjc=1Elsejc=jc(m-1)*mEndIfEndFunction四、调试程序自主思考小组讨论比较、分析、归纳推导数学建模进行算法描述分析算法的实现过程掌握自定义函数的使用规则和方法编写程序实现算法1.实例教学,“求阶乘”简化教材“裴波那契”数列的多函数调用,回避问题分析的复杂性。2.选择学生熟悉的数学问题,利用计算机编程解决熟悉的数学问题,促进学科融合。3.实现多元化学习方式和跨学科思维能力的培养。4.由浅入深,促进知识的内化和迁移。自主构建深化知识学生活动:猴子吃桃有一天小猴子摘了若干个桃子,当即吃了一半还觉得不过瘾,又多吃了一个。第二天接着吃剩下桃子中的一半,仍觉得不过瘾,又多吃了一个。以后小猴子每天都是吃剩下桃子的一半多一个。到第10天早上小猴子再去吃桃子的时候,看到只剩下一个桃子。请问:小猴子在第1天时共摘下了多少个桃子?活动要求1.结合学案,分组完成。2.小组长组织组员,合作学习,完成学案的填写。3.完成学案后,小组同学共同完成VB程序代码的填写。4.根据题目要求运行程序,调试程序,检验结果。5.小组代表分享解题方法和思路。一、分析问题1.递归过程分析2.数学递推公式3.结束递归调用的条件二、设计算法用自然语言或流程图描述算法三、编写程序PrivateSubCommand2_Click()DimnAsInteger,tAsIntegern=t=Print"桃子数t=";tEndSubFunctiontao(dAsInteger)AsInteger函数体EndFunction四、调试程序小组合作分析、讨论、归纳、总结明确活动要求根据要求完成问题分析、学案填写、程序填空、结果检验1.引导学生从模仿开始,由易到难、循序渐进,逐步过渡到独立进行递归算法应用。2.尊生学生的个体发展,让学生进行自主探究学习。并开展讨论,培养学生之间互相协作、共同解决问题的能力。3.渗透程序设计的思想、方法。提高学生数学思维和计算思维。4.培养学生的编程和调试程序的能力,让学生获得成功的体验。课堂小结巩固知识递归算法(1)递归算法是自己调用自己的编程方法。函数先由上向下调用,当达到最底层后,再将函数值层层向上返回。(递归就是递推+回归)(2)必须有一个结束调用递归函数的条件。师生讨论共同

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论