1、课题:《§5.1枚举算法的程序实现》 授课教师:黄玉芬 单位:宁波二中 【教材分析】 课程标准相关内容: (1)了解枚举法的基本概念及用枚举法设计算法的基本过程。 (2)能够根据具体问题的要求,使用枚举法设计算法,编写程序求解问题。 本课的《学科指导意见内容》: 基本要求:1.了解枚举算法思想2.初步掌握枚举算法的实现 说明:实践体验:按新的条件改进“变形金刚装箱方案”的程序设计不作要求。 教材内容:1.枚举算法思想 2.枚举算法的程序实现 1课时 枚举算法相关知识点在教材上有两处涉及到,分别是第二章算法实例的第一节枚举算法和第五章第一节算法实例的程序实现。
2、从知识体系结构分析,§2.1枚举算法(1课时)主要涉及内容为枚举算法的基本概念及根据问题要求使用枚举法设计算法。而本节§5.1枚举算法的程序实例是建立在前者的基础之上,侧重于将能采用枚举算法解决的具体问题编写程序来实现求解。两者的关系好比图纸与具体施工。所以本人在教学的安排上对简化对具体问题建立数学模型、用流程图描述算法等环节,侧重在如何在VB平台上编程实现。枚举算法程序的成功实现也为第五章其他算法的程序实现打下良好的编程基础。 【学情分析】 1、本课的学习对象是省一级重点中学的学生,基础较好,具备一定的逻辑思维能力。在经历第二章的学习已经了解枚举算法的概念,能够根据具体问题的要求,使用枚
3、举设计算法。 2、学生通过第三、四章的学习应该已经掌握程序设计的基本思想,掌握赋值语句、选择语句、循环语句的基本用法和VB基本操作,理解对象、事件驱动等基本概念及数据类型和表达式的构成。但是事实上很多学生基本语法掌握不是很好,对编写程序存在一定恐惧。 3、学生之前上机编写的程序从功能上来看相对比较简单,从程序控制结构上看是赋值、选择、循环语句的单独使用或者最最简单的组合。而本节内容涉及实例的程序实现,要根据具体问题求解流程选择相应的语句来实现,这对学生而言还是存在比较大的难度。 【教学目标】 1、 知识与技能 ⑴了解枚举算法思想 ⑵初步掌握枚举算法的程序实现 ⑶能根据算法流程选择
4、合适语句编程实现 ⑷能解决程序调试过程中出现的简单bug 2、 过程与方法 ⑴在编程中体验程序设计语言的逻辑特点 ⑵通过具体问题枚举算法的程序实现,归纳枚举算法程序实现上的一般规律 ⑶通过编制程序,领会使用计算机解决实际问题的本质 3、 情感态度与价值观 ⑴引导学生关注枚举法的实际应用,激发学生学习的热情 ⑵感受计算机程序设计解决问题的优势,遇到具体问题没有现成软件解决时,能想到编程实现 【教学重点与难点】 教学重点:枚举算法的程序实现(可能解枚举实现、条件验证实现) 教学难点:一定范围可能解一一列举的程序实现与理解 【教学方法与教学手段】 教学主线:问题解析――提出
5、枚举法设计算法――回忆枚举算法的基本概念――程序实现――归纳枚举算法程序实现一般规律――练习 教学方法:提示法、演示法、讨论法、探究法、分层次 【教学准备】 《枚举算法的程序现实》学前指导---对前面枚举算法和VB基本语句执行流程等旧知梳理、思考上课两道问题的算法。 【教学过程】 一、 导入 集装箱车调配问题 一批从新加坡运来的肥料在宁波港卸货,要用集装箱车运到丽水缙云。肥料共1200箱,每箱占用空间约1立方米,可供调配的集装箱车有两种规格: 大集装箱车的箱容为54立方米(最多可以装54箱该货品) 小集装箱车的箱容为26立方米(最多可以装26箱该货品) 为了充分发
6、挥集装箱的箱容,要求所有车辆空闲空间之和不超过5立方米。那么车辆调配中心需要调用大、小集装箱车各几辆?要求找出所有可行的调配方案。 (1)学生分析问题提出解决方案――枚举算法(快速完成) 建立数学模型:设设大集装箱x辆,小集装箱y辆 1200≤54x+26y≤1205 (2)复习枚举算法的基本概念提炼枚举算法解决问题的基本思想 枚举算法的基本思想:按问题本身的性质,一一列举出该问题所有可能的解,并在逐一列举的过程中,检验每个可能解是否是问题的真正解,若是就采纳这个解,否则就抛弃他。 设计意图:让学生构建具体算法解决现实生活问题,考查学生对第二章算法实例的学习成
7、果。 二、 新课教学 教学步骤一:集装箱车调配问题的程序实现 (1)教师根据学生方案出示算法流程图,学生理解流程图 设计意图:在实例中内化学生自顶向下、逐步求精的算法思想同时为程序实现降低难度。 (2)编写程序(师生共同根据流程图编制程序) 给学生提供如左图所示的界面,学生在教师的指导下将该问题的算法流程转化为具体VB语句。 设计意图:突破本课的教学重点、难点。采用分析一步学生边写一条代码方式符合学生思维的习惯,降低直接把所有代码全部一次性全部写出的恐惧心理和操作上的难度。 (3)调试程序并得到结果 学生调试程序,根据提示修改程
8、序中的bug。教师辅导。 (4)观察代码归纳枚举算法程序实现的一般规律 一定范围内的可能解以一定方式罗列――――循环语句 条件验证得到真解―――――选择语句 教学步骤二:学生练习-百钱百鸡问题 一百个铜钱买了一百只鸡,其中公鸡一只5钱、母鸡一只3钱,小鸡一钱3只,问一百只鸡中公鸡、母鸡、小鸡各多少? (1)建立学生模型,设计合适算法 设一百只鸡中公鸡、母鸡、小鸡分别为x,y,z (2)程序实现 学生做程序填空,填入代表算法思想的关键语句。 设计意图:考查学生对枚举算法程序实现一般规律的掌握。 Private Sub Command1_Click() Dim
9、x As Integer, y As Integer, z As Integer 'x-公鸡 y-母鸡 z-小鸡 For x = ① To ② Step ③ For y = ④ To ⑤ Step ⑥ For z = ⑦ To ⑧ Step ⑨ If ⑩ Then '满足百钱百鸡 List1.AddItem Str(x) + " " + Str(y) + " " + Str(z) End If Next z Next y Next x
10、 End Sub 学有余力提升:已经完成的同学思考对原来的方案进行改进,减少循环次数 提示:因为公鸡和母鸡数确定后,小鸡数就定了,即 Z=100-x-y 设计意图:实现分层次教学,对基础较好的同学思考如何通过减少循环次数来提高程序的执行效率。 教学步骤三、归纳提升 1、 现实生活中问题什么情况下需要计算机帮助解决 2、 枚举算法的基本思想 3、 枚举算法如何程序实现 三、 学生学习成果反馈 【教学设计说明】 1、 为什么要课前发学习指导,熟悉上课的例子? 枚举算法的程序实现是建立在对枚
11、举算法思想的掌握和对程序基本语句语法与执行流程的熟练掌握之上。前面知识的掌握的程度是本课内容成功完成的前提,所以课前安排了对旧知的梳理。 编程解决具体问题,必然要经历建立数学模型、设计算法、程序实现三大基本步骤。本课的内容是如何将已有的算法程序实现,是编程解决问题的最后一个环节。但是这最后一个环节是建立在前两个环节的基础之上,为了节省课堂的有限时间,又要解决问题思维的连贯性,所以课前安排学生对问题解决方案的思考,使得学习更有针对性。 2、本课教学设计侧重如何编程、调试解决问题,在学习过程中试图让学生理解现实生活问题有时候过于繁杂,人工解决需要花费大量的时间与精力,可以借助计算机运算速度快、准确度高等特点帮助人从繁杂的运算从解脱出来。但是如果没有现成软件可用,就需要将自己设计好的算法通过编写程序来解决问题。 3、对于集装箱车调配方案程序实现的处理,采用根据流程图,边分析,边写一句代码。分解步骤执行,教师学生同时进行。考虑到学生第一次写如此负责程序(相对以前),这样做的目的从心理上降低恐惧,从技术上降低难度。 【个人联系方式】 Tel:13336888217 e-mail:lethe233@ 第 6 页 共 6 页






