内容正文:
《比较交换找最值》教学设计
教材版本:义务教育信息科技课程资源(五年级)
课时安排:1课时(40分钟)
授课对象:五年级学生
一、教材分析
本课是五年级第五单元起始课,基于2022年版课标"身边的算法"模块,聚焦无序数据中的最值查找算法。教材以"信封找最大数"游戏为载体,引导学生经历"手动操作→算法抽象→流程图描述→程序验证"的完整计算思维过程。本课首次系统引入列表(list)数据结构与while循环+if分支的复合结构,让学生理解"记录、比较、交换"是数据处理的基本操作,为后续"排序算法"奠定思维基础,体现"科"(算法原理)与"技"(编程实现)并重的课程理念。
二、学情分析
1.认知基础:学生已掌握while循环与if分支语法,能编写简单程序,但对"列表索引""算法优化(减少循环次数)"等进阶概念缺乏系统认知。
2.能力特点:对"找最高、最便宜"等生活化任务熟悉,具备初步的模拟操作与逻辑推理能力,适合在"游戏-抽象-验证"的探究链中建构算法思维。
3.学习障碍预测:难以理解bx[i]列表索引的零基特性;混淆a = bx[i](赋值)与bx[i] > a(比较)的执行时机;对"循环次数=数据个数" vs "循环次数=数据个数-1"的优化逻辑理解不深。
三、教学目标(对应核心素养)
1.计算思维:通过信封游戏,能描述"设初始值→逐个比较→更新记录→循环完成"的最值查找算法,理解循环与分支的嵌套执行逻辑。
2.信息意识:感知列表结构在批量存储数据中的优势,理解索引是访问有序数据的通用方法。
3.数字化学习与创新:能阅读并补全while循环+if分支的复合程序,通过运行验证算法正确性,尝试修改程序找最小值。
4.信息社会责任:认识到最值算法在信息筛选、决策支持中的普适价值,养成"先设计算法,再编写程序"的工程习惯。
四、教学重难点
重点:理解最值查找算法的核心步骤(记录、比较、更新),掌握while循环与if分支的嵌套结构。
难点:理解列表索引的零基特性(bx[0]是第一个数),以及i = i + 1循环控制变量的自增逻辑。
五、教学准备
教师准备:教学课件、5个信封+数字卡片(24,91,42,108,35)、流程图磁贴、Pythn程序(找最值.py)、学习单(含算法步骤表、程序填空、循环次数分析表)。
学生准备:记录本、课前思考"如何在10个不同价格中快速找出最便宜的一个"。
六、教学过程
环节一:情境导入,游戏激趣(4分钟)
活动1:信封寻宝
道具展示:教师展示5个密封信封,编号1-5,神秘提问:"哪个信封里的数最大?"
规则说明:"每次只能开1个,看完要放回去,不能同时开多个,如何找?"
认知冲突:学生凭感觉猜(开2号),教师追问:"一定是2号吗?凭什么?"引出系统性算法的必要性。
设计意图:通过实体游戏制造悬念,让学生意识到"凭感觉不可靠,必须靠算法",激发探究动机。
环节二:手动操作,算法建模(10分钟)
活动2:模拟找最大数
1.小组体验(4分钟)
分组任务:每组发5个信封,学生按规则(开→看→放回)找出最大数,记录步骤。
方法分享:邀请最快小组描述过程:"我先开1号,记住24;再开2号,91>24,记住了91..."
2.步骤提炼(3分钟)
师生共建:板书标准步骤:
(1)准备A卡:记录当前最大值
(2)开第一个:将第一个数记在A卡
(3)开下一个:比较,如果更大就更新A卡,否则不动
(4)重复:直到所有信封开完
(5)输出:A卡上的数就是最大数
3.循环识别(3分钟)
提问:"哪几步在重复?"(第3步开信封→比较→更新)
优化讨论:"如果A卡初始写0,第2步也能合并到循环中,循环次数=信封数"
对比提升:程序中初始值为第一个数,循环次数=信封数-1,更高效!
设计意图:从手动操作中抽象算法,理解"记录-比较-更新"的核心逻辑,为程序实现搭设支架。
环节三:流程图描述,结构可视化(8分钟)
活动3:算法流程图补全
1.流程图呈现(3分钟)
课件展示:半成品流程图(开始→创建列表→设a=0→i=1→菱形框(空)→输出a→结束)。
学生标注:学习单任务一:在菱形框中填写"i <= 5?",在循环体内填写"比较→更新→i=i+1"。
2.零基索引铺垫(3分钟)
提问:"程序中bx[0]对应哪个信封?"(1号信封)
口诀强化:"列表下标从0起,0号就是第一个。"
对比分析:手动开1-5号对应程序访问bx[0]到bx[4]。
3.程序结构识别(2分钟)
学习单任务二:在流程图上用红笔圈出外层while循环和内层if分支,理解嵌套结构。
设计意图:将操作步骤转化为图形化流程图,重点突破索引零基与嵌套结构两个难点。
环节四:程序验证,代码解读(12分钟)
活动4:让算法跑起来
1.列表认识(3分钟)
教师演示:输入bx = [24, 91, 42, 108, 35],解释方括号与逗号。
索引体验:输入bx[0]、bx[4],观察返回值,理解越界错误(bx[5]会报错)。
len()函数:输入len(bx),验证返回值为5。
2.程序补全(5分钟)
学习单任务三:补全程序关键行:
bx = [24, 91, 42, 108, 35]
cc = len(bx)
a = bx[0] # 初始值为第一个数
i = 1 # 循环变量从1开始
while i < cc: # 循环条件
if bx[i] > a:
a = bx[i] # 更新最大值
i = i + 1 # 循环变量自增
print('最大数为:', a)
分层支持:对困难学生提供代码填空(如bx[___]),对学优生要求注释每行作用。
3.运行调试(4分钟)
学生运行:观察输出"最大数为:108"。
循环追踪:教师用调试模式(或print插入)展示i从1→4的变化过程:
i=1: bx[1]=91>24 → a=91
i=2: bx[2]=42<91 → a不变
i=3: bx[3]=108>91 → a=108
i=4: bx[4]=35<108 → a不变
优化发现:提问:"循环了几次?"(4次)"为什么比5个信封少1次?"(初始值已占1次)
设计意图:通过代码补全、运行验证、循环追踪三步,让学生深度理解列表操作与嵌套执行逻辑。
环节五:拓展深化,举一反三(5分钟)
活动5:找最小值挑战
1.问题转化(2分钟)
提问:"如何改程序找最小数?"(改>为<)
学习单任务四:学生独立修改并运行,验证结果是否为24。
2.算法泛化(3分钟)
头脑风暴:最值算法在生活中应用:
找出班级最高分
选出超市最低价商品
监测最高温天气
筛选最短时间路线
核心提炼:只要是无序数据集合,都可套用此算法。
设计意图:通过变式训练强化算法迁移能力,从特殊案例上升到一般模型,培养抽象思维。
环节六:课堂总结,分层作业(1分钟)
活动6:总结与作业
1.要点回顾:学生齐读"最值算法歌":列表存数据,a存初始值,while循环跑,if比较妙,i自增别忘掉,最大最小都找到!
2.作业布置:
必做:完成学习单"找出10个随机数中的最小值"流程图与代码补全。
选做(二选一):
A. 修改程序找出第二大的数(提示:需两个变量a1,a2)。
B. 思考:如果数据有10000个,循环会不会太慢?有没有更快方法?(预习排序算法)
设计意图:口诀强化算法结构,分层作业兼顾基础巩固与高阶挑战。
七、板书设计
第16课 比较交换找最值
信封游戏 → 列表算法
算法四步:
① 设a = 第一个数
② while i < 个数:
③ if bx[i] > a:
a = bx[i]
④ i = i + 1
⑤ 输出a
循环次数:个数-1(优化!)
列表索引:从0开始(bx[0])
嵌套结构:while套if
八、作业设计
必做作业:随机生成10个数(如[67, 23, 89, 12, 45, 90, 34, 56, 78, 9]),画出找最小值的流程图,并补全程序代码(将>改为<)。
选做作业(二选一):
A. 挑战类:找出列表中第二大的数(需设两个变量max1和max2,并更新逻辑)。
B. 研究类:查阅资料,了解"选择排序"算法如何利用"找最值"思想对列表完全排序。
九、教学评价设计
评价维度
评价指标
评价工具
评价主体
算法理解
能描述找最值的四步算法
课堂发言+学习单
教师观察+自评
程序实现
能补全并运行最值程序
学习单任务三
教师评价+互评
结构识别
能标注while-if嵌套结构
学习单任务二
教师批改
迁移能力
能修改程序找最小值
拓展任务
教师评价
十、教学反思要点
1.列表索引难点:学生易混淆bx[i]与i的关系,需用"信封号是i-1,列表下标是i"的口诀强化零基概念。
2.循环次数优化:"循环次数=个数-1"的优化逻辑是认知跳跃点,需用"初始已占1个,只需比剩余"的实物演示(5个信封,只需开4次)辅助理解。
3.时间分配:环节四"程序验证"易超时,可准备"预装代码+注释填空"模式,降低输入时间,确保有充足时间调试追踪。
4.差异化支持:对编程困难学生,提供"程序拼摆卡"(代码行剪成条,排序粘贴),对学优生引导思考"一次循环同时找最大最小"(双变量法)。
5.生成性资源:收集学生"找第二大数"的不同策略(如先找最大再排除),作为下节课"选择排序"的导入素材。
学科网(北京)股份有限公司
$