内容正文:
《兔子增长有规律(1)》教学设计
教材版本:义务教育信息科技课程资源(五年级)
课时安排:1课时(40分钟)
授课对象:五年级学生
一、教材分析
本课是五年级第六单元第二课,基于2022年版课标"身边的算法"模块,学习递推算法思想。教材以"兔子农场繁殖"经典问题为载体,通过"图示观察→表格列举→规律发现→递推描述"的探究路径,引导学生理解"从已知数据出发、利用前项推导后项"的算法本质。本课是枚举遍历的深化应用,将循环结构用于数列生成,衔接排序算法中的循环逻辑,为后续学习更复杂的递推问题(如汉诺塔、斐波那契应用)奠定基础,体现"科"(递推思想)与"技"(循环实现)并重的课程理念。
二、学情分析
1.认知基础:学生已掌握while/fr循环结构,能用循环实现累加、累乘等简单操作,但对"递推"这种基于前项计算后项的动态依赖关系缺乏认知;对斐波那契数列的数学背景陌生;对"数组/列表存储中间结果"的需求感知不足。
2.能力特点:对故事化问题兴趣浓厚,具备初步的数据观察与归纳能力,适合在"图示解读→手动填表→规律猜想→算法验证"的渐进式探究中建构递推思维。
3.学习障碍预测:难以将"前两个月的数量之和"的自然语言描述转化为F[n] = F[n-1] + F[n-2]的数学表达式;对列表索引(如F[1]代表1月)与循环变量(如n从3开始)的对应关系易混淆;对"为何必须从第3个月开始循环"的逻辑起点理解不深。
三、教学目标(对应核心素养)
1.计算思维:通过兔子增长问题的表格推演,能描述递推算法"设初值、建循环、用前项求后项"的三步结构,理解中间结果存储的必要性。
2.信息意识:感知数据规模(计算12个月 vs 计算24个月)对递推效率的影响,体会算法复杂度随数据量线性增长,理解选择合适的终止条件的重要性。
3.数字化学习与创新:能用列表存储每月兔子数量,通过循环结构自动计算并填写表格,尝试修改初始条件(如初始2对兔子)观察结果变化,体验参数化算法的灵活性。
4.信息社会责任:认识到"递推思想"是问题分解的重要策略,理解"从小规模做起、逐步扩大"是解决复杂问题的通用工程思维,养成"观察-归纳-验证"的科学探究习惯。
四、教学重难点
重点:理解递推算法"前项推导后项"的核心思想,掌握F[n] = F[n-1] + F[n-2]的递推公式与fr n in range(3, 13):的循环实现。
难点:理解列表索引与月份序号的偏移关系(F[0]存1月数据还是F[1]存1月数据);掌握循环起始点为3的逻辑依据(需前两项已知);区分递推与通项公式的本质差异。
五、教学准备
教师准备:教学课件、兔子繁殖图示动画、学习单(含12个月数据追踪表、递推算法描述填空、Pythn程序补全)、Pythn程序(兔子递推.py、初始值修改测试.py、跳台阶拓展.py)。
学生准备:记录本、复习循环结构,思考"如何用循环计算数列第n项"。
六、教学过程
环节一:情境导入,故事激趣(3分钟)
活动1:兔子农场的秘密
动画激趣:播放兔子繁殖图示动画(1月1对小兔→2月1对大兔→3月2对→4月3对→5月5对),提问:"猜猜12月有几对?"
认知冲突:学生凭直觉猜测(可能猜20、30),教师不公布答案,设悬念:"今天用递推算法精确计算,答案可能让你惊讶!"
目标揭示:"这种'本月=前两月之和'的增长规律,藏着算法的大智慧!"
设计意图:以动态图示激活形象思维,制造猜测偏差激发精确计算需求,自然引出递推算法主题。
环节二:问题分析,手动填表(8分钟)
活动2:当一回农场统计员
1.数据读取(2分钟)
课件展示:兔子繁殖静态图,标注每月小兔对数、大兔对数、总数。
提问引导:"3月为什么有2对?"(2月的1对大兔生了1对小兔)"4月为什么有3对?"(2月的大兔再生1对,3月的小兔长大成大兔)
学习单任务一:学生观察图示,在学习单上填写1-5月的小兔、大兔、总数。
2.规律猜想(3分钟)
小组讨论:"5个月的数据看,总数有什么规律?"(1,1,2,3,5)"6月多少对?"(8对,因为3+5)"7月呢?"(13对,5+8)
教师点拨:"从3月开始,每个月总数=前两个月总数之和,这就是递推规律。"
3.完整填充(3分钟)
学习单任务二:学生根据规律,手动填写6-12月的兔子总数,验证是否得到8,13,21,34,55,89,144。
关键追问:"1月和2月的数据怎么来的?"(初始条件,题目给定)"没有这两个数,能算3月吗?"(不能)
设计意图:通过手动填表将抽象繁殖过程数据化、可视化,在观察-猜想-验证中自主发现递推规律,明确初始条件的必要性,为算法抽象奠定基础。
环节三:规律抽象,算法描述(10分钟)
活动3:从数字到符号表达
1.符号化表达(3分钟)
教师示范:引入符号F[n]表示第n月总数,板书:
F[1] = 1
F[2] = 1
F[3] = F[2] + F[1] = 1+1 = 2
F[4] = F[3] + F[2] = 2+1 = 3
学习单任务三:学生模仿写出F[5]到F[12]的表达式,理解"F[n] = F[n-1] + F[n-2]"的通用形式。
2.算法步骤提炼(4分钟)
师生共建:板书递推算法四步法:
第1步:设初值F[1]=1, F[2]=1(存储初始条件)
第2步:建循环fr n in range(3, 13):(从第3月算到第12月)
第3步:递推F[n] = F[n-1] + F[n-2](用前两项算当前项)
第4步:输出print(F[12])(获取最终结果)
关键提问:"循环为何从3开始?"(1、2月已知,无需计算)"range(3,13)包含13吗?"(不包含,到12月止)
3.Pythn列表对应(3分钟)
数据结构设计:"这么多F[n],用什么存?"(列表)"F[1]存在哪个位置?"(索引0还是1?)
两种方案对比:
方案A:F[0]存1月,F[1]存2月,递推式为F[n-1] = F[n-2] + F[n-3](易混淆)
方案B:F[1]存1月(列表先填占位符),递推式为F[n] = F[n-1] + F[n-2](更清晰)
推荐方案B:代码演示F = [0, 1, 1] # F[0]不用,F[1]=1, F[2]=1
fr n in range(3, 13):
F.append(F[n-1] + F[n-2]) # 自动扩展列表
设计意图:通过符号化抽象将自然语言规律转化为数学表达式,重点攻克循环起始点与列表索引的难点,理解列表存储中间结果的必要性,实现"算法→数据结构"的认知跃升。
环节四:程序验证,代码实现(10分钟)
活动4:让递推算起来
1.代码阅读(4分钟)
教师演示:打开Pythn,逐行解释:
# 方法1:用列表存储
F = [0, 1, 1] # 初始化列表,F[1]=1, F[2]=1
fr n in range(3, 13): # 从3月到12月
F.append(F[n-1] + F[n-2]) # 递推公式,自动追加
print('12月兔子对数:', F[12]) # 输出144
# 方法2:用三个变量滚动(优化空间)
a, b = 1, 1 # a=前前项, b=前项
fr n in range(3, 13): # 循环10次
c = a + b # 当前项
a, b = b, c # 滚动更新
print('12月兔子对数:', c) # 输出144
关键强调:F.append()自动扩展列表;方法二空间更省,只用3个变量。
2.运行观察(3分钟)
学习单任务四:学生运行程序,在循环体内插入print(f'第{n}月: {F[n]}'),观察每月数据生成过程,与手动填表结果交叉验证。
调试技巧:若F = [1, 1],F.append(F[1]+F[0])会算错,需强调索引与月份的偏移关系。
3.参数修改验证(3分钟)
学生实践:修改初始条件:"如果1月有2对小兔,2月有3对大兔,递推规律会变吗?"(规律不变,初值变)
代码修改:将F = [0, 1, 1]改为F = [0, 2, 3],观察12月结果是否变化。
规律迁移:提问:"兔子问题会算了,斐波那契数列F[1]=1, F[2]=1, F[n]=F[n-1]+F[n-2]会吗?"(完全等价)
设计意图:通过代码实现与手动追踪的双向验证,强化递推算法的正确性;通过列表存储与变量滚动两种实现,渗透空间复杂度意识;通过修改初始条件,理解递推的通用性,实现算法复用。
环节五:规律总结,算法命名(5分钟)
活动5:认识斐波那契
1.算法命名(2分钟)
文化链接:"这个兔子问题是由意大利数学家斐波那契在1202年提出的,所以数列叫斐波那契数列,比《孙子算经》晚900年,但中国数学家更早发现类似规律。"
学习单任务五:学生写下"斐波那契数列"关键词,标注"从第3项起,每项等于前两项之和"。
2.递推思想提炼(3分钟)
师生共识:板书"递推算法 = 初始条件 + 递推关系 + 终止条件"
生活举例:"生活中还有递推吗?"(楼梯踏步——当前步=前两步之和;树木分枝——每年新枝=老枝+前年生枝)渗透算法普适性。
口诀记忆:"递推递推,推着前进,前两项推后一项"。
设计意图:通过文化溯源赋予算法历史厚重感,通过结构提炼将具体案例升华为通用算法范式,通过生活联想拓展算法应用视野,深化"算法源于生活又服务于生活"的认知。
环节六:总结作业,拓展挑战(4分钟)
活动6:要点回顾与跳台阶
1.要点回顾:学生总结递推"三要素"(初值、公式、循环),教师强调"列表存储中间结果"的重要性。
2.拓展提升:课件展示"兔子跳台阶"问题:"一次跳1级或2级,8级台阶几种跳法?"
3.任务布置:
必做:完成学习单"斐波那契数列计算",求第15项。
选做(二选一):
A. 研究类: "跳台阶"问题的递推规律是F[n]=F[n-1]+F[n-2](最后一步跳1级或2级),用程序计算10级台阶几种跳法。
B. 文化类: 查阅资料,撰写150字介绍"斐波那契数列在自然界中的应用"(如向日葵种子排列、花瓣数目)。
设计意图:必做巩固递推计算能力,选做A实现问题迁移,选做B渗透STSE教育,保持学习的延续性与跨学科整合。
七、板书设计
第22课 兔子增长有规律(1)
递推算法 = 初值 + 循环
兔子问题:
F[1]=1, F[2]=1
F[n]=F[n-1]+F[n-2]
手动填表:
1,1,2,3,5,8...144
Pythn实现:
F = [0,1,1]
fr n in range(3,13):
F.append(F[n-1]+F[n-2])
文化:斐波那契数列
八、作业设计
必做作业: 用Pythn计算斐波那契数列第20项(提示:修改range终点),并思考"计算F[100]会慢吗?为什么?"(递推无重复计算,比递归快)
选做作业(二选一):
A. 应用类: "跳台阶"问题——8级台阶,一次1级或2级,用递推算法计算有多少种跳法(答案34,是斐波那契数列)。
B. 研究类: 撰写150字介绍"斐波那契数列在自然界、艺术、股市中的应用案例"。
九、教学评价设计
评价维度
评价指标
评价工具
评价主体
算法理解
能写出递推公式并说明前三项来源
课堂问答+学习单任务三
教师观察+自评
数据追踪
能准确填写12个月数据表
学习单任务二
教师批改+互评
程序实现
能用列表或变量实现递推计算
课堂实践+学习单任务四
教师评价
迁移应用
能说出跳台阶问题的递推关系
拓展讨论
教师评价+互评
十、教学反思要点
1.列表索引的混淆问题:学生易混淆F[n]与第n月对应关系。需准备"索引贴纸",让学生把月份数字贴在列表对应位置,建立可视化映射 。也可在代码中用F[n] = ...注释标注"第n月"。
2.循环起点的顽固错误:部分学生可能从n=1或n=2开始循环,导致F[n-2]越界。需准备错误示范代码,故意让n=1时F[-1]报错,让学生诊断错误,强化"从第3项开始 "的记忆。
3.空间优化的认知梯度:列表法直观但占空间,变量滚动法抽象但高效。对学困生只要求掌握列表法,对学优生引导理解"变量滚动=只保留必要历史状态",渗透动态规划思想。
4.时间分配的弹性控制:环节三"规律抽象"可能因学生理解速度差异而超时。需准备"斐波那契数列计算器"网页工具,快速验证学生猜想,将时间留给算法设计而非重复计算。
5.生成性资源的深度利用:收集学生"跳台阶"问题的不同建模方式(如F[0]=1, F[1]=1或F[1]=1, F[2]=2),下节课开展"初值定义的合理性辩论",深化对初始条件敏感性的理解。
学科网(北京)股份有限公司
$