您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 数据通信与网络 > 浙教版高一算法与程序设计第二章枚举算法
浙教版高一算法与程序设计第二章枚举算法浙江象山中学黄琴一、设计思想本课设计打破教材编写顺序,将本教材中的第二章的算法与第五章的程序实现结合起来组织教学,通过理论结合实践,让学生更容易理解各种算法的基本设计思想,体验编写程序的成功感受,同时又能掌握枚举思想。“枚举算法”也称“穷举算法”,这样学生更易理解其算法的思想:一一列出所有可能的解,并逐一检验。那么如何把枚举思想体现在算法中,用程序语言实现呢?。我在教学过程中对整堂课的设计上的思路是:通过具体情境引入主题——认知主题——体验主题——拓展主题——实现主题这几个阶段层层深入的递进式方法使学生充分掌握枚举算法。算法课一般与枯燥,晦涩,难懂,逻辑等字眼联系在一起,往往难以激发学生兴趣。如何打破这种局面?如何激发学生兴趣,使学生情不自禁的,自主的去学习算法呢?新课程倡导“人文与生活”,在了解学生的身心发展特点前提下,尊重学生的学习、生活、兴趣,真正以学生为主体,有创造性地设计信息技术教学环节。本课作的设计除了遵循算法自顶而下,逐步求精的思想之外,新意之处在于根据电影情节别出心裁创设了一个情境,由男女主角辨认模糊电话号码导入,在故事中不留痕迹地渗透了教学内容,完成由简单到复杂的教学任务,整个课堂中洋溢着浓浓的纯洁感情,男女学生分别充当电影中的的男女主人公,体验各自角色的情感,在不知不觉由电影情节中学得枚举算法,完成教学任务。最后取得了不错的教学效果,也算是在程序教学实践中的一种创新吧。在激发学生学习欲望的同时,将“技术”不断地融入“人文教育”以达到最终的教学目标。二、教材分析算法是解决问题的方法和步骤,根据《高中信息技术课程标准》对本模块提出的的要求,本课“枚举算法”的学习目标是使学生在已经掌握三种基本程序结构的基础上,进一步掌握枚举算法设计思想。枚举算法注重学生逻辑思维能力的训练,同时它也充分体现了用计算机解决实际问题的方法和步骤,是一种重要的算法方法。本节课是《算法与程序设计》第二章《算法实例》第一节的内容,要求学生学会使用枚举算法设计简单算法流程图,并掌握用程序设计语言VB来实现有关枚举算法的实例。教材中以“单据涂抹”和“包装问题”两个实例引入,得出枚举算法解决问题的一般过程。通过一年的教学实践,感觉学生对此两个实例的学习兴趣并不是很高。三、学情分析1、在前面的教学中,学生已经理解了算法的特点,学习了算法的三种表示方式,并且重点学过了流程图,会辨认每个图框及其表示意思,初步会设计流程图。2、理解了顺序、选择、循环三种基本结构,并通过参与活动手册中的实践,对程序有了初步的认识。所以学生对于三种基本控制结构已经有了知识基础,也能阅读一些简单的程序段。在本课中学生会觉得设计思想比较容易掌握,如何将枚举思想转变成具体的算法,枚举算法又如何转变成具体的VB程序呢?课堂的难点主要在于前点,主要的体现在画出枚举算法流程图。让学生一个一个编码显然是不现实的,一堂课时间来不及,可以采用关键程序填空的方法。四、教学目标1、知识目标:学生亲身体验并理解枚举算法的基本思想;用流程图形式来表示枚举算法;理解由流程图翻译成的VB代码,能上机成功调试。2、能力目标:通过具体例子分析,让学生理解如何用3步法来解决实际问题;学会使用枚举算法解决简单问题;3、情感目标:体验电影中男女主人公之间的感情;感受枚举在日常生活中的广泛应用,培养对算法的兴趣;通过小组合作增进学生间的学习交流,培养合作能力;五、重点与难点教学重点:让学生理解枚举算法;初步培养学生运用三步法来解决实际问题;教学难点:理解多种控制结构的嵌套;枚举算法思想的理解与实现(流程图转化为代码并上机实践)。六、教学策略与手段1、教师教法:情景创设法、演示法、讨论法2、学生学法:自主学习、合作探究学习七、课前准备1、教师的教学准备:准备“向左走向右走”电影片段准备枚举算法的VisualBasic演示程序2、教学环境多媒体机房八、教学过程第一步创设情境,认知主题【教师】:课前播放电影片段《向左走向右走》。提问:刚才看的是那部电影中的画面?【学生】:《向左走向右走》并且简述电影的主要情节。【教师】:对了,电影《向左走向右走》中,讲述了金城武饰演的一位小提琴家和梁咏琪饰演的一位翻译家之间唯美的爱情故事。两人居住在同一幢公寓,中间只隔了一堵墙,却因为两人彼此习惯不同,一个习惯向左走,一个习惯向右走,总是不断擦身而过未曾相遇。电梯一上一下、在月台上分站两旁……终于有一天,两人同事来到公园在水池旁相遇了,但是天意弄人,两人在雨中匆忙交换留下的电话号码,在湿透的纸上模糊一片,两人不断拨号却无法拨到对方。模糊的电话号码展示:【教师】:电话号码被雨水冲模糊了,如果你是故事中的主人公,男同学可以是小提琴家,女同学是翻译家,这时如何找到你自己心仪的爱人的电话呢?请一个姓“金”的男生(或者姓“梁”的女生)回答。【学生】:像找回密码箱密码一样,一个一个按顺序去拨打,如果是对方接的,说明就找对了。【教师】:很好,“金”同学如果你是“小提琴家”一定能找到心上人。我们从刚才的情景中可以看出,如果要找到一个问题的真正解,必须要把所有可能的解都列出来,然后再一一进行检验,看看是否有符合条件的。刚才大家找电话号码的方法,我们可以称为“枚举算法”。看来学了枚举算法有助于找自己的有缘人,学了算法非常有用。枚举算法基本思想:按问题本身的性质,一一列举出该问题所有可能的解,并在逐一列举的过程中,检验每个可能解是否是问题的真正解,若是,就采纳这个解,否则就放弃它。请问各位同学,在看了枚举算法这个概念后,你们觉得这个算法的最关键的要求是什么?【学生】:一一列举;逐一判断【教师】:电影中,男女主角都有尝试去拨了很多电话号码,为什么没有成功呢?【学生】:并没有一一拨打所有可能的电话号码【教师】:对极了,在列举的时候一定要遵循这样的一个规律:一一列举、逐一检验,做到既不遗漏也不重复。【设计意图】引导学生都进入了电影情景中,融入情节,想象着自己就是那个故事中的主角,使每个学生似乎都有了情感目标要,找到对方的电话,所以听得特别认真,这时水到渠成地提出枚举算法的基础知识,学生象海绵吸水一般学习着枚举算法的相关知识。接下去深入学习枚举算法的实现过程。这个导入显得贴切,稳妥。第二步逐步深入体验主题【教师】:这么近的两个有情人不能相见,导演也太整人了。今天老师也来做一回编剧,把电话号码重新设置一下,大家来试试能否找出真正的电话号码。这里有两个电话号码一个是梁咏琪手上金城武的号码,另外一个是金城武手上梁咏琪的号码。我们先一起来看看怎么找金城武的号码。女同学们特别要用心呀!电话号码可以看成是一个8位数的编号,其百位数和十位数处已经变得模糊不清。如果知道这个8位数(电话号码)是13的倍数。现在要找出所有满足这些条件的8位数,并统计这些8位数的个数。【教师】:首先,我们一起来分析一下,按照枚举算法的关键步骤。步骤一:一一列举该问题的所有可能解。那百位和十位上的数字有哪些可能?【学生】:00、01、02、……一直到99。【教师】:这样就可以表示电话号码了吗?还应该怎么做?【学生】:这些数乘以10再加上22764005。【教师】:小结,结合PPT展示。将百位和十位的数用一个变量j来表示。000102039899……J让变量J依次取0到99这100个不同的值,接着给J的每个确定的值乘以10加上22764005这样就能形成一个可能解。0J×1000+227640052276400511022764015……98980227649859999022764995所有可能的解用变量N表示【教师】:步骤二:检验每个可能解是否是问题的真正解。检验的条件是什么呢?……227640052276401522764995N【学生】:这个八位数是13的倍数。【教师】:怎么用表示这个数是13的倍数呢?【学生】:用13整除余数为零。【学生】:NMOD13=0【教师】:好极了,用这个枚举方法我们就一定能找到金城武号码,而且肯定不会出错不会漏下。【设计意图】:修改电影情节中号码,使之符合教学要求。通过找金城武的号码这个过程,学生基本上能理解用简单的单层循环枚举解决问题的一般过程。因为都有这样一个目标,学生都听得饶有兴趣,积极参与,气氛热烈。接着深入把分析结果转化为流程图。【教师】:我们将刚才分析的结果转化成流程图。展示流程图:J:循环变量,其作用如下:1、用它来控制循环是否继续进行,记录已经执行的循环的次数。2、依次产生应填在百位和十位上的数值。N:存储一个可能解【教师】:判断框中就J100,还有其他答案吗?【学生】:J=99【教师】:我将J的初值改为1可以吗?为什么?【学生】:不可以,因为漏掉了一个可能值22764005。【教师】:大家都思考得很好,在分析问题的时候一定要先列出所有可能的解,不能遗漏不能重复。在写取值范围的时候可以有多种格式,在考虑算法的时候一定要周密,尽可能使程序看起来简单,执行起来速度快。开始计数器置初值:C0J0J100?N22764005+J*10N是13的倍数CC+1输出:真正解N的值YYN输出:计数器C的值结束NJJ+1【设计意图】:将自然语言转化成流程图,一步一步转化,并在此前分析解析所要用到得变量。再把流程图变为程序代码。【教师】:再将流程图转化成程序代码。开始计数器置初值:C0J0J100?N22764005+J*10N是13的倍数计数器C计数CC+1输出:真正解N的值JJ+1YYN输出计数器C的值结束NPrivateSubCommand1_Click()EndSubDimN,C,JAsIntegerC=0FORJ=0TO99N=22764005+J*10IfNMod13=0ThenC=C+1List1.AdditemStr(N)EndIfNextJText1.Text=Str(C)List1.clear【设计意图】根据流程图,结合两个关键步骤:一一列举,逐一判断,一步步编写VB程序代码,使学生加深对流程图的理解,充分正确理解枚举算法的思想一一列举,并逐一检验这么一个过程。第三步温故知新拓展主题【教师】:金城武的电话是找到了,梁咏琪的电话号码还没有解决呢?我们一起来看看怎么样找梁咏琪的号码?特别是男同学更加要开动脑筋了。已经知道女主角的电话号码还是一个8位数的编号,如果其千位数和十位数处已经变得模糊不清。但是知道这个8位数(电话号码)是13的倍数。现在要找出所有满足这些条件的8位数(电话号码),并统计这些8位数的个数。【学生】:小组合作思考,探究。【教师】:还是和刚才一样,根据两个关键步骤,逐步引导学生解决问题。步骤一:一一列举2276020522760215……22760295……i2276120522761215……227612952276120522761215……227612952276920522769215……227692952276920522769215……22769295jijji千位数与十位数的号码模糊,列举时需要两个变量来表达:i和j。i和j是怎么变化的?【学生】:i从0到9,j从0到9。FORi=FORj=N=NextjNexti0TO90TO922760205+i*1000+j*10循环语句【教师】:列举时需要for循环语句来一一列举。【教师】:步骤二:逐一检验检验时,需要根据条件来新来进行判断。需要用到if语句。【学生】:说出检验的主要代码。ifnmod13=0FORi=0TO9FORj=0TO9N=22760205+i*1000+j*10IfThenC=C+1List1.AdditemStr(N)EndIfNextjNextiNMod13=0选择语句【教师】:检验时需要if判断语句来逐一判断。【设计意图】男主角号码是一个简单的单层循环;女主角的号码变得复杂了,是一个两层循环。学生再一次体会枚举算法解决问题的一般步骤和方法,并且理解双重循环。这两个任务从简单到复杂具有层次性。是一个由简单到复杂的一个过程。第四步学以致用,实现主题【教师】:刚才是我们一起运用枚举算法找了男女主角的号
本文标题:浙教版高一算法与程序设计第二章枚举算法
链接地址:https://www.777doc.com/doc-2320480 .html