第10课 “韩信点兵”枚举法的实现 课件(共21张PPT)+教案+素材 六上信息科技浙教版(2023)

资源下载
  1. 二一教育资源

第10课 “韩信点兵”枚举法的实现 课件(共21张PPT)+教案+素材 六上信息科技浙教版(2023)

资源简介

中小学教育资源及组卷应用平台
第10课 “韩信点兵”枚举法的实现
教材分析
本课是《算法的效率》单元中的第3课。本课的教学内容是引导学生了解枚举法解决问题的一般过程,并且实现枚举法的程序编写与调试。
通过本课学习,学生能够了解枚举算法的基本原理,熟悉枚举算法程序设计的基本思路及程序结构特点;学会使用枚举算法解决现实生活、学习中所遇到的问题;感受枚举法的算法执行效率。
预设教学目标:
1.理解枚举法的一般过程,熟悉枚举算法程序设计的基本思路及程序结构特点;
2.实现枚举法的程序编写与调试;
3.学会使用枚举法解决现实生活、学习中所遇到的问题。
预设教学重难点:
重点:枚举法的一般过程与算法设计
难点:枚举法的程序实现
预设教学课时:
1课时
预设教学准备:
课件、课本、学生练习学案等
预设教学过程:
一、课题导入
1.同学们,今天我们来认识一个人:韩信。
你们知道他是谁吗?
不错,西汉开国功臣、军事家,汉初三杰之一。
韩信以勇敢、智慧和谋略著称,他的一生留下了许多传奇故事,其中最知名的就是“韩信点兵”。
【问题描述】
2.“韩信点兵”的故事
秦朝末年,楚汉相争。有一次韩信带领1500名将士与楚王大将李峰交战。苦战一场,楚军不敌,败退回营,汉军也死伤四五百人。
他命令士兵3人一排,结果多出2名;接着命令士兵5人一排,结果多出3名;又命令士兵7人一排,结果又多出2名。韩信马上向将士们宣布:“我军有1073名勇士,敌人不足500,我们居高临下,以众击寡,一定能打败敌人。” 汉军本来就信服自己的统帅,这一来更相信韩信是“神机妙算” ,于是士气大震,一时间旌旗摇动,鼓声喧天。汉军步步紧逼,楚军乱作一团,交战不久,楚军大败而逃。
3.教师提问,学生思考:韩信是如何知道全军人数的,鼓励他们分享自己的想法。
4.“韩信点兵”不仅是一个历史故事,还是一个有趣的猜数游戏。如何来解决这个问题呢?
我们可以按照解决问题的四步骤来一步步解决。
问题描述—抽象建模—算法设计—验证与优化算法
刚才我们看到的韩信点兵的故事就是这里的步骤1:问题描述,接下来我们就一起来进行抽象建模。
二、新知建构
【抽象建模】
1.抽象建模是需要抓住问题的关键要素,忽略与问题求解无关的要素。
谁来说一说韩信点兵这个问题的关键要素是哪些?
学生回答,课件展示。
2.课件出示表格
对照表格和我们找出来的关键要素,先来看求解目标是什么?(求剩余士兵的数量)
那已知条件是什么?(1500将士,死伤四五百人)
由这个已知条件,我们能推断出剩余士兵数量的范围是什么?(1000-1100)
那剩余士兵的数量关系就是:3人一排,多出2人;5人一排,多出3人;7人一排,多出2人。
3. 韩信点兵的数量关系可以表示为数的除法运算。
3人一排,结果多出2名:那就是剩余士兵的数量除以3,余数为2,这样来描述同意吗?
用这个算式来表示可以吗?
这里的“□”表示什么?(剩余士兵的数量)
÷3就是问题描述中的3人一排,余数为2就表示多出的2名士兵,△代表的是一共排了几排对吧。
4.3人一排多出2名可以这样来表示,那5人一排多出3名怎么表示?谁来说?
7人一排多出2人呢?(学生回答,课件出示)
5.刚才说了,“□”表示的是剩余士兵的数量,也就是我们要求解的目标,可以将其设为变量x。
那这三个算式就可以抽象为
x÷3=△……2
x÷5=○……2
x÷7=◇……2
x有没有取值范围?它的范围是?(1000-1100)
那我们可以表述为:1000<=x<=1100
6.通过我们的分析,对这个问题进行抽象建模,我们得出“韩信点兵”的计算模型。
【算法设计】
1.根据抽象与建模,我们来进一步解决问题。
课件出示表格:根据模型中x的取值范围,我们知道x的值应该从1000-1100,满足的条件就是我们抽象出来判断的三个条件,而且这三个条件必须同时满足。
1000满足条件吗?不满足,然后判断哪个数?不错,下一个数是1001,让x+1,然后再次判断是否满足条件,不满足,然后继续判断下一个。
2.看这个问题的解决方法和鸡兔同笼的方法是否差不多?是的,这就是我们学过的枚举法。
3.枚举法解决问题有两个关键:一是:确定枚举的范围;二是正确解的判断条件。在这题里,枚举的范围是?(1000<=x<=1100)正确解的判断条件是?(“除以3余数为2,除以5余数为3,除以7余数为2” 三个条件同时满足?)
x依次取1000~1100范围内的值,采用循环结构;判断条件“除以3余数为2,除以5余数为3,除以7余数为2” 是否同时满足,可以采用分支结构。
4.有了这样的分析,我们一起来完成韩信点兵枚举算法的流程图。
任务一:完善流程图
请你操作鼠标拖动下方的5个流程图按钮,完善“韩信点兵”枚举法流程图算法。
学生操作。
5.反馈交流:
首先x要有一个初始值:x1000
然后看这个x的值是否在枚举范围内?:xx+1
如果不在枚举范围内就直接结束,如果在枚举范围内就去判断它是够同时满足这三个条件,满足的情况下(是),那么就把满足条件的x值输出,不管满不满足都要继续枚举下一个值。
【算法的程序实现】
1.算法中的三个条件同时满足,我们把x÷3余2称为求余数的运算,在python中,求余数的运算符为“%”,即表达式 x%y 的功能是:“用x除以y,取它的余数”。
如:5%2 的结果是 1;
因为5÷2=2 …… 1,1是5÷2的余数,所以5%2=1;
8%5=?
8÷5=1…… 3,所以8%5=3;
10%5=?
2.知道了求余数的运算符“%”后,我们再来看这三个条件
x÷3余2如何来表达?x%3==2
x÷5余3如何来表达?7÷3余2如何来表达?
3.要判断多个条件是否同时满足,Python中如何来表示?(and)
x÷3余2,x÷5余3,x÷7余2 三个条件同时满足就可表示为:
x%3==2 and x%5==3 and x%7==2
4.知道了程序中的表达,那我们来按照流程图算法完成程序实现:
首先将1000赋值给变量x:x=1000
当x<=1100的时候:while x<=1100:
如果x÷3余2,x÷5余3,x÷7余2 三个条件同时满足
if x%3==2 and x%5==3 and x%7==2
输出x的值:print(x)
枚举下一个:x=x+1
5. 任务二:完善程序
对照左边的流程图,请你拖动方框中的代码到Python语言编写的程序中缺失的地方,将代码补充完整补充完整。
6.反馈交流
7.揭示课题
今天我们通过分析,抽象建模,使用枚举法解决了“韩信点兵”的问题。
出示课题:“韩信点兵”枚举法的实现。
【综合练习】
任务三:编写程序
假如“韩信点兵”的问题描述修改为:韩信带领1500名士兵去打仗,战后死伤一二百人。剩下士兵中,他命令士兵3人一排,结果多出1人;5人一排,结果多出4人;7人一排,结果多出3人。问剩下的士兵一共多少人?
有困难的同学选“枚举法1” 来完成
有能力的同学选“枚举法2” 来完成
反馈交流。
三、课堂小结
分享交流:枚举法解决问题的方法。枚举法是一种很常用的算法,在生活中的很多问题上都用的到。
枚举法的两个关键。
“韩信点兵”枚举法两个关键的呈现。
【课后反思】
21世纪教育网 www.21cnjy.com 精品试卷·第 2 页 (共 2 页)
21世纪教育网(www.21cnjy.com)(共21张PPT)
在楚汉之争的过程中,韩信以其杰出的军事才能横扫魏、赵、代、燕、齐诸国,并数次以兵支援刘邦;
垓下之战,布五军阵诱敌,击破项羽军,最终迫使项羽于汉五年(前202年)自刎于乌江。
战后,韩信因功徙封楚王。
韩信
韩信以勇敢、智慧和谋略著称,他的一生留下了许多传奇故事,其中最知名的就是“韩信点兵”。
问题描述

