高中二年级信息技术递归算法实例及程序实现教学设计_第1页
高中二年级信息技术递归算法实例及程序实现教学设计_第2页
高中二年级信息技术递归算法实例及程序实现教学设计_第3页
高中二年级信息技术递归算法实例及程序实现教学设计_第4页
高中二年级信息技术递归算法实例及程序实现教学设计_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

高中二年级信息技术递归算法实例及程序实现教学设计一、教学设计的总体定位本课是浙教版高中信息技术选修1《算法与程序设计》第五章第五节的内容,承接前面已经学过的分支结构、循环结构、自定义函数等知识,是函数知识向算法思想纵深发展的关键一课。递归是计算机科学中最具思想魅力的解决问题方式之一,它把一个大问题不断转化为同类型的更小问题,直到小到可以直接求解为止。对高二学生而言,递归既是重点也是难点,难在它颠覆学生习惯的"一步一步推着算"的线性思维,要求他们建立"自己调用自己"的抽象观念。因此本课不以语法灌输为目标,而是以"思想可见、过程可感、代码可写"为三条主线,让学生在真实可感的活动中完成从直觉到抽象再到实现的跨越。本课的教学价值还在于与选择性必修1《数据与数据结构》的衔接。汉诺塔、二叉树遍历、分治思想都建立在递归之上,本课学不透,后续课程将处处受阻。教师对课标中"能结合不同实例,选择恰当的算法解决问题"和"理解递归算法的思想,能阅读并编写简单的递归程序"这两条要求做了细化处理,将其转化为本节课可观测、可评价的课时目标。二、学情分析授课对象为高二年级选考技术学科的学生。他们已经能够熟练使用Python编写包含for循环、while循环和自定义函数的程序,能够完成累加、累乘、遍历列表等常规任务,具备一定的调试经验。但从认知层面看,学生对"函数在自身内部调用自身"缺乏心智模型,容易提出三个典型疑问:一是函数还没运行完怎么能再调用它自己,二是这样调用会不会陷入死循环,三是参数一层层传下去,中间的结果存在哪里。这三个疑问正是教学要逐一破解的核心节点。从思维特点看,这个年龄段的学生抽象逻辑思维趋于成熟,但仍需要具体形象的支撑。单纯的代码讲解会让半数以上学生掉队,因此设计采用"生活情境类比——动画演示过程——单步执行跟踪——代码模仿改写"的梯度路径,让每个学生都能在自己的最近发展区内获得理解。班内学生水平差异较明显。部分信息技术特长生已经自学过递归甚至深度优先搜索,这部分学生不应只是"陪读",需要为他们准备拓展任务;基础薄弱的学生则需要把台阶搭得更密,确保他们至少能读懂递归程序并完成填空式仿写。三、教学目标知识与技能目标:学生能够用自己的话说出递归的含义,指出递归函数中递归体和递归出口(基准情形)两部分的作用;能够读懂阶乘、斐波那契数列等典型递归程序,借助调用栈图示说出其执行顺序;能够仿照范例独立完成阶乘、累加求和、汉诺塔等问题的递归程序编写并调试通过。过程与方法目标:经历"定义问题——找基准情形——假设小问题已解决——写递归关系"的思考路径,初步掌握用分治眼光拆解问题的思维方式;通过在代码中插入打印语句、增大缩进显示递归深度等方法跟踪程序执行,形成对递归执行机制的直观把握。情感态度与价值观目标:体验"大事化小、小事化了"的算法智慧,感受数学思维与程序实现之间的呼应关系;在调试递归程序出错(如栈溢出)的过程中体会基准情形的重要性,养成严谨审视边界条件的习惯;通过了解汉诺塔传说的指数级时间特点,体会算法效率问题带来的震撼与思考。学科核心素养指向:本课重点落实计算思维中的抽象与分解能力,即把一个复杂对象抽象为"小规模同类对象的组合"的能力;同时落实数字化学习与创新能力,体现在学生使用调试工具主动探究程序动态行为的学习方式上。四、教学重点与难点教学重点:递归算法的两个要素,即递归公式(递归体)与递归出口;阅读Python递归程序,理解其执行过程中的调用与返回顺序。教学难点:递归执行阶段的正确理解,尤其是"递推下去"与"回归上来"两个方向的时序关系;从实际问题中抽象出递归关系,把问题交给"一个规模更小的自己"来解决。重难点突破策略:用摸座次报数、镜子照镜子、汉诺塔三层动画等具象情境降低理解门槛;用带缩进的打印语句把不可见的调用栈"画"在屏幕上,让每一层调用的进入与退出都有据可查;用"先信后证"的思考口诀(相信f(n-1)已经算对,只写好f(n)与f(n-1)的关系)帮助学生跨越自我调用的心理障碍。五、教学方法与课前准备教学方法采用情境教学法、任务驱动法、演示法与合作学习相结合的方式。信息技术课拒绝满堂灌,教师讲授时间控制在十五分钟以内,其余时间交给学生观察、讨论、上机。课前准备:机房确保Python3环境可用;教师制作汉诺塔三层动画演示课件;准备印有调用栈填空图的学习任务单,正面为课堂探究题,背面为分层作业;在机房服务器上预置本课所需的起始代码文件,包括带有bug的阶乘程序若干变式供"找茬"活动使用;对学有余力的学生另备"汉诺塔最优步数证明引导卡"。六、教学过程环节一:情境导入——教室里的一则小事(约5分钟)上课伊始,教师提出一个日常问题:如果我想知道第三排第五位同学的真实年龄,但他不肯说,只悄悄告诉我"我比我前面那个人晚出生三个月",第二位同学也只说和第一位同学的年龄关系,依次类推,直到第一位同学说出自己的确切年龄,我能不能算出第五位同学的年龄。学生很快反应,只要从第一位同学的年龄出发,一次次加上时间差就能算出来。教师追问:如果换一种表述,第n位同学的年龄等于第n-1位同学的年龄加上三个月的差距,这句话本身描述了第五位同学的年龄吗?在肯定回答基础上,教师指出:当一个问题的答案依赖于同类型的更小问题的答案,而最小的问题有现成答案时,我们就可以用这样一种"自己套自己"的方式来描述和解决问题,这种方式叫递归。接着教师现场运行两段对比代码,一段用循环计算前n个自然数之和,一段用递归方式计算同一件事,屏幕上输出相同结果,学生直观看到"同一件事,两种写法",学习兴趣被调动。教师板书课题并点明本课任务:看懂递归、写会递归。环节二:初识递归——拆解函数的五脏六腑(约8分钟)教师在大屏幕展示计算阶乘的递归函数。代码主体为:定义函数factorial(n),如果n等于1则返回1,否则返回n乘以factorial(n-1)。教师不急于讲执行过程,而是抛给学生三个观察任务:第一,这个函数在哪里调用了自己?第二,函数在什么情况下不再调用自己?第三,如果删掉n等于1这个判断,会发生什么?学生两两讨论后汇报。教师归纳板书递归的两个要素:基准情形(也称递归出口、终止条件),它保证递归不会无限进行下去;递归体,即把原问题转化为更小规模同类问题的那一行代码,它保证每次调用都在向基准情形靠近。随后进行第一次针对性实验:学生在自己电脑上运行教师提供的"故意删掉基准情形"的程序,观察到程序不停输出直至报出最大递归深度超限错误。教师借这个错误讲清两点:一是Python对递归深度有限制,默认约一千层;二是基准情形不是程序的装饰,而是递归存在的合法性保障。这是学生对"边界条件"这一严谨性要求的最深体会,比任何说教都有效。教师补充生活中的递归意象:两面相对摆放的镜子中无限嵌套的镜像、故事"从前有座山,山里有座庙"的自引用结构。教师提醒,这些自然界的递归没有出口,所以无限延展;而程序中的递归必须有出口,这是本质区别。环节三:透视执行——把调用栈画出来(约10分钟)本环节针对难点展开。许多学生会写递归程序却不真正理解它怎么跑起来的,这会成为日后调试时的隐患。教师采用"打印追踪法",让学生在递归函数开头加一条语句,打印若干个空格缩进后跟上"进入factorial(n)",在返回前打印相同缩进的"离开factorial(n),结果是多少"。学生以factorial(4)为例运行,屏幕上出现逐层缩进的进入信息:进入factorial(4)、进入factorial(3)、进入factorial(2)、进入factorial(1),随后反向层层离开并带回结果:1、2、6、24。教师让学生用自己的语言描述这段输出揭示了什么。学生说:函数一层层往里走,走到n等于1的地方才停下,然后一层层带着结果退回来。教师由此引入"递推"与"回归"两个形象说法:从factorial(4)走到factorial(1)是递推下去,把问题越问越小;从1带回6、24是回归上来,把答案越算越大。在黑板上画出调用栈示意图:每一次函数调用相当于在栈顶压入一个新的执行现场,包含当时的参数n和要返回的位置;函数返回时这个现场被弹出。用factorial(4)为例,栈从下到上依次压入4、3、2、1四个现场,再从1开始依次弹出,学生对照屏幕缩进输出,抽象模型与直观证据相互印证。此环节安排一次小测检验:教师提问,factorial(4)执行过程中,函数factorial总共被调用了几次?其中哪一次调用最先结束?学生应回答共四次,n等于1的那次最先结束。教师观察作答情况,对理解仍模糊的学生开启一对一辅导通道。环节四:任务驱动——亲手写一个递归(约12分钟)在理解的基础上进入实践。教师布置递进式任务。任务一(全员必做):模仿阶乘函数,编写递归函数sum(n),计算1+2+…+n。提示学生先回答两个问题再动手:基准情形是什么(n等于1时返回1);递归关系是什么(sum(n)等于n加上sum(n-1))。绝大多数学生能在五分钟内完成并验证正确。任务二(全员必做):编写递归函数fib(n),返回斐波那契数列第n项。师生先共同回顾数列规律:第1项和第2项都是1,从第3项起每一项等于前两项之和。学生发现这个函数有两个基准情形,递归体中函数自身被调用了两次。运行fib(10)得到55。教师顺势让学生试算fib(35),发现明显变慢,引出后续的效率思考。任务三(分层选做):为汉诺塔问题编写递归程序。教师先播放三层圆盘移动的动画,再抛出引导:要把n个盘子从A柱移到C柱,可以分三步——先把上面n-1个盘子从A柱借助C柱移到B柱,再把最大的盘子从A柱移到C柱,最后把n-1个盘子从B柱借助A柱移到C柱。学生发现三步中的第一步和第三步又是汉诺塔问题,只是盘子少了一个,这正是递归结构的天然雏形。学生完成函数hanoi(n,A,B,C),其中n等于1时直接输出移动指令,否则依三步递归调用。运行hanoi(3,'A','B','C'),屏幕输出七条移动指令,与动画完全吻合,课堂上响起自发的惊叹。教师巡视期间重点记录三类典型问题:漏写基准情形导致栈溢出;基准情形判断写成n大于0之类逻辑反了的条件;汉诺塔问题中三个柱子的参数顺序写混。巡视成果在下一环节集中讲评。环节五:思辨提升——递归不是万能的(约6分钟)学生沉浸在"递归真神奇"的情绪中时,教师泼一瓢冷水:回到斐波那契,fib(5)的计算过程中fib(3)被算了几次?学生动手画递归树,发现fib(3)被算了2次,fib(2)被算了3次,层数越深重复越惊人。教师演示fib(35)的耗时,让学生感受指数级增长的代价。教师引导归纳:递归的优势是表达简洁、思想自然,特别适合问题本身具有自相似结构的场合,如阶乘、汉诺塔、目录遍历;递归的代价是调用开销与可能的重复计算,且受递归深度限制。当问题能方便地用循环表达且无重复计算时,迭代往往更高效。这一对比让学生形成"没有最好的算法,只有最合适的选择"的辩证认识,避免学完递归后逢题必递归的误区。为埋下伏笔,教师提到:对于斐波那契这种重复子问题特别多的递归,可以用一个字典记下已经算过的结果避免重复计算,或者干脆从底向上递推计算,这在后续课程中会详细学习,今天只需知道"代价"二字。环节六:课堂小结与作业布置(约4分钟)小结不采用教师复述的方式,而采用"出口接龙"的形式。教师提问,学生接力回答:递归函数必须有两个部分,分别是基准情形和递归体;递归的执行分两个阶段,递推下去、回归上来;写递归的思考口诀是"相信小问题能解决,写好两边的关系,守住出口"。作业分层设置。基础层:用递归实现求最大公约数(辗转相除法的递归版本),并完成学习单上调用栈填空图。提高层:打印一个正整数的各位数字(如输入9527,依次输出9、5、2、7),分别写出递归正序输出版与递归倒序输出版,体会打印语句放在递归调用前后的差别。拓展层:查阅资料了解"尾递归"概念,思考为什么有的语言能对尾递归做优化而Python不能,写一百字左右的探究心得,下节课课前分享。七、板书设计主板书左侧为递归定义与两要素:基准情形n等于1,递归体n乘factorial(n-1)。中部为factorial(4)的调用栈示意圈图,四个框自下而上排列,箭头标注"递推下、回带上"。右侧为思考口诀三行:相信f(n-1),写好f(n)与f(n-1)的关系,守住出口。右下角留出"递归≠万能"警示区,记录斐波那契重复计算的结论。黑板全程不用擦写式板书,课堂结束时板书即为本课思维脉络的全息地图,便于学生用一分钟拍照留存。八、教学评价设计本课评价嵌入教学全程而非课后补测。过程性评价包括三个观测点:环节二中学生对递归两要素的口头归纳是否准确到位;环节四中三个任务的完成速度与正确率,教师在巡视表上记录每个学生任务三的达成状态;环节六接龙小结时随机抽取学生复述执行顺序。作品性评价针对递归程序设定四维量规:功能正确性,即输出结果符合题目要求;结构规范性,即基准情形在前、递归体在后,命名达意;边界健壮性,即输入非法值(如负数)时程序有合理反应;思维可视性,即学生能否为自己程序配上调用过程注释或缩进追踪打印。四维度分别赋分,计入单元过程性成绩。对信息技术特长生采用差异化评价:他们完成拓展任务后可申请成为下节课递归树的"小讲师",评价标准为能否用同伴听得懂的语言讲清递归时间复杂度的来源,以讲促学、以教代考。九、教学资源与工具说明本课使用Python3.10以上版本作为编程环境,不额外安装第三方库,保证机房零障碍复现。演示动画采用PPT逐帧动画自制,忠实地呈现三根柱子上圆盘移动的过程并标注柱名A、B、C,动画速度可调,便于在关键步骤暂停提问。学习任务单采用单色双面印刷,控制在一页以内,防止信息过载稀释重点。考虑部分学生在家中希望复习,教师将本课的追踪打印代码模板和任务参考解上传到班级资源平台,并附言:先自己写,再对答案,对答案时只看不抄,抄一遍不如错一次。十、教学设计的逻辑支撑与反思预设本课设计的核心逻辑是从具象到抽象再回到具象的完整闭环。开场用年龄问题提供具象锚点,中段用打印追踪让抽象的执行机制重新具象,结尾用效率讨论把学生的认识推向辩证。这一闭环符合高中

温馨提示

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

最新文档

评论

0/150

提交评论