内容正文:
《选择排序轻松做》教学设计
教材版本:义务教育信息科技课程资源(五年级)
课时安排:1课时(40分钟)
授课对象:五年级学生
一、教材分析
本课是五年级第五单元第二课,基于2022年版课标"身边的算法"模块,系统学习选择排序算法。教材以"5个盒子卡片排序"为情境,引导学生经历"手动排序→算法抽象→流程图描述→程序验证"的完整过程。本课是"找最值"算法的直接应用与延伸,重点理解"逐轮选择最大(小)值并交换到正确位置"的排序思想,掌握双层循环(外层控制轮数,内层查找最值)的嵌套结构,为后续学习冒泡排序、插入排序等奠定基础,体现"科"(算法思想)与"技"(编程实现)并重的课程理念。
二、学情分析
1.认知基础:学生已掌握最值查找算法,理解while+if嵌套结构,能操作列表数据,但对"排序的轮次"与"每轮范围缩小"的动态过程缺乏系统认知。
2.能力特点:对排序任务(如排队、整理)有丰富生活经验,具备初步的逻辑推理与流程图绘制能力,适合在"手工操作→算法追踪→程序验证"的三阶探究中建构知识。
3.学习障碍预测:难以区分"选择排序"与"找最值"的细微差别(前者需交换并缩小范围);对双层循环的外层i控制起始位置、内层j遍历未排序区的逻辑易混淆;对Pythn交换语句data[i], data[max] = data[max], data[i]的并行赋值特性理解不深。
三、教学目标(对应核心素养)
1.计算思维:通过卡片排序游戏,能描述选择排序的四轮操作(找最值→交换→范围缩小→重复),理解外层循环与内层循环的嵌套执行逻辑。
2.信息意识:感知排序数据量与算法执行次数的关系(5个数需4轮,n个数需n-1轮),体会算法设计需权衡效率与可读性。
3.数字化学习与创新:能补全选择排序流程图,阅读并运行Pythn程序,尝试修改数据观察排序结果,初步体验算法实现的创造乐趣。
4.信息社会责任:认识到选择排序虽"笨"但可靠、通用,理解计算机"不怕重复、精准执行"的特点,养成"先设计再编码"的工程思维。
四、教学重难点
重点:理解选择排序"每轮从未排序区找最大数,与未排序区首元素交换,已排序区扩大"的核心思想,掌握其双层循环结构。
难点:理解外层循环变量i不仅控制轮次,还标记已排序与未排序的分界位置;掌握内层循环j的遍历范围(从i+1到末尾)。
五、教学准备
教师准备:教学课件、5个盒子+卡片(24,91,42,108,35)、流程图磁贴(双层循环)、Pythn程序(选择排序.py,srted函数.py)、学习单(含排序过程记录表、流程图补全、程序填空)。
学生准备:记录本、课前复习最值查找算法,思考"如何将5个数从小到大排好"。
六、教学过程
环节一:情境导入,激活需求(3分钟)
活动1:排序挑战
情境创设:教师展示5个乱序盒子(24,91,42,108,35),提问:"如何快速把它们从大到小排好?"
方法征集:学生回答(找最大的放前面,找第二大的放第二…),教师板书关键词"选择、交换"。
目标揭示:"这种'每轮选最大'的方法就是选择排序,今天让计算机帮我们轻松做!"
设计意图:从真实乱序问题切入,激活学生已有排序经验,自然引出选择排序主题。
环节二:手动模拟,理解过程(10分钟)
活动2:卡片选择排序体验
1.规则体验(5分钟)
分组任务:每组发5个盒子,学生按"找最大→与1号盒交换→在剩余4个盒中找最大→与2号盒交换…"规则手动排序。
过程记录:学习单任务一:填写每轮排序后盒子状态(☆标记每轮最大值)。
2.算法提炼(3分钟)
师生共建:板书标准步骤:
第1轮:在5个盒中找最大,与1号盒交换
第2轮:在剩余4个盒中找最大,与2号盒交换
第3轮:在剩余3个盒中找最大,与3号盒交换
第4轮:在剩余2个盒中找最大,与4号盒交换
第5轮:最后一个自动排好,不需操作
3.效率讨论(2分钟)
提问:"5个数需几轮?10个数呢?n个数呢?"(n-1轮)
思考:"有同学说'我一眼就能排好,计算机笨',你怎么看?"(计算机可靠、通用、可自动化)
设计意图:通过实体操作体验"逐轮选择+交换"过程,理解排序轮次与范围缩小的动态关系,为算法抽象奠定基础。
环节三:流程图表达,结构抽象(8分钟)
活动3:选择排序流程图补全
1.结构分析(3分钟)
课件展示:双层循环流程图框架(外层i从0到n-2,内层j从i+1到n-1)。
学生标注:学习单任务二:
在外层循环旁写"控制轮次,i是已排序区末尾"
在内层循环旁写"在未排序区找最大值"
在菱形框填"j < n"
2.交换操作精讲(3分钟)
语法演示:教师解释data[i], data[max] = data[max], data[i]的并行赋值原理(先算右边,再赋左边)。
对比错误:若写成data[i] = data[max]; data[max] = data[i]会怎样?(数据丢失!)
口诀记忆:"交换要并行,顺序不能乱"
3.完整流程图(2分钟)
学习单任务三:补全"输出排序后列表"的最后一个框。
设计意图:通过补全流程图,将操作过程抽象为双层循环结构,重点突破交换语法与循环范围两个难点。
环节四:程序验证,代码理解(12分钟)
活动4:让选择排序跑起来
1.代码阅读(4分钟)
教师演示:打开Pythn,逐行解释:
data = [64, 25, 12, 22, 11, 90, 88, 77, 55, 33]
n = len(data) # 10个数
i = 0 # 外层循环:从第0个位置开始
while i < n - 1: # 只需循环9轮(n-1)
max = i # 假设当前位置i是最大值
j = i + 1 # 内层循环:从i的下一个开始找
while j < n: # 在未排序区遍历
if data[j] > data[max]:
max = j # 找到更大的,更新max索引
j = j + 1 # 内层循环变量自增
if max != i: # 如果最大值不在i位置
data[i], data[max] = data[max], data[i] # 交换
i = i + 1 # 外层循环变量自增,进入下一轮
关键强调:max存的是索引,不是数值;data[max]才是数值。
2.运行观察(4分钟)
学习单任务四:学生运行程序,观察每轮排序后data列表的变化,记录交换次数。
调试技巧:在print('排序后的数:', data)前插入print(f'第{i+1}轮后:', data),追踪排序过程。
3.数据修改验证(4分钟)
学生实践:修改data = [5, 3, 8, 6, 2],运行并手动验证排序结果。
边界测试:若数据已排好序[1,2,3,4,5],程序会交换吗?(不会,if max != i判断优化)
设计意图:通过代码逐行解读、运行追踪、数据修改三步,让学生深度理解选择排序的程序实现,突破索引与交换的难点。
环节五:效率比较,算法多样性(5分钟)
活动5:srted()函数对比
1.函数演示(2分钟)
教师展示:输入srted([64,25,12,22,11]),瞬间返回排序结果。
提问:"为什么srted()这么快?"(底层用C语言、更优算法如Timsrt)
2.价值思辨(3分钟)
讨论:"既然srted()这么好,为什么还要学选择排序?"
师生共识:
理解原理:选择排序是排序算法的"第一课",理解它才能理解更复杂的算法
教学价值:它简单、直观、易实现,适合初学者
适用场景:数据量小或教学演示时,选择排序代码可读性更强
算法选择观:"没有最好的算法,只有最适合的算法"
设计意图:通过对比内置函数,引导学生辩证看待算法,理解"简单≠无用",培养算法选择的批判性思维。
环节六:总结作业,分层拓展(2分钟)
活动6:总结与任务
1.要点回顾:学生总结选择排序的三步核心(找最值、做交换、缩范围)和双层循环特点。
2.作业布置:
必做:完成学习单"将选择排序改为从小到大排序"(改>为<)。
选做(二选一):
A. 将data列表改为20个随机数,运行并记录交换次数。
B. 查阅资料,了解冒泡排序与选择排序的区别(提示:冒泡是相邻交换)。
设计意图:必做巩固核心知识,选做A强化数据规模意识,选做B为下单元铺垫,保持学习延续性。
七、板书设计
第17课 选择排序轻松做
选择排序 = 找最值 + 交换
手动排序:
第1轮:在5个中找最大→与1号交换
第2轮:在4个中找最大→与2号交换
第3轮:在3个中找最大→与3号交换
第4轮:在2个中找最大→与4号交换
双层循环:
while i < n-1:
max = i
while j < n:
if data[j] > data[max]
max = j
交换 data[i],data[max]
效率:需 n-1 轮,每轮遍历剩余数
对比:srted()更快,但选择简单
八、作业设计
必做作业:将选择排序程序改为从小到大排序(提示:将if data[j] > data[max]改为if data[j] < data[min]),并运行测试data = [5,3,8,6,2]。
选做作业(二选一):
A. 数据规模类:将data列表扩展为20个随机数(可从网络生成),运行并记录每轮排序后的列表状态,观察交换次数规律。
B. 算法研究类:查阅资料,用100字说明冒泡排序与选择排序的核心区别(提示:冒泡排序是相邻元素两两比较并交换)。
九、教学评价设计
评价维度
评价指标
评价工具
评价主体
算法理解
能描述选择排序的4轮操作过程
学习单任务一
教师观察+自评
流程图能力
能补全双层循环流程图
学习单任务二
教师批改+互评
程序实现
能运行并修改选择排序程序
学习单任务四
教师评价
算法思辨
能说出选择排序相比srted()的优势
课堂讨论
教师评价+互评
十、教学反思要点
1.双层循环理解:学生易混淆i和j的作用,需准备"i是已排序区边界,j是搜索探针"的比喻图示,贴在教室墙上强化记忆。
2.交换语句难点:data[i], data[max] = data[max], data[i]的并行赋值是易错点,需用"临时变量temp"的传统写法对比讲解,让学生理解为何Pythn语法更简洁。
3.时间分配:环节四"程序验证"易超时,可预先将代码发至学生机,学生只需补全关键行(如max = ___),减少输入时间。
4.分层教学:对理解困难学生,提供"单步调试"教学视频(用pdb或IDE调试功能),对学优生引导思考"不稳定排序"(相等元素可能交换)的概念。
5.生成性资源:收集学生"从小到大"改写的不同方案(如改>为<、改max为min、改初始值),作为下节课"算法健壮性"的辩论素材。
学科网(北京)股份有限公司
$