资源简介 第十课“韩信点兵”枚举法的实现一、学习内容分析本课是浙江省小学信息技术六年级上册第二单元《算法的效率》第3课。教材包括二块内容:枚举算法解决问题的一般过程,枚举法的程序实现。解决同一个问题可能会有很多种算法,不同算法的效率也有可能是不一样的,在利用算法解决问题时,要根据问题求解的需求设计出合适的算法。本章内容就是为了让学生明白不同算法效率不同。本单元以“韩信点兵”为例,让学生用枚举法、筛选法、同余法实现,并且能依照算法的描述和问题实例评估算法的效率。二、学情分析本课学习对象为六年级的学生,在前面的9节课程里,学生已经掌握了算法解决问题的一般过程,并能用python对算法进行执行、验证。他们了解算法的基本特征以及基本结构。同时,他们善于合作,乐于表达,初步具备用枚举算法解决问题的能,但独立算法设计以及用python的实现算法还是有一定难度。学习目标教学目标 核心素养指向1.理解枚举算法的思想,掌握枚举法解决问题的一般过程。 2.通过使用枚举算法解决“韩信点兵”问题,掌握枚举算法的程序实现。 【信息意识】 在完成任务过程中,有意识地寻求恰当的算法解决问题,了解枚举算法的优势和局限。 【计算思维】 理解流程图的方式,描述求解简单问题的算法,并对算法的正确性与执行效率进行讨论和辨析。四、教学重难点教学重点:用枚举法实现“韩信点兵”的算法。教学难点:利用循环结构和分支结构对“韩信点兵”进行python的算法实现。通过小组合作、实践探究、分析归纳辅以教师指导等多种方式逐一突破。五、课前准备学习资源:教学课件,教学视频六、学习过程(一)视频引入 激发兴趣学习内容与活动 设计意图视频引入,揭示课题 观看视频,了解“韩信点兵”的典故。 韩信将1500名将士与楚王大将李锋交战双方大战一场,战后,死伤四五百人。韩信于是命令士兵3人一排,结果多出2名;接着,他又命令士兵5人一排,结果多出3名;再命令士兵7人一排,结果又多出2名。韩信马上向将士们宣布:我军共有1073名勇士。 提问:假如是你来“点兵”,你会采用哪种算法? 以“韩信点兵”的典故引入,引导学生思考为什么能这么快计算出结果,思考用什么算法解决问题。(二)抽象与建立模型学习内容与活动 设计意图小组讨论,抽象“韩信点兵”关键要素: 总人数:1500 死伤人数:四五百人 三人一排余二人 五人一排余三人 七人一排余2人 归纳:韩信点兵问题,实际就是在1000~1100范围内,找出满足条件的数。 学习活动一:用表示士兵可能的人数,列出所有满足条件的数。 (3)由抽象出的表格,进一步抽象规则。 当X=1000时,条件“x除以3余2、x除以5余3、x除以7余2 “是否同时满足? 当X=1001时,条件“x除以3余2、x除以5余3、x除以7余2 “是否同时满足? …… 当X=1100时,条件“x除以3余2、x除以5余3、x除以7余2” 是否同时满足? (4)想一想:“韩信点兵”问题适合用什么算法解决? 引导学生对枚举法的范围、顺序、条件进行抽象建模。 枚举范围:1000-1100 枚举顺序:从1000到1100 枚举条件:同时满足x除以3余2、x除以5余3、x除以7余2三个条件。 抽象韩信点兵关键要素,以及分析典故里的变量,让学生在后面能比较轻松建立模型。 利用关键要素,建立出枚举法的模型。(三)探究过程,算法设计学习内容与活动 设计意图1.用枚举法,分析“韩信点兵”的算法结构 用条件循环实现:X依次取值1000-1100。 用分支结构判断:“条件x除以3余2、x除以5余3、x除以7余2”是否同时满足。 2.学习活动二:小组讨论,并尝试完善算法流程图。 用枚举法分析“韩信点兵”的算法结构,并尝试进行算法设计。完整逻辑链,突破本课的难点。(四)算法的程序实现学习内容与活动 设计意图学习小锦囊,将以下循环条件和分支判断的步骤转化为python语句。 2.学习活动三:尝试编写程序,运行并调试程序。 强调: 求余数的运算符为“%”,例如x%y,表示x除以y的余数多少。 迁移应用:如何用枚举法解决修改后的“韩信点兵”?修改程序,并运行。 用两个步骤,分层次尝试算法的实现,根据流程图,一一对应写出python程序。 通过练习,巩固枚举法的代码实现。(五)梳理小结,拓展应用学习内容与活动 设计意图请学生说一说用枚举算法解决问题的一般过程。 (2)教师总结本课知识点 梳理总结本节课的知识点,明确收获,找出不足,引导学生课后再进一步学习。板书设计:《韩信点兵枚举法的实现》(共15张PPT)“韩信点兵”枚举算法的实现《信息科技》六年级上册故事导入问题描述:韩信将1500名将士与楚王大将李锋交战双方大战一场,战后,死伤四五百人。韩信让士兵3人一排,结果多出2名;他让士兵5人一排,结果多出3名;让士兵7人一排,结果又多出2名。假如你来点兵,你将采用何种算法?问题描述:请你圈出问题中的关键要素。韩信点兵韩信将1500名将士与楚王大将李锋交战双方大战一场,战后,死伤四五百人。韩信让士兵3人一排,结果多出2名;他让士兵5人一排,结果多出3名;让士兵7人一排,结果又多出2名。韩信是怎么算出来的呢?抽象与建模:韩信点兵问题,实际就是在1000~1100范围内,找出满足条件的数。抽象与建模除3 除5 除7 是否满足条件余 余 余用 表示士兵可能的人数,列出所有满足条件的数.学习活动一:在1000~1100范围内变量X抽象与建模当X=1000时,条件“x除以3余2、x除以5余3、x除以7余2 “是否同时满足?当X=1001时,条件“x除以3余2、x除以5余3、x除以7余2 “是否同时满足?……当X=1100时,条件“x除以3余2、x除以5余3、x除以7余2” 是否同时满足?抽象与建模想一想:“韩信点兵”问题适合用什么算法解决?枚举算法枚举范围:枚举条件:1000 <= X <= 1100x除以3余2、x除以5余3、x除以7余2 三个条件。同时满足循环结构分支结构枚举顺序:10001100算法设计开始X←1000x<1100 x除以3余2,且x除以5余3,且x除以7余2?x←x+1输出X的值结束否是是否小组讨论,并尝试完善右边的算法流程图。学习活动二:算法程序实现开始X←1000x<1100 x除以3余2,且x除以5余3,且x除以7余2?x←x+1输出X的值结束否是是否while x<1101 :if x%3==2 and x%5==3 and x%7==2:print(“剩余的士兵数为:”,X)小锦囊:要判断多个条件是否同时满足,需要用“and”逻辑运算符。算法的程序实现x=1000while x < 1101 :if x%3==2 and x %5==3 and x%7==2:print( “剩余的士兵数为:”, x )x=x+1尝试编写以下程序,运行并调试程序。学习活动三:迁移应用。假如:韩信将1500名将士与楚王大将李锋交战双方大战一场,战后,死伤一二百人。韩信于是命令士兵3人一排,结果多出1名;接着,他又命令士兵5人一排,结果多出4名;再命令士兵7人一排,结果又多出3名。问剩下的士兵一共多少人?如何修改程序?python语言编写的程序:x=1300while x < 1401 :if x%3==1 and x %5==4 and x%7==3 :print( “剩余的士兵数为:”, x )x=x+1课堂总结1、枚举法解决问题的一般过程确定范围、确定顺序、确定满足正确解的条件2、用枚举法解决“韩信点兵”问题的程序实现。下课啦!请同学们关闭电脑,椅子归位,排队有秩序离开微机室。 展开更多...... 收起↑ 资源列表 10.“韩信点兵”枚举法的实现.docx 10.“韩信点兵”枚举法的实现.pptx 韩信点兵动画.mp4