西汉开国功臣、军事家,汉初三杰之一。
秦朝末年,楚汉相争。有一次韩信带领1500名将士与楚王大将李峰交战。苦战一场,楚军不敌,败退回营,汉军也死伤四五百人。
于是韩信整顿兵马返回大本营,当行至一山坡,忽有后军来报,说有楚军骑兵追来。只见远方尘土飞扬,杀身震天,汉军本来已十分疲惫,这时队伍喧哗一片,韩信兵马到坡顶,见来敌不足五百骑,便急速点兵迎敌。
韩信点兵
他命令士兵3人一排,结果多出2名;接着命令士兵5人一排,结果多出3名;又命令士兵7人一排,结果又多出2名。韩信马上向将士们宣布:“我军有1073名勇士,敌人不足500,我们居高临下,以众击寡,一定能打败敌人。” 汉军本来就信服自己的统帅,这一来更相信韩信是“神机妙算” ,于是士气大震,一时间旌旗摇动,鼓声喧天。汉军步步紧逼,楚军乱作一团,交战不久,楚军大败而逃。
问题描述

韩信点兵
”韩信点兵“故事
是一个有趣的猜数游戏。
问题描述

如何来解决这个问题呢?
01
问题
描述
02
抽象与建模
03
设计
算法
04
验证与优化算法
韩信点兵
抓住问题的关键要素,忽略与问题求解无关的要素。
抽象与建模

