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