内容正文:
《冒泡排序齐体验(1)》教学设计
教材版本:义务教育信息科技课程资源(五年级)
课时安排:1课时(40分钟)
授课对象:五年级学生
一、教材分析
本课是五年级第五单元第三课,基于2022年版课标"身边的算法"模块,学习冒泡排序算法。教材以"排队游戏"为情境,通过"相邻比较-条件交换"的模拟体验,引导学生理解"大数像泡泡一样逐步上浮"的排序思想。本课与前一课《选择排序轻松做》形成对比:选择排序是"定位选最值、一轮交换一次",冒泡排序是"相邻比大小、一轮交换多次",两者双层循环结构相似但内层逻辑不同,共同构成排序算法的认知基础,为后续学习插入排序及算法效率分析做铺垫,体现"科"(算法思想比较)与"技"(编程实现)并重的课程理念。
二、学情分析
1.认知基础:学生已掌握选择排序算法,理解双层循环的嵌套执行逻辑,但对"相邻元素比较交换"与"最值定位交换"的本质区别缺乏直观认知;能操作列表数据,但对"每轮比较次数递减"的动态过程需要具象支撑。
2.能力特点:对角色扮演类活动参与热情高,具备初步的算法追踪与流程图绘制能力,适合在"身体模拟→过程记录→算法抽象→程序验证"的沉浸式体验中建构新知。
3.学习障碍预测:易混淆冒泡排序与选择排序的"交换"差异(前者多次交换,后者每轮一次);对双层循环中内层循环j的范围(从0到n-i-1)理解困难;对"已排序区在尾部"的空间想象易错位。
三、教学目标(对应核心素养)
1.计算思维:通过排队游戏,能描述冒泡排序"相邻比较、位置交换、大数上浮"的执行过程,理解外层循环控制轮次、内层循环控制比较次数的嵌套逻辑。
2.信息意识:感知数据初始状态(如是否有序)对交换次数的影响,体会算法执行存在"最佳/最差情况",理解算法效率与数据分布的相关性。
3.数字化学习与创新:能用自然语言规范描述冒泡排序算法,补全带条件判断的双层循环流程图,并尝试修改Pythn程序实现从大到小排序。
4.信息社会责任:认识到"简单算法是复杂算法的基础",理解冒泡排序虽效率不高但思想清晰、教学价值突出,养成"由简入繁、循序渐进"的算法学习观。
四、教学重难点
重点:理解冒泡排序"每轮相邻两两比较,大数逐步上浮到正确位置"的核心思想,掌握其双层循环(外层控制轮次,内层控制比较对数)结构。
难点:理解内层循环遍历范围随轮次递增而递减的规律(第1轮比较n-1次,第2轮比较n-2次);掌握交换条件判断if data[j] > data[j+1]的精确含义。
五、教学准备
教师准备:教学课件、5-10张数值卡片(如38, 12, 96, 54, 73)、冒泡排序流程图磁贴(带双层循环及条件分支)、Pythn程序(冒泡排序.py, 选择排序对比.py)、学习单(含排队记录表、流程图补全、程序填空)。
学生准备:记录本、复习选择排序算法,思考"如何用相邻交换的方式排序"。
六、教学过程
环节一:情境导入,激发动机(3分钟)
活动1:泡泡上浮的比喻
动画激趣:播放"水泡从池底向上浮起"的动画,提问:"水泡为什么会上浮?如果让数据中的大数像泡泡一样'浮'到后面,怎么实现?"
方法征集:学生讨论(相邻比较、交换位置),教师板书关键词"相邻、比较、交换"。
目标揭示:"这种'大数冒泡'的方法就是冒泡排序,今天通过排队游戏来体验!"
设计意图:用生动的比喻激活形象思维,将物理现象迁移到算法思想,激发探究欲望。
环节二:排队模拟,体验过程(12分钟)
活动2:身体模拟冒泡排序
1.游戏准备(2分钟)
分组任务:每组5-6人,每人抽取一张数值卡片,站成一排。
角色分工:指定1人作"观察员",填写学习单任务一《排队过程记录表》。
2.规则体验(7分钟)
第1轮比较:从第1位开始,相邻两人比较卡片数,左边>右边则交换,否则不动。持续进行到队伍最右端。
观察员记录:在记录表上标注每轮"比较对数"和"最终交换次数",用☆标出本轮"冒泡"到最右侧的最大数。
第2-4轮:排除已排序的最右侧同学,重复上述规则,直到全队有序。
3.效率讨论(3分钟)
提问:"5人需几轮?每轮比较几次?"(4轮,比较次数分别为4-3-2-1)
追问:"若10人排队,第1轮比较几次?第5轮呢?"(9次,5次)
思考:"这个规律用公式怎么表达?"(第i轮比较n-i次)
设计意图:通过具身认知体验"相邻交换"与"范围递减"过程,将抽象算法转化为可感知的动作序列,为形式化描述奠定基础。
环节三:算法抽象,流程图补全(8分钟)
活动3:从动作到符号表达
1.自然语言描述(3分钟)
师生共建:板书标准步骤:
第1步:比较相邻两数,若前>后则交换,对全部n个数操作后,最大数沉到末尾。
第2步:排除末尾已排序数,对剩余数重复第1步,直到无交换发生。
学习单任务二:用100字描述冒泡排序,强调"相邻、重复、上浮"关键词。
2.流程图结构分析(3分钟)
课件展示:双层循环流程图框架(外层i从0到n-2,内层j从0到n-i-2)。
学生标注:学习单任务三:
在外层循环旁写"控制排序轮次,i标记已排序区左边界"
在内层循环旁写"控制相邻比较对,j从0到未排序区末-1"
在菱形判断框填"j < n-i-1"和"data[j] > data[j+1]"
3.交换操作对比(2分钟)
提问:"冒泡排序的交换与选择排序有何不同?"(冒泡是相邻交换,选择是定位交换)
口诀记忆:"一次冒泡多次换,选择每轮只一次"
设计意图:将身体体验升华为符号表达,通过流程图补全强化对循环范围与条件判断的精确理解,区分两种排序的本质差异。
环节四:程序验证,代码追踪(12分钟)
活动4:让冒泡排序跑起来
1.代码阅读(5分钟)
教师演示:打开Pythn,逐行解释:
data = [64, 34, 25, 12, 22, 11, 90]
n = len(data) # 7个数
i = 0 # 外层循环:轮次从0开始
while i < n - 1: # 需要n-1轮
# j是内层循环,控制相邻比较
j = 0 # 每轮从0开始
while j < n - i - 1: # 关键:比较范围随i增大而缩小
if data[j] > data[j + 1]: # 相邻比较,前>后则交换
data[j], data[j + 1] = data[j + 1], data[j] # 并行交换
j = j + 1
i = i + 1
print("排序结果:", data)
关键强调:n-i-1是未排序区右边界,每轮减1;data[j+1]是右侧相邻元素,需防索引越界。
2.运行观察(4分钟)
学习单任务四:学生在IDE中运行程序,在i=i+1前插入print(f'第{i+1}轮后:', data),观察每轮变化。
追踪任务:记录[64,34,25,12,22,11,90]第1轮的交换过程,验证是否发生4次交换。
3.代码修改验证(3分钟)
学生实践:将if data[j] > data[j+1]改为<,实现从大到小排序,测试[5,3,8,6,2]。
边界测试:输入已排序列表[1,2,3,4,5],观察程序是否执行交换(仍会遍历比较,但无实际交换)。
设计意图:通过代码逐行解读、运行追踪、条件修改三步,让学生深度理解冒泡排序的程序实现,突破内层循环范围与相邻交换的难点。
环节五:对比思辨,价值体悟(3分钟)
活动5:与选择排序的异同
1.对比表格(2分钟)
课件展示:对比表格
维度
选择排序
冒泡排序
交换方式
每轮最多1次(定位交换)
每轮最多n-i次(相邻交换)
比较范围
从未排序区找最值
相邻两两比较
已排序区
在序列前端
在序列后端
稳定性
不稳定
稳定(相等元素不交换)
2.价值讨论(1分钟)
提问:"什么时候用冒泡排序更合适?"(数据基本有序时交换次数少、教学演示时逻辑直观)
共识:"算法没有绝对好坏,理解原理比记住代码更重要。"
设计意图:通过与已知算法对比,强化认知结构差异,培养算法选择的批判性思维,深化"简单算法是复杂算法基石"的意识。
环节六:总结作业,分层拓展(2分钟)
活动6:要点回顾与任务布置
要点回顾:学生总结冒泡排序"相邻比、大数浮、范围缩"三步核心,教师强调n-i-1的范围公式。
作业布置:
必做:完成学习单"将冒泡排序改为从大到小排序",并画出对应流程图。
选做(二选一):
A.在程序中添加exchange_cunt变量,统计排序[64,34,25,12,22,11,90]的总交换次数。
B.查阅资料,了解优化冒泡排序(如添加标志位判断某轮是否发生交换,若未交换则提前结束)。
设计意图:必做巩固核心知识,选做A强化算法效率量化意识,选做B渗透算法优化思想,为后续学习做铺垫。
七、板书设计
第18课 冒泡排序齐体验(1)
冒泡排序 = 相邻比较 + 逐步上浮
手动排队:
[5人排队] 比较4次→最大数到末尾
[剩4人] 比较3次→次大数到末尾
[剩3人] 比较2次→第三大数到位
[剩2人] 比较1次→完成排序
双层循环:
while i < n-1:
j = 0
while j < n-i-1:
if data[j] > data[j+1]:
交换相邻两数
j += 1
i += 1
对比:选择排序每轮换1次
冒泡排序每轮换多次
八、作业设计
必做作业:将冒泡排序程序改为从大到小排序(提示:将>改为<),并补全流程图中判断条件与循环范围。
选做作业(二选一):
A. 效率统计类:在程序中增加exchange_cunt计数器,统计[64,34,25,12,22,11,90]的交换次数,并思考"若列表已排序,交换几次?"
B. 算法优化类:查阅资料,了解"标志位优化"的冒泡排序,用100字说明其原理(提示:若某轮无交换,则列表已有序,可提前结束)。
九、教学评价设计
评价维度
评价指标
评价工具
评价主体
算法理解
能描述冒泡排序的相邻交换与范围递减过程
学习单任务一(记录表)
教师观察+自评
流程图能力
能正确补全n-i-1和data[j]>data[j+1]
学习单任务三
教师批改+互评
程序实现
能修改条件实现逆序排序并正确运行
课堂实践+学习单
教师评价
算法思辨
能说出冒泡排序与选择排序的至少2点区别
课堂讨论
教师评价+互评
十、教学反思要点
1.内层循环范围理解:n-i-1是核心难点,需准备"未排序区动态收缩"的动画演示,强化空间想象。部分学生可能混淆j+1越界,需在流程图中用虚实线标注"对比线"。
2.与选择排序混淆:学生易将两种排序的"交换"混为一谈。需在游戏环节明确"冒泡是相邻两人商量换,选择是队长指定换"的角色扮演规则差异,并在板书中用不同颜色标注交换箭头。
3.时间分配:环节二"排队模拟"易超时,需严格控制每轮比较时间,可准备计时器,每轮限时90秒。对提前完成的小组布置"观察员分析交换次数规律"的加餐任务。
4.分层教学:对理解困难学生,提供"单步执行"的Pythn Tutr在线调试链接;对学优生引导思考"稳定排序"概念(相等元素不交换),为中学学习做铺垫。
5.生成性资源:收集学生修改的"从大到小"代码中出现的典型错误(如只改>不改j+1为j-1),作为下一课"索引边界"的辨析素材。
学科网(北京)股份有限公司
$