秦朝末年,楚汉相争。有一次韩信带领1500名将士与楚王大将李峰交战。苦战一场,楚军不敌,败退回营,汉军也死伤四五百人。
于是韩信整顿兵马返回大本营,当行至一山坡,忽有后军来报,说有楚军骑兵追来。只见远方尘土飞扬,杀身震天,汉军本来已十分疲惫,这时队伍喧哗一片,韩信兵马到坡顶,见来敌不足五百骑,便急速点兵迎敌。
他命令士兵3人一排,结果多出2名;接着命令士兵5人一排,结果多出3名;又命令士兵7人一排,结果又多出2名。韩信马上向将士们宣布:“我军有1073名勇士,敌人不足500,我们居高临下,以众击寡,一定能打败敌人。” 汉军本来就信服自己的统帅,这一来更相信韩信是“神机妙算” ,于是士气大震,一时间旌旗摇动,鼓声喧天。汉军步步紧逼,楚军乱作一团,交战不久,楚军大败而逃。
1500名将士
死伤四五百人
3人一排
5人一排
7人一排
多出2名
多出2名
多出3名
已知条件
求解目标
数量关系
抽象与建模

1500名将士
死伤四五百人
3人一排,多出2人
5人一排,多出3人
7人一排,多出2人
求剩余士兵的数量?
剩余士兵数量的范围?
1000-1100
韩信点兵的数量关系可以表示为数的除法运算。
抽象与建模

÷ 3 =
……
2
3人一排,结果多出2名;
表示什么?
剩余的士兵总数
3人一排
多出的2名
一共排了多少排
韩信点兵的过程可以表示为数的除法运算。
抽象与建模

÷ 3 =
……
2
3人一排,结果多出2名;
5人一排,结果多出3名;
÷ 5 =
……
3
7人一排,结果多出2名;
÷ 7 =
……
3
抽象与建模

指的是剩余的士兵总数
这就是我们要求的量,可以将其设为变量x。
x÷3= ……2
x÷5= ……3
x÷7= ……2
x的取值范围?
1000-1100
抽象与建模

x÷3= ……2
x÷5= ……3
x÷7= ……2
x的取值范围:1000~1100
1000<=x<=1100
抽象与建模

x÷3= ……2
x÷5= ……3
x÷7= ……2
(1000<=x<=1100)
▲“韩信点兵”计算模型
算法设计

x的值 满足条件 是否满足条件
1000
1100
判断
“除以3余数为2,除以5余数为3,除以7余数为2”
三个条件同时满足?
判断的条件
×
1001
×
1002
×
……
……
1073

……
……
1099
×
×
x+1
算法设计

关键
正确解的判断条件
确定枚举的范围
1000<=x<=1100
“除以3余数为2,除以5余数为3,除以7余数为2”
三个条件同时满足?
任务一:完善流程图
请你操作鼠标拖动下方的5个流程图按钮,完善“韩信点兵”枚举法流程图算法。
算法设计

请你操作鼠标拖动下方的5个流程图按钮,完善“韩信点兵”枚举法流程图算法。
在枚举范围内吗?
X要有一个初始值
判断是否满足条件?
算法的程序实现

x÷3余2,x÷5余3,x÷7余2 三个条件
同时满足
x÷3余2
取余:求余数的运算符为“%”
表达式 x%y 的功能是:“用x除以y,取它的余数”
如:5%2 的结果是 1;
5÷2=2 …… 1
1是5÷2的余数
8%5=
8÷5=1…… 3
3是8÷5的余数

3
10%5=

10÷5=2…… 0
0
x%3==2
x%5==3
x%7==2
同时满足
算法的程序实现

x÷3余2,x÷5余3,x÷7余2 三个条件
同时满足
要判断多个条件同时满足,需要用“and”逻辑运算符
x%3==2
x%5==3
x%7==2
同时满足
and
and
x%3==2 and x%5==3 and x%7==2
算法的程序实现

▲“韩信点兵”枚举法流程图
将1000赋值给变量x
当x<=1100的时候
如果x÷3余2,x÷5余3,x÷7余2 三个条件同时满足
循环体
缩进
任务二:完善程序
对照左边的流程图,请你拖动方框中的代码到Python语言编写的程序中缺失的地方,将代码补充完整补充完整。
执教者:
任务三:编写程序
假如“韩信点兵”的问题描述修改为:韩信带领1500名士兵去打仗,战后死伤一二百人。剩下士兵中,他命令士兵3人一排,结果多出1人;5人一排,结果多出4人;7人一排,结果多出3人。问剩下的士兵一共多少人?
▲有困难的同学选“枚举法1” 来完成
▲有能力的同学选“枚举法2” 来完成
枚举法
1.枚举法的思想是 地尝试 的解。
2.枚举法的关键是① 。
② 。
有序
每一种可能
确定枚举的范围
正确解的判断条件
“韩信点兵”枚举法
确定枚举的范围
正确解的判断条件
1000<=x<=1100
x%3==2 and x%5==3 and x%7==2

展开更多......

收起↑

资源列表