内容正文:
《鸡兔同笼巧计算》教学设计
教材版本:义务教育信息科技课程资源(五年级)
课时安排:1课时(40分钟)
授课对象:五年级学生
一、教材分析
本课是五年级第六单元第一课,基于2022年版课标"身边的算法"模块,以"鸡兔同笼"经典问题为载体,系统学习枚举遍历算法思想。教材从《孙子算经》原题出发,通过"缩小规模→假设法→枚举遍历→程序验证"的探究路径,引导学生理解"逐个尝试、逐一验证"的算法本质。本课是算法思想的"启蒙课",既衔接前期"排序算法"中的循环结构应用,又为后续"数据查找"、"递推算法"等奠定基础,重点在于让学生体验"人脑思维捷径"与"计算机枚举笨办法"的差异,理解"算法设计需适配计算工具特性",体现"科"(算法思想)与"技"(循环实现)并重的课程理念。
二、学情分析
1.认知基础:学生已掌握while循环、if条件判断及基本算术运算,能理解双层循环的嵌套逻辑,但对"枚举法"这种暴力遍历思想缺乏系统认知;对"假设法"等数学解题策略有一定了解,但尚未建立"将解题步骤转化为算法流程"的意识。
2.能力特点:对古典趣题兴趣浓厚,具备初步的数学建模与逻辑推理能力,适合在"数学解法→表格枚举→算法抽象→程序验证"的对比探究中建构计算思维。
3.学习障碍预测:难以理解"枚举法虽笨但适合计算机"的算法哲学;对循环变量与问题变量的对应关系(如a代表鸡的数量)易混淆;对while True无限循环与break终止条件的执行逻辑理解不深;易将算法流程图与程序代码机械割裂,无法实现双向映射。
三、教学目标(对应核心素养)
1.计算思维:通过鸡兔同笼问题的枚举求解,能描述"初始化→计算→判断→调整→重复"的遍历循环结构,理解枚举法是"逐个验证、直到满足条件"的自动化求解策略。
2.信息意识:感知数据规模(35头 vs 6头)对枚举效率的影响,体会"简化问题规模"是算法调试的重要策略,理解算法设计需权衡问题复杂度与执行成本。
3.数字化学习与创新:能补全鸡兔同笼算法流程图,阅读并运行Pythn程序,尝试修改初始值与目标值解决同类问题,初步体验算法复用与参数化。
4.信息社会责任:认识到"人脑的聪明捷径"(如假设法)与计算机的笨功夫(枚举法)各有价值,理解算法选择需考虑执行主体特性,养成"先分析再设计、先验证再应用"的严谨工程态度。
四、教学重难点
重点:理解枚举法"遍历所有可能、逐个验证条件"的核心思想,掌握其循环判断结构(while循环+if条件+break终止)。
难点:理解while True无限循环的执行逻辑与break的跳出机制;掌握循环变量调整策略(a=a-1, b=b+1)与问题空间缩小的关系。
五、教学准备
教师准备:教学课件、《孙子算经》鸡兔同笼原题卡片、学习单(含6头18足追踪表、35头94足流程图补全、程序填空)、Pythn程序(枚举法鸡兔同笼.py、假设法对比.py)、韩信点兵拓展阅读材料。
学生准备:记录本、复习while循环与if语句,思考"如何用循环列出所有可能性"。
六、教学过程
环节一:情境导入,经典激趣(3分钟)
活动1:《孙子算经》穿越
故事导入:教师出示竹简图片,讲述:“1500年前,《孙子算经》记载了一道难题——35个头、94只脚,鸡兔各几头?古人用算盘可算,我们用算法更快!”
方法征集:提问:“你会解吗?”学生可能提出假设法、方程法,教师肯定并板书“人脑聪明法:假设、方程”。
目标揭示:“今天让计算机用‘笨办法’——枚举遍历法,一秒内试遍所有可能!”
设计意图:以古典数学文化激发民族自豪感与探究欲,制造“人脑捷径 vs 计算机笨法”的认知冲突,引出枚举法主题。
环节二:缩小规模,假设法铺垫(8分钟)
活动2:从6头18足入手
1.问题简化(2分钟)
课件展示:原题35头94足→ 简化版6头18足,提问:“从简单入手,如何解?”
学习单任务一:学生独立思考,在学习单上写下思路。
2.假设法探究(4分钟)
方法1:假设全是兔
教师引导:"6只全是兔,几脚?"(24)"实际18脚,多几脚?"(6)"多出的脚是鸡兔替换造成的,一只兔换鸡少2脚,要换几只?"(6÷2=3只鸡)
板书公式:鸡 = (总头数×4 - 总脚数) ÷ 2
方法2:假设全是鸡
学生模仿推导:“6只全是鸡,12脚,少6脚,鸡换兔添2脚,要换3只兔”
板书公式:兔 = (总脚数 - 总头数×2) ÷ 2
3.枚举法伏笔(2分钟)
追问:“如果让计算机'试',它怎么试?”(从0只鸡6只兔开始,1只鸡5只兔,2只鸡4只兔...)“需要试几次?”(7次)“这就是枚举遍历!”设计意图:通过简化案例降低认知门槛,用假设法激活数学思维,为枚举法提供对比参照,让学生理解"聪明法快但有门槛,笨办法慢却通用"。
环节三:枚举遍历,表格追踪(10分钟)
活动3:让计算机"试"出来
1.枚举过程模拟(5分钟)
课件动画:动态展示a(鸡)从6→0,b(兔)从0→6,c(脚)从12→24的变化过程。
学习单任务二:学生填写枚举追踪表:
鸡a
兔b
脚c=a×2+b×4
是否18足?
6
0
12
×
5
1
14
×
4
2
16
×
3
3
18
√
2.算法步骤抽象(3分钟)
师生共建:板书枚举法四步法:
第1步:初始化a=6, b=0(从全是鸡开始试)
第2步:计算c = a×2 + b×4
第3步:判断if c == 18输出结果并结束,否则继续
第4步:调整a = a-1, b = b+1(减1只鸡、加1只兔),返回第2步
3.循环结构对应(2分钟)
提问:"哪几步在重复?"(第2-4步)"重复到何时停?"(c==18时)"这是哪种循环?"(条件循环,不确定次数)
学习单任务三:在学习单上圈出"循环体"部分,标注"反复执行"。
设计意图:通过表格追踪将抽象枚举过程可视化、可记录,精准建构循环变量与问题变量的映射,为流程图与代码实现奠定认知基础,突破"枚举逻辑→循环结构"的理解鸿沟。
环节四:流程图补全,算法抽象(7分钟)
活动4:从文字到符号
1.流程图框架分析(3分钟)
课件展示:鸡兔同笼流程图框架(含开始、初始化、判断框、处理框、结束)。
学生标注:学习单任务四:
在矩形处理框填c = a*2 + b*4和a = a-1, b = b+1
在菱形判断框填c == 18?
在输出框填输出鸡a只,兔b只
在循环箭头旁写“否,继续遍历”
2.终止条件精讲(2分钟)
关键提问:"如果数据无解(如5头20足),循环会停吗?"(不会,陷入死循环)
优化讨论:"如何改进?"(增加if a < 0: print('无解'); break),渗透边界条件保护思想。
口诀记忆:"无限循环要break,条件判断保安全"。
3.与假设法对比(2分钟)
表格对比:课件展示
维度
假设法
枚举法
思路
数学推理,一步到位
逐个尝试,逐步逼近
适用
人脑,规律明确
计算机,通用性强
速度
快((1))
慢((n))但可靠
设计意图:通过流程图补全,实现自然语言→图形符号的抽象升级,重点突破while True与break的执行逻辑,通过对比强化"算法适配执行者"的核心思想。
环节五:程序验证,人机对比(8分钟)
活动5:让算法跑起来
1.代码阅读(4分钟)
教师演示:打开Pythn,逐行解释:
# 35头94足原版
a = 35 # 鸡的数量初始值
b = 0 # 兔的数量初始值
while True: # 无限循环开始
c = a*2 + b*4 # 计算脚数
if c == 94: # 判断是否符合条件
print('鸡的数量:', a) # 输出
print('兔的数量:', b) # 输出
break # 终止循环
else:
a = a - 1 # 鸡减1
b = b + 1 # 兔加1
关键强调:while True是无条件无限循环,全靠break跳出;a,b是状态变量,每轮迭代更新。
2.运行观察(2分钟)
学习单任务五:学生运行程序,记录循环次数(第几次a=23时跳出),验证是否23次。
调试技巧:在c = a*2 + b*4后加print(f'第{35-a+1}次尝试:鸡{a},兔{b},脚{c}'),实时观察遍历过程。
3.参数修改验证(2分钟)
学生实践:将a = 35, b = 0改为a = 6, b = 0,目标94改为18,运行验证简化版。
边界测试:测试5头20足无解情况,观察程序是否卡死,引导学生添加保护条件:
if a < 0:
print('无解')
break
设计意图:通过代码逐行解读→运行观察→参数修改,实现算法到程序的精准映射,重点突破while True+break的执行机制,培养边界测试与异常处理意识。
环节六:总结拓展,经典传承(4分钟)
活动6:算法哲学与韩信点兵
1.要点回顾(2分钟)
学生总结:枚举法"三步核心"(设初值、算结果、调变量)和"一关键"(break终止)。
算法哲学:教师提炼:“人算用巧思,机算用遍历,各美其美,美美与共。”
2.拓展提升(2分钟)
韩信点兵引入:课件展示拓展1:“1500人战死四五百,3人一排多2人,5人一排多4人,7人一排多6人,韩信如何算出1049人?”
任务布置:“这是中国剩余定理的雏形,课后尝试设计遍历算法:让计算机从1000到1500逐个试,满足3个条件的输出。”
文化渗透:“算法不仅是技术,更是中华文明的智慧传承,《孙子算经》的枚举思想领先世界千年!”
设计意图:通过算法哲学提炼,升华对“人机差异”的理解;以韩信点兵这一更复杂的遍历问题拓展挑战,渗透中国剩余定理文化,激发民族自豪感与持续探究热情。
七、板书设计
第21课 鸡兔同笼巧计算
人脑聪明法:假设、方程
计算机笨法:枚举遍历
枚举四步法:
① 设初值 a=35, b=0
② 算脚数 c=a*2+b*4
③ 判条件 if c==94?
④ 调变量 a-1, b+1
循环结构:
while True:
if ...: break
else: 调整继续
核心:逐个试,直到对上
八、作业设计
必做作业:修改程序,解决"6头16足"的鸡兔同笼问题(提示:修改初始值和目标值),并记录循环次数。
选做作业(二选一):
A. 效率优化类:在程序中添加计数器cunt,统计解决"35头94足"需要遍历多少次,思考"为何是24次"(与数学解法的23只差1,因从0开始)。
B. 经典问题类:设计韩信点兵问题的遍历算法,用Pythn找出1000-1500之间满足"除以3余2、除以5余4、除以7余6"的数(提示:用fr n in range(1000,1501))。
九、教学评价设计
评价维度
评价指标
评价工具
评价主体
算法理解
能描述枚举法的四步流程与break作用
课堂问答+学习单任务三
教师观察+自评
流程图能力
能补全判断框与处理框的关键内容
学习单任务四
教师批改+互评
程序实现
能修改参数解决同类问题
课堂实践+学习单任务五
教师评价
文化认知
能说出枚举法的数学渊源
拓展讨论
教师评价+互评
十、教学反思要点
1.while True的理解难度:学生可能恐惧"无限循环"。需准备可视化调试工具(如Pythn Tutr),单步展示循环执行轨迹,看到break如何"刹车"。也可用fr a in range(35, -1, -1)作为过渡,理解后再引入while True。
2.数学解法与算法解法的平衡:学生可能因数学解法简单而轻视枚举法。需强**"计算机通用性":假设法只能解鸡兔同笼,枚举法可解任何同结构问题**(如"龟鹤同池"、"钱币问题"),体现算法的可迁移性。
3.循环次数的数学对应:学生不理解为何35头要试24次。需用数学归纳:从a=35到a=0共36个数,但a=0(全兔)脚数=140>94,实际在a=23时break,故循环36-23+1=14次?此处需精确计算,避免误导。应改为统计实际执行次数,用cunt变量记录,让学生运行后观察,而非理论推导。
4.生成性资源的利用:收集学生修改程序解决的同类问题(如"停车场30辆车,100个轮子,几辆汽车几辆摩托车"),作为"算法复用"的优秀案例,下节课展示,强化"改参数=解一类问题"的编程思维。
5.文化渗透的深度:学生对《孙子算经》可能无感。可播放3分钟动画短片介绍孙子算经的历史地位,或对比西方同类问题(如古希腊的"百灵鸟与兔子"),凸显中国古代算法思想的先进性,增强文化自信。
学科网(北京)股份有限公司
$