摘要:
该小学信息科技课件聚焦“比较交换找最值”,通过生活中找最高身高、最低价格商品等实例导入,引导学生从实物卡片操作(A卡记录当前最大数,循环比较)到增加B卡记录编号,逐步过渡到用Python列表程序验证,构建找最大数算法的思维支架。
其亮点在于以“生活情境-实物探究-程序实现”递进式教学,通过小组合作操作卡片培养计算思维(算法步骤、循环操作),用Python列表代码(如box = [24,91,...])验证算法提升数字化学习能力。智慧挑战题强化步骤理解,学生能在实践中掌握算法逻辑,教师可借助活动设计和练习题高效教学。
内容正文:
第5单元 把数据排列有序
比较交换找最值
第16课
人教版·五年级
学习目标
01
课堂导入
02
新知探究
03
知识总结
04
智慧挑战
05
兴趣园地
06
目录
CONTENTS
2
PART 1
学习目标
了解在一组无序数中找出最大数的基本步骤,
并能辨认其中的循环操作。
学习目标
分析、描述找出最大数的算法,体验用程序
验证算法的一般过程。
PART 2
课堂导入
课堂导入
在日常生活中,我们常常遇到找出最大数或最小数的问题,如找出身高最高的人、找出跑步最快的人、找出最大的水果、找出年龄最小的人、找出同款价格最低的商品等。
你知道哪些与“最值”有关的事情?
比较与交换
PART 3
新知探求
新知探究
学习活动1
活动1:从5张数值卡片中找出最大值
新知探究
学习活动1 从5张数值卡片中找出最大值
从5张数值卡中找出最大数
桌上有5个信封,编号分别为 1、2、3、4、5,每个信封里装有一张卡片,卡片上写着一个大于0的数,请找出其中的最大数。
以小组合作探究的方式,找出解决问题的算法,并描述算法的基本步骤。
新知探究
活动规则:
每次只能打开一个信封,查看卡片上的数后把卡片放回原信封内,才能继续打开另外一个信封,查看卡片上的数。
活动要求:
学习活动1 从5张数值卡片中找出最大值
讨论
1.用自己的语言描述要解决的问题。
2.其中的关键规则是什么?
新知探究
活动步骤描述
第 1 步:准备一张新卡片,称为 A 卡,用来记录查找过程中的最大数。
第 2 步:打开第一个信封,查看卡片上的数并记录在 A 卡上。
学习活动1 从5张数值卡片中找出最大值
第 3 步:打开第二个信封,查看卡片上的数并与 A 卡上的数比较,如果这个数比 A 卡上的数大,那么把 A 卡上的数更新成这个数,否则不更新。
第 4 步:用同样的方法,依次打开第三个、第四个、第五个信封,查看卡片上的数,并与 A 卡上的数比较,决定是否更新 A 卡上的数。
第 5 步:最后,A 卡上的数就是最大数。
在 A 卡上记录 0
进一步观察:
第4步:对每个信封做第 2 步的操作。(循环结构)
新知探究
补充流程图
第 1 步:在 A 卡上记录 0
第 2 步:按顺序打开一个信封,查看卡片上的数,把这个数与 A 卡上的数比较。如果比 A 卡上记录的数大,那么把 A 卡上的数更新成这个数,否则不更新。
学习活动1 从5张数值卡片中找出最大值
算法描述:
第 3 步:对每个信封做第 2 步的操作。
第 4 步:最后,A 卡上的数就是最大数。
更新A卡上的数
输出A卡记录的数
新知探究
进一步探究:找出最大数+记录所在的信封
方法提示:增加一张新的卡片,称为 B 卡,用来记录信封的编号
1.记录的内容为( )和( )。A卡记录( ),先在上面写上( ),B卡记录A卡上的数所在的( )。
2.比较与交换:打开信封,查看卡片上的数,把这个数与( )的数比较。如果比( )的数大,那么就把( )的数更新成这个数,再把信封编号记录在( )上。否则不改变。
学习活动1 从5张数值卡片中找出最大值
思考:在寻找最大数的过程中,一共要循环多少次?也就是说,要做多少次“比较两个数大小”的操作?如果是 5 000 个数呢?
A卡
B卡
最大值
0
编号
A卡
A卡
A卡
B卡
循环次数为数字的(个数)次(A初始值为0时),或(个数-1)次(A初始值为第一个数时)
新知探究
学习活动2
活动2:验证找出最大数的算法
新知探究
学习活动2 验证找出最大数的算法
通过查找列表中的最大数,利用循环结构实现查找最大数的算法。
验证找出最大数的算法
1. 认识 Python 中的列表
在 Python 中,列表是一种常见的数据序列,用于存储一系列数据。
列表使用方括号[ ]来把数据放入其中,每个数据之间用英文逗号“,” 分隔。
例如,下面的语句可以创建一个包含 5 个数的列表。
# 创建一个包含 5 个数的列表
box = [24, 91, 42, 108, 35]
列表数据的表示和引用从 0 开始,而不是从 1 开始。
例如,在以上的 box 列表中,box[0] 表示列表的第1个数24,box[1]表示第二个数91。
利用len( )函数可以获取列表中的数据个数。
例如,利用下面的赋值语句, 可以用变量cc保存box列表中的数据个数,即5。
cc = len(box)
新知探究
学习活动2 验证找出最大数的算法
验证找出最大数的算法
2. 程序实现与验证
运行下列程序,分析程序与算法的关系。
在 while 循环中,使用条件语句 if 来比较,当前数 box[i] 的值是否大于已经找到的最大数a。如果是,就将a的值更新为当前数 box[i] 的值。
通过循环操作逐个查找,找出列表中的最大数并更新到a中。
控制变量i,从1变化到等于cc的值(数据个数)时,结束循环。
PART 4
知识总结
知识总结
描述找出最大数的算法
用自然语言进行描述
验证找出最大数的算法
用Python语言进行列表循环
用流程图描述找出最大数的算法
循环进行(比较+交换)
PART 5
智慧挑战
2.小红用程序找出最大数时,发现程序总是漏掉最后一个数。这可能是因为:
A. 循环次数太少,没有比较最后一个数
B. 程序多比较了一次
C. 没有设置初始最大值
D. 程序用了随机数
1.小明有一组身高数据(单位:厘米):145, 132, 168, 155, 174。他想要找出最高的身高,正确的第一步是:
A. 直接猜一个数
B. 先随便选一个数作为“当前最高”,比如第一个数145
C. 把所有的数加起来
D. 从最小的数开始比较
智慧挑战
智慧挑战
解析:找最大数时,我们通常先假设第一个数为“当前最高”,然后依次与其他数比较。这样做可以避免直接猜测或遗漏,是算法中常用的初始步骤。
答案:B
解析:如果循环次数设置错误,比如该比较5个数却只循环了4次,就会漏掉最后一个数。确保循环次数与数字个数匹配是算法正确运行的关键。
答案:A
PART 6
兴趣园地
兴趣园地
找出最小值
算法思路:
先写上第一个数,并依次与后面的数进行比较,当被比较的数小于记录数时,更新记录的数,直到所有数比较完成。
利用以下程序找到列表box中的最小数,请补充代码。
box=[75,33,98,6,87,63,22,51,12,40]
cc=len(box)
a =________
i=1
while i<cc:
if box[i]____a:
a=box[i]
i=________
print('最小数为:',a)
#输出找到的最小数
#用cc保存box列表中数据的个数
#用a保存当前最小数,初值设为第一个数
#循环变量初始值设为1
#用循环逐个比较列表中的数
#如果当前数小于a的值
#更新a的值
#循环控制变量增加1
box[0]
<
i+1
谢谢
下节课见!
Thanks!
人教版·五年级
$