内容正文:
null
比较交换找最值
第16课
第五单元
把数据排列有序
目录/CONTENTS
Part 01
找出水果的最大重量
Part 02
描述找出的具体流程
Part 03
验证找出最大值的算法
Part 04
课堂总结与拓展提升
情景导入
“水果之王”争霸赛
金秋十月,学校一年一度的“水果之王”争霸赛开始了!今年比赛格外特别,不是比谁长得好看,也不是比谁更好吃,而是比谁的“体重”最重
五个水果家族的“小代表”来到现场,分别是:
苹果家族的“红将军”
橙子家族的“橙王子”
葡萄家族的“紫精灵”
菠萝家族的“刺头大王”
西瓜家族的“绿巨人”
它们都觉得自己是“水果之王”,谁也不服谁!于是,裁判老师想了
个公平的办法
金秋十月,学校一年一度的“水果之王”争霸赛开始了!今年比赛格外特别—不是比谁长得好看,也不是比谁更好吃,而是比谁的“体重”最重
五个水果家族的“小代表”来到现场,分别是:苹果家族的“红将军”、橘子家族的“橙王子”、葡萄家族的“紫精灵”、菠萝家族的“刺头大王”、西瓜家族的“绿巨人”
它们都觉得自己是“水果之王”,谁也不服谁!于是,裁判老师想了个公平的办法
过渡:到底是什么公平的办法呢?接下来我们一起去看看!
找出水果的最
大 重 量
PART 01
最大重量判定规则
下面有五个信封,每个信封都藏着一张写着数字的‘体重卡’,代表这个水果的重量。但是规则很严格!
找出水果的最大重量
不能同时打开两个信封查看“体重卡”里面的数字。
看完“体重卡”的数字后,必须把信封恢复原样,才能继续打开另一个信封
可借助空白的卡片记录查找过程中水果的最大重量
最大重量判定规则如下:
下面有五个信封,每个信封都藏着一张写着数字的‘体重卡’,代表这个水果的重量。但是规则很严格!
第一,不能同时打开两个信封查看“体重卡”里面的数字;
第二,看完“体重卡”的数字后,必须把信封回复原样,才能继续打开另一个信封
最后,可借助空白的卡片记录查找过程中水果的最大重量
过渡:但是我们这里有五种水果,空白的卡片只能记录一个水果的重量,你有什么好方法使得这张空白的卡片上面的数字就是某个水果最大的重量嘛?(邀请同学分析)
找出水果的最大重量
信封一
23.678kg
23.678kg
信封二
33.538kg
33.538kg
空白卡片
比如我们打开第一个信封,发现里面的数字是:23.678kg。那么此时我们的空白卡片上记录的数字是多少?(邀请学生回答)
没错,应该记录的数字是23.678kg
在看完第一个信封的数字后,原封放回原位,打开第二个信封,发现第二个信封的数字是33.538kg,这个时候空白卡片要记录的数字是哪一个数字呢?说说你的想法(邀请同学回答)
这位同学的思路非常清晰,我们需要将空白卡片的数字更新为比原来重量还要大的数字,也就是要将23.678kg更新为33.538kg。
那假设我们打开的第二个信封,里面的体重卡记录的数字是10.234kg,空白卡片的数字还需要更新嘛?为什么?(邀请同学回答)
过渡:相信通过刚才的简单讲解,同学们都明白了这个规则,那么下面我们一起以小组为单位,找出这五个水果中,最大的重量是多少吧!
找出水果的最大重量
任务目标
以小组为单位,利用“水果争霸赛”程序找出五大水果家族的最大重量,并记录到活动探究单上。
文件位置
1、学生文件 -- 1、水果争霸赛【程序体验】--index .html
以小组为单位,利用“水果争霸赛”程序找出五大水果家族的最大重量,并记录到活动探究单上。
请同学们打开1、学生文件 -- 1、水果争霸赛【程序体验】--index .html 程序开始体验吧!(学生体验)
找出水果的最大重量
打开信封1;体重卡显示的数字:95g;
记录到空白卡片的数字是:95g;
145g
打开信封2;体重卡显示的数字:75g;
是否更换空白卡的数字?否(填是/否)
记录到空白卡片的数字是:95g;
打开信封3;体重卡显示的数字:50g;
是否更换空白卡的数字?否(填是/否)
记录到空白卡片的数字是:95g;
打开信封4;体重卡显示的数字:115g;
是否更换空白卡的数字?是(填是/否)
记录到空白卡片的数字是:115g;
打开信封5;体重卡显示的数字:145g;
是否更换空白卡的数字?是(填是/否)
记录到空白卡片的数字是:145g;
时间到,哪个小组的同学来分享自己本组的探究结果?(邀请小组同学上台分享并简单点评)
老师来分享自己的探究结果,在一开始的时候,打开信封1,体重卡显示的数字:95g;所以记录到空白卡片的数字是:95g;
接着打开信封2;体重卡显示的数字:75g;这个时候我们是否更换空白卡的数字?(邀请同学回答)不需要更换,所以空白卡片的数字还是95g;
然后打开信封3;体重卡显示的数字:50g;这个时候我们是否更换空白卡的数字?(邀请同学回答)也是不需要更换,所以空白卡片的数字还是95g;
继续打开信封4;这个时候体重卡显示的数字:115g;空白卡的数字是否需要更换呢?(邀请同学回答)没错,因为115比95还要大,所以空白卡片的数字就更新成了115g;
最后打开打开信封5;体重卡显示的数字:145g;空白卡的数字是否需要更换呢?(邀请同学回答)没错,因为145比115还要大,所以最后空白卡片的数字是:145g;
所以最上面五个信封的数字进行比较,我们已经找出了水果的最大重量是多少?(邀请同学回答)
过渡:这是我们用人类的思维进行分析,那么如何将这个过程描述成计算机也能够理解呢?
描述找出的具
体 流 程
PART 02
第二步
打开第一个信封,查看体重卡上的数并记录在A卡上。
第三步
打开第二个信封,查看体重卡上的数并与A卡上的数比较,若比A卡上的数大,则把A卡上的数更新成这个数,否则不更新
第四步
用同样的方法,依次打开第三个、第四个、第五个信封,查看体重卡上的数,并与A卡上的数比较,决定是否更新A卡上的数。
第五步
最后,A卡上的数就是五大水果家族中,重量最大的体重值。
描述找出的具体流程
第一步:准备一张空白卡片,称为A卡,用来记录查找过程中水果的最大重量,并在卡上记录0
第一步:第一步:准备一张空白卡片,称为A卡,用来记录查找过程中水果的最大重量,并在卡上记录0。
第二步:打开第一个信封,查看体重卡上的数并记录在A卡上。
第三步:打开第二个信封,查看体重卡上的数并与A卡上的数比较,若比A卡上的数大,则把A卡上的数更新成这个数,否则不更新
第四步:用同样的方法,依次打开第三个、第四个、第五个信封,查看体重卡上的数,并与A卡上的数比较,决定是否更新A卡上的数。
第五步:最后,A卡上的数就是五大水果家族中,重量最大的体重值。
通过观察对比我们可以发现,从第三步开始就是类似的操作,查看体重卡的数字并决定是否更新,对于这种不断重复的操作,我们可以使用什么结构来表示呢?(邀请同学回答)
没错!看来这个同学对循环结构理解得非常透彻,对于需要不断重复的操作,我们可以用循环结构来表示
过渡:那么下面我们根据分析的过程,将该过程整理成流程图吧!
描述找出的具体流程
任务目标
根据过程描述分析,将找出五大水果家族最大体重值的流程图补充完成
文件位置
1、学生文件--2、绘制流程图【画流程图】--绘制流程图.doc
根据过程描述分析,将找出五大水果家族最大体重值的流程图补充完成
下面请同学们打开1、学生文件--2、绘制流程图【画流程图】--绘制流程图.doc文件,开始将这个流程图补充完整吧!(学生实践)
描述找出的具体流程
开 始
在A卡记录0
有未打开的信封吗?
打开下一个信封
结束
输出A卡记录的数
是
是
否
否
信封中的数大于A卡的数?
更新A卡上的数
思考:
如果要记录最大重量的水果所在的信封编号,应该如何完善流程图呢?
可以用一张新卡片记录最大重量的水果所在的信封编号
时间到,哪个同学来分享自己绘制的流程图呢?(邀请同学回答并简单点评)
所以第二个菱形框填写的判断条件应该是?(信封中的数大于A卡的数?)
如果是的话,应该进行什么操作?(更新A卡上的数)
如果这个时候不仅要记录最大水果的重量,还要记录最大重量的水果所在的信封编号,应该如何完善流程图呢?(邀请同学回答)
我们可以用一张新卡片记录最大重量的水果所在的信封编号
过渡:那么流程图又需要在哪里补充条件呢?
描述找出的具体流程
开 始
在A卡记录0
有未打开的信封吗?
打开下一个信封
结 束
输出A卡记录的数
是
是
否
否
信封中的数大于A卡的数?
更新A卡上的数
更新B卡信封编号
想要在记录水果重量的同时记录该水果的信封编号,我们只需要“在更新A卡上的数”这个流程后面增加什么内容?(邀请同学回答)
没错,想要记录最重水果的编号,只需要增加“更新B卡信封编号”这个流程即可。
过渡:既然我们已经将整个过程描述成了计算机可以理解的流程图,那么下面我们一起用程序来验证我们的算法吧!
验证找出最大值的 算 法
PART 03
问题分析一
我们发现,一开始信封就写好了五大水果家族的体重,在程序中如何用代码一次性记录五大水果家族的体重呢?
验证找出最大值的算法
列表
含义:在Python中,列表是一种常见的数据序列,用于存储一系列数据。
语法:列表使用方括号[]来把数据放入其中,每个数据之间用英文逗号“,”分隔。
如:box = [24,91,42,108,35]
列表数据的表示和引用从0开始,而不是从1开始。
如box [0]表示列表的第1个数24,box [1]表示第二个数91
len()函数可以获取列表中的数据个数
如 a = len(box ) #5
表示创建一个包含5个数的列表,且列表的名称为box
我们发现,一开始信封就写好了五大水果家族的体重,在程序中如何用代码一次性记录五大水果家族的体重呢?(邀请同学说说自己的想法)
有同学说到可以使用变量,没错,变量也是可以用来存储数据,但是我们今天会认识一个比变量更加强大的数据类型,它就是列表
简单来说,它是变量的加强版,可以用来存储一系列的数据;既然是变量的加强版,所以在语法上还是有些许区别
列表使用方括号[]来把数据放入其中,每个数据之间用英文逗号“,”分隔
如:box = [24,91,42,108,35],哪个同学来说说你从这段代码里知道了什么信息?比如名字,数据内容,长度等等(邀请同学回答)
这段代码表示的是创建一个包含5个数的列表,且列表的名称为box,具体的数据分别是24,91,42,108,35.
那么问题来了,一个方括号包含了这么多数据,我想要取出具体的数据用,该如何表达呢?比如我想取出24,谁来说说自己的看法?(邀请同学回答)
刚才听了几个同学的答案,都非常有想法,这里有个坑,就是列表数据的表示和引用从0开始,而不是从1开始。
如box[0]表示列表的第1个数24,box[1]表示第二个数91。所以我要是想取108 的话,应该如何表示呢?(box[3])
此外,我们还可以使用len()函数可以获取列表中的数据个数,比如a = len(box)最终输出的结果就是5.表示这个列表的长度就是5
过渡:了解了这么多,一起通过闯关游戏来检验你们对列表的掌握程度吧!
验证找出最大值的算法
任务目标
打开“列表大闯关”程序,通过几道练习题来检验自己对列表知识的掌握程度
文件位置
1、学生文件 -- 3、列表大闯关【闯关游戏】--index.html
打开“列表大闯关”程序,通过几道练习题来检验自己对列表知识的掌握程度
请同学们打开1、学生文件 -- 3、列表大闯关【闯关游戏】--index.html 程序开始体验吧!(学生实践,老师简单进行总结)
过渡:在找出五大水果家族最大重量的游戏中,我们已经解决的第一个问题,下面来看看第二个问题
问题分析二
打开信封查看里面的体重卡时,我们需要通过对比来更新空白卡A卡上面的数字,并且不断重复,直到所有的信封都被打开为止
验证找出最大值的算法
while循环
含义:实现算法的循环结构。
语法:
while 判断条件:
语句组
当循环次数不确定时,可根据条件判断
当条件成立时,执行条件后的语句;
当条件不成立时,结束循环。
打开信封查看里面的体重卡时,我们需要通过对比来更新空白卡A卡上面的数字,并且不断重复,直到所有的信封都被打开为止,这个操作步骤我们可以使用什么结构来表示呢?(邀请同学回答)我们可以利用前面学习的while循环。其目的是实现算法的循环结构,一般语法是while 判断条件 语句组
并且根据这个语法格式我们可以知道当循环次数不确定时,可根据条件判断当条件成立时,执行条件后的语句;当条件不成立时,结束循环。
过渡:我们在了解了这两种语法之后,一起来验证五大水果家族最大重量的算法吧!
验证找出最大值的算法
任务目标
利用海龟编辑器打开“最大值算法”程序,体验找出最大值的算法,并完成活动探究单的内容
文件位置
1、学生文件 -- 4、最大值算法【程序体验】-- 最大值算法.py
利用海龟编辑器打开“最大值算法”程序,体验找出最大值的算法,并完成活动探究单的内容
请同学们打开1、学生文件 -- 4、最大值算法【程序体验】-- 最大值算法.py 程序开始体验吧!(学生体验)
验证找出最大值的算法
程序中,定义的列表名称是
box
代码cc=len(box ) 表示的含义是:
使用len函数获取box列表的长度,并将长度赋值到变量cc中
if box [i] > a:
a = box [i]
这段代码的作用是:
如果当前值(box[i])比a存储的值还要大,就将a的值更新最当前值(box[i]),以确保a存储的值一直是最大的
拓展:尝试更新列表中的数字,使得输出的最大值是42
box=[15, 75, 15, 95, 60]
在while循环中,使用条件语句if来比较,当前数box [i]的值是否大于最大数a。如果是,将α的值更新为当前数box [i]的值。通过循环操作逐个查找,找出列表中的最大数并更新到a中。
时间到,哪个同学来说说程序中,定义的列表名称是?(邀请同学回答并简单点评-box)
代码cc=len(box ) 表示的含义是什么呢?(邀请同学回答并简单点评-使用len函数获取box列表的长度,并将长度赋值到变量cc中)
if box [i] > a: a = box [i] 这段代码的作用是?
(邀请同学回答并简单点评-如果当前值(box[i])比a存储的值还要大,就将a的值更新最当前值(box[i]),以确保a存储的值一直是最大的)
拓展:尝试更新列表中的数字,使得输出的最大值是42,你有什么办法呢?(邀请同学回答并简单点评-box=[15, 75, 15, 95, 60] )
因此这个算法的基本含义就是在while循环中,使用条件语句if来比较,当前数box [i]的值是否大于最大数a。如果是,将α的值更新为当前数box [i]的值。通过循环操作逐个查找,找出列表中的最大数并更新到a中。控制变量i,从1变化到等于cc的值(数据个数)时,结束循环。循环结束后,输出变量a的值,就是这个列表中的最大数。
过渡:通过今天的水果大王争霸赛,我们已经知道如何找到最大值,下面我们以及回顾整个过程吧!
课堂总结与拓
展 提 升
PART 04
算法基本思想
寻找最值的算法主要采用了记录、比较、交换以及循环判断等操作,这也是对数据进行比较运算的基本方法。
列表
1、在Python中,列表是一种常见的数据序列,用于存储一系列数据
2、列表使用方括号[]来把数据放入其中,每个数据之间用英文逗号“,”分隔。
3、列表数据的表示和引用从0开始,而不是从1开始。
课堂总结与拓展提升
While循环
含义:实现算法的循环结构。
语法:
while 判断条件:
语句组
第一,我们了解了最大值算法的基本思想,寻找最值的算法主要采用了记录、比较、交换以及循环判断等操作,这也是对数据进行比较运算的基本方法。
第二,我们学习了Python中新的数据结构:列表。
1、在Python中,列表是一种常见的数据序列,用于存储一系列数据
2、列表使用方括号[]来把数据放入其中,每个数据之间用英文逗号“,”分隔。
3、列表数据的表示和引用从0开始,而不是从1开始。
最后我们还复习了前面的while循环。它的含义是实现算法的循环结构。语法格式是while 判断条件: 语句组
拓展与提升
在前面的水果争霸比赛中,主办方决定再评选出五大水果家族中,体重最轻的水果体重,应该如何操作?
尝试修改最大值算法.py程序吧
课堂总结与拓展提升
在前面的水果争霸比赛中,主办方决定再评选出五大水果家族中,体重最轻的水果体重,应该如何操作?
尝试修改最大值算法.py程序吧
$
寻找五大水果家族最大体重数流程图分析
1、过程描述:
第一步:准备一张空白卡片,称为A卡,用来记录查找过程中水果的最大重量。
第二步:打开第一个信封,查看体重卡上的数并记录在A卡上;
第三步:打开第二个信封,查看体重卡上的数并与A卡上的数比较,若比A卡上的数大,则把A卡上的数更新成这个数,否则不更新;
第四步:用同样的方法,依次打开第三个、第四个、第五个信封,查看体重卡上的数,并与A卡上的数比较,决定是否更新A卡上的数;
(
开 始
)第五步:最后,A卡上的数就是五大水果家族中,重量最大的体重值。
2、流程图绘制
(
否
) (
否
) (
是
) (
是
) (
结 束
) (
输出A卡记录的数
) (
打开下一个信封
) (
更新A卡上的数
) (
信封中的数大于A卡的数?
) (
有未打开的信封吗?
) (
在A卡上记录0
)
学科网(北京)股份有限公司
$nullnullnull