学考宝(xuekaobao.com)友情提醒:html格式不完整,如有需要请根据文末提示下载并进行二次校对Word文档。
第 9 课 《算法的评价方法》教学设计
【课标内容要求】
通过真实案例,知道算法步骤的执行次数与问题的规模有关,观察并体验采用不同算法解决同一问题时在时间效率上的差别。
【教学内容分析】
《算法的评价方法》这节课选自 2023 浙江教育出版社六年级上册第二单元。第二单元整个单元都是算法的效率,主要包含算法的多样性、算法的评价方法、“韩信点兵”枚举法、筛选法、同余法的实现,学好 本课为根据简单问题求解的需求设计出合适的算法作铺垫。
【教学目标】
1.了解好的算法,除了符合“正确性、有效性”等标准外,还需要有较高的算法运行效率。
2.通过真实案例,知道算法步骤的执行次数与问题的规模有关,估算循环执行的次数,通过修改程序统计循环语句的执行次数。
3.观察并体验采用不同算法解决同一问题时在时间效率上的差别。
重点:基于给定的算法,能针对不同的输入数据规模,估算算法中循环执行的次数。 难点:修改程序统计循环语句的执行次数。
【核心素养指向】
1.在完成任务的过程中,有意识地寻求恰当的算法解决问题,了解算法的优势和局限。(信息意识)
2.通过体验身边的算法,了解算法的特征和效率。(计算思维)
3.在问题情境中,能够利用信息科技开展数字化学习与交流,合作解决学习问题。(数字化学习与创新)
【学情分析】
本课的学习者是小学六年级的学生,学生的认知发展正处于从具象思维到抽象思维的过渡时期。学生已经知道同一问题可以存在多种算法,但对算法评价的方法并不清楚。 预测在本课的学习中,对于估算循环执行的次数,问题不大,但是在修改程序验证循环的执行次数时,学生会遇到困难。
【设计构想】
教法:如果直接采用讲解演示的方法,虽然学生也能大致了解知识点,但是会缺少很多源自身的体验与理解,缺失了从学生本位出发的思考。所以我通过创设情境,采用实验教学法,通过引导学生分析、记录、对比用顺序查找、二分查找解决猜数字游戏时的循环执行次数,并通过修改程序进行统计。在实验过程中,引导学生通过探究发现不同算法的效率是有差异的,算法运行需要的时间与待求问题的规模有关。
学法:引导学生进行主动探究与合作学习相结合的学习方法,重在引导学生学会学习。
思维导图:
【教学环境及资源准备】
硬件:多媒体计算机网络机房
软件:电子教室、顺序查找算法猜数字游戏程序、二分查找算法猜数字游戏程序资源:课件
【教学活动设计】
一、 情境导入(3 分钟)
1.课件出示童童放学回家的路线图
2.请同学们仔细观察这张图,童童的家和学校之间隔着少年宫,学校到少年宫之间有 A、B 两条路, 少年宫到家之间有 C、D、E 三条路。童童从学校到家有 6 条路可以选,分别是 A C 、A D、A E、B C、B D、B E,你觉得哪 1 条路是最优的呢?说一说你的理由。
3.学生思考回答。预设:B D 最优。
4.提问:为什么 B D 最优呢?
5.学生回答:B D 路径最短。
设计意图:通过生活中常见的路径规划的情境,让学生思考哪条路径最优,从而引出本课课题,引发学生思考,将生活中的真实情境与本课内容建立起认知关联。
二、 揭示课题(2 分钟)
1.由此可见,解决 1 个问题的算法可以有多种,不同的算法有优有劣,刚才我们以最短作为童童回家路线最优的评价标准。那么在计算机科学中怎样来评判算法的优劣呢?
2.揭题:今天我们就一起来学习第 9 课《算法评价的方法》
3.教师板书课题:算法评价的方法
4.教师讲授:好的算法首先要符合正确性和有效性要求,即能够有效解决问题,在此基础上算法执行的效率是非常重要的评判标准,如果 1 个算法执行所需要的时间更少,则被认为是更好的算法。较高的算法执行效率,即算法运行所消耗的时间较短。估算算法的运行时间,可以在问题规模相同的情况下,将算法中循环语句的执行次数作为度量标准。我们可以用正确性、有效性、执行效率 3 个方面来评估算法的好坏。今天我们就一起来研究算法运行的时间即执行效率。
5.教师板书算法评价的 3 个方面
三、 算法效率对比实验
接下来,我们试着估算一下前面学过的猜数字游戏的算法运行时间。 1.实验一:不同算法,相同规模,效率对比(25 分钟)
(1)以顺序查找为例,估算次数课件出示下图。
提问 1:前面 1 课我们学过顺序查找,用顺序查找算法在 1~100 内查找目标数 37,比较的过程是怎样的?一共需比较多少次?
1 2 3 4 … 36 37 … 99 100
cai
学生思考回答。预设: 依次将 1,2,3,…,99,100(cai)与目标数 37(da)进行比较,直到找到为止。课件出示用顺序查找算法在 1~100 内查找目标数 37 的程序。
提问 2:这个程序中的 while 语句执行了多少次呢?你是怎么想的?
学生观察思考回答。预设:37 次,猜的数字每次加 1,等到 37 时,跟目标数一致,所以循环语句也执行了 37 次。
小 结:对的。上述程 序 在执行时, 变量cai 的数 值决定了循环语句while 会执行的次数,当变量 cai 的值变为 37 时,while 语句总的执行次数为 37 次。
设计意图:从第 6 课起围绕猜数字游戏进行主题式教学,前后保持连贯性,通过主题学习,促进深度学习。学生的认知发展正处于从具象思维到抽象思维的过渡时期,通过回顾前一课内容,将旧知与新知建立关联,让学生探究发现顺序查找中 cai 的数值决定了 while 循环语句执行的次数,体现了以生为本的课堂理念。
(2)修改程序,验证预测
提问:我们能不能通过修改程序,统计 while 语句执行的次数呢?怎么修改? 学生讨论回答:增加 1 个变量来统计 while 语句的执行次数,并显示数值。
教师小结:是的,通过在循环中增加显示计次变量的指令,我们就可以清楚地看到程序循环执行的
次数,可以用这个次数来大概地评估算法的时间复杂度。
打开桌面上的顺序查找程序,尝试修改,教师巡视指导。 请学生演示讲解。
设计意图:通过阅读、理解、修改运行程序,让学生体验计算机程序,进而验证自己的预测,培养数字化学习与创新素养。
(3)以二分查找为例,估算次数
提问 1:刚才我们研究的是顺序查找,你知道猜数字游戏的另外一种查找算法是?它是一种取中间数查找的算法。那么同样是在 1~100 范围内查找数 37,查找的过程是怎样的?
课件出示二分查找过程的图示,师生共同回顾二分查找的过程。 在 1~100 范围内查找目标数 37 的过程如下所示:
1 2 … 49 50 51 … 98 99 100
cai
第一次比较:37<50,范围调整为 1~49
1 2 … 24 25 26 … 47 48 49
cai
第二次比较:37>25,范围调整为 26~49
26 27 … 36 37 38 … 47 48 49
cai
第三次比较:37=37,查找成功
学生观察思考回答。
预测:1~100 范围内的数是依次增加的,可依次取中间数来查找。先取 1~100 的中间数 50 与目标数比较,若目标数等于 50,则查找成功;若目标数小于 50,则取 1~49 的中间数 25 与目标数比较;若目标数大于 50,则取 51~100 的中间数 75 与目标数比较……如此反复,直到找到为止。
提问 2:用二分查找算法在 1~100 内查找目标数 37 的程序如图所示,这里的 while 语句执行了多少次呢?你是怎么想的?
学生观察思考回答。
预设:中间值依次取 50、25、37,也就是说循环只需执行 3 次。
设计意图:通过回顾前 1 课内容,将旧知与新知建立关联,让学生自己去发现二分查找中取中间数的次数决定了 while 循环语句执行的次数,体现了以生为本的课堂理念。
(4)修改程序,验证预测
提问:循环执行的次数是不是真如我们预测的一样呢?能不能也通过修改程序统计 while 语句执行的次数呢?
学生回答。
教师小结:是的,也可以。怎么修改?
学生讨论回答。预测:增加 1 个变量来统计 while 语句的执行次数,并显示数值。
师小结:是的,通过在循环中增加显示计次变量的指令,我们就可以清楚地看到循环执行的次数,可以用这个次数来大概地评估算法的时间复杂度。
学生尝试修改程序,教师巡视指导。请学生演示讲解或教师演示讲解。
设疑:同样是在 1~100 范围内查找目标数 37,二分查找与顺序查找相比,循环少执行 34 次,显然运行时间更短。这样是不是就能确定二分查找的算法就优于顺序查找呢?
请学生思考讨论回答。
预设 1:不一定。比如查找数字 1,顺序查找 1 次就能找到,而二分查找不止 1 次。
预设 2:我感觉是的,比如查找数字 50,顺序查找得 50 次,而二分查找 1 次就找到了。
教师小结:我觉得就这么下结论不够严谨,1 个样例不能说明问题。接下来我们以几个比较有代表性的目标数作为查找的对象,估算循环执行的次数。
设计意图:通过阅读理解、修改运行程序,让学生体验计算机程序,进而验证自己的预测。通过设疑, 引发学生的讨论,培养学生思维的缜密性,为后面的实验练习埋下伏笔。
(5)实验记录,探究释疑
请把书翻到第 42 页,在 1~100 范围内,分别采用顺序查找和二分查找算法查找目标数 1、50 和 100, 估算循环的执行次数,学生完成练习,教师巡视指导。
课件出示答案校对,如有困难讲解
目标数 查找算法 循环执行次数
1 顺序 1
二分 6
50 顺序 50
二分 1
100 顺序 100
二分 7
提问:从上表中我们可以得到什么结论? 学生观察思考讨论回答。
预设 1:查找同 1 个目标数,顺序查找的循环执行次数跟二分查找不一样。预设 2:有时候顺序查找快,有时候二分查找快。
预设 3:顺序查找用的平均次数比二分查找用的平均次数多。教师予以鼓励和肯定,保持学生的学习积极性。
教师小结:解决同一个问题的不同算法,在执行时的运行时间是有一定差异的。对于猜数字游戏中三个有代表性的目标数,顺序查找的平均循环执行次数比二分查找的平均循环执行次数多,由此我们可以判断,对于猜数字游戏这个问题,二分查找算法要优于顺序查找。
教师板书:不同算法解决同一问题时在时间效率上有差别。
设计意图:学生通过填写实验单,再经过观察讨论辨析,培养学生探索发现规律,让学生对不同算法解决同一问题在时间效率上的差别有深刻的体验,促进深度学习。
2.实验二:同一算法,不同规模,效率对比(5 分钟)
提问 1:接下来我们一起进入第 2 个实验,如果我们將查找的范围从 1~100 改成 1~1000 范围内查找目标数 37,估算二分查找算法循环执行的次数是多少呢?
学生估算反馈,教师验证。查找的过程如下:
执行第 1 次循环 在 1 ~ 1000 之间寻找,中间数是 500
执行第 2 次循环 在 1 ~ 499 之间寻找,中间数是 250
执行第 3 次循环 在 1 ~ 249 之间寻找,中间数是 125
执行第 4 次循环 在 1 ~ 124 之间寻找,中间数是 62
执行第 5 次循环 在 1 ~ 61 之间寻找,中间数是 31
执行第 6 次循环 在 32 ~ 61 之间寻找,中间数是 46
执行第 7 次循环 在 32 ~ 45 之间寻找,中间数是 38
执行第 8 次循环 在 32 ~ 37 之间寻找,中间数是 34
执行第 9 次循环 在 35 ~ 37 之间寻找,中间数是 36
提问 2:通过这个实验,你们有什么发现?
学生思考回答。预测:同样查找目标数 37,循环执行的次数由原来的 3 次变成了 10 次,循环体执行的次数不一样了。
追问:为什么会出现不一样的结果?
学生回答。预测:因为查找的范围发生了变化。
教师小结:对于猜数字游戏,我们把查找的范围由原来的 1~100,调整为 1~1000,这是问题规模发生了变化,结果显示循环执行次数有差别。一般情况下,算法运行需要的时间与待求问题的规模有关。
教师板书:算法中循环语句的执行次数与问题的规模有关。
设计意图:“问题规模”原本是个抽象的概念,通过这个例子,使学生对“问题规模”这个概念有更加深刻的理解。
四、 自我评价(5 分钟)
1.问卷星“自我评价”问卷
(1)算法的评价标准有哪些?
(2)猜数字游戏中用顺序查找算法在 1~100 内查找目标数 85,需查找多少次?
(3)猜数字游戏中用二分算法在 1~100 内查找目标数 85,需查找多少次?
(4)猜数字游戏中用二分算法在 1~1000 内查找目标数 85,需查找多少次?
2.通过今天的学习,你学到了什么?
板书设计: