1、1.3 程序与程序设计语言【课标要求】(一)利用计算机解决问题的基本过程(1)结合实例,经历分析问题、确定算法、编程求解等用计算机解决问题的基本过程,认识算法和程序设计在其中的地位和作用。 (2)经历用自然语言、流程图或伪代码等方法描述算法的过程。(4)了解程序设计语言、编辑程序、编译程序、连接程序以及程序开发环境等基本知识。【学情分析】高一年级的学生已具备了一定的观察、思考、分析和解决问题能力,也已有了顺序结构、分支结构、循环结构等知识的储备。因此,对于如何将解决问题的思路画成流程图已有一定的基础,但可能还不很熟练,尤其对刚学过的循环结构,教师在课堂上要注意引导。此处说“已有了顺序结构、分支
2、结构、循环结构等知识的储备” ,应该是指在必修部分对“计算机解决实际问题的基本过程”已有所体验与了解,或是指已学习过数学中相关模块的知识,这是本案例教学得以实施的必不可少的前提条件。 【教学目标】1.知识与技能:建立求一批数据中最大值的算法设计思想,并将算法的设计思想用流程图表示出来。2.过程与方法:利用现实生活中比较身高的活动,以及对武术比赛中“打擂台”流程的逐步梳理,让学生学会从此类生活实际中提炼出求最大值的思想方法,即算法思想。培养学生分析问题、解决问题的能力,让学生学会在面对问题时能梳理出解决问题的清晰思路,进而设计出解决某个特定问题的有限步骤,从而理解计算机是如何解决、处理某种问题的
3、。在过程上,通过现实生活中的实例来引导学生总结“求最大值”的算法思想。过程的实现关键在于实例引用是否贴切,是否有利于学生向抽象结论的构建。本案例的实例选择是符合这一要求的。在方法上,注重培养学生分析、解决问题的一般能力,再次体验与理解应用计算机解决问题的基本过程,为后面更一步的学习打下基础,积累信心。 3.情感态度与价值观:让学生全身心地投入到教学活动中,积极与同伴合作交流,进行探索活动。培养学生良好的思维品质,发展他们的创新思维,并养成积极的学习态度和良好的学习习惯。创设情境,以激发学生的学习兴趣。努力营造一个可以接纳的、支持性的、宽容的课堂学习环境,让学生置身于民主和愉悦的课堂氛围中放飞思
4、维、潜心研究、快乐创造。本案例对“情感、 态度与价值观”目标的设计,更多的是 试图建立一个活跃、民主、快乐的学习环境。良好的学习环境是学生 乐学好学、教 师提高课 堂效率的重要条件。如果真能实现这样一个环境,营造出理想状 态中的学习氛围,无疑会使学生在学到“ 知识与技能”的同时收获到更多的东西合作、分享、成就。而且如果能够结合教学内容来描述目标,则会使目标显得更具体,更有针对性。 【重点难点】教学重点:建立求一批数据中最大值的算法设计思想,并将此算法设计思想用流程图表示出来。教学难点:上述重点问题同样是本课教学的难点。另外,如何把人解决问题的思路、步骤用计算机语言描述出来也是本课的难点之一。建
5、议,此处可添加关于教学重、难点的确立依据,以及解决教学难点的关键方法方面的描述。同一段知识内容的教学重、难点对于同类教师基本上是一致的,不同的是对教学重、难点的认识与处理方法。应该说,对教学重、难点认识的越深刻就越有可能找到更好的处理方法。 【教学思路】利用现实生活中比较一组学生身高这一事件,引导学生去发现求最大值的一种方法。如何设计求一批数据中最大值的算法?我认为让学生自己去经历整个探究过程,要比直接把现成的算法告诉学生有意义得多。它能迅速、有效地帮助学生建立程序设计思想。在完成这个任务的过程中,教师的循循善诱起到了非常关键的作用。找出一批数据中的最大者,从表面上来看是一个很简单的问题。在比
6、较数的过程中,人因为动用了眼睛,比较大小的思维过程一闪而过,所以能很快求出一批数据中的最大值。而计算机与人不同,它对这些数据看不见、摸不着,怎么来完成这一任务呢?其实,计算机解决问题的关键,就是要把人解决问题的思维过程用计算机语言描述出来,即为大脑思维的每一步“拍照” 。这是计算机程序设计教学的一个重点,也是一个难点,需要教师在教学过程中逐步引导和训练学生,使学生逐渐学会分析问题,寻求解决问题的方法和步骤。本案例运用生活中“打擂台”的实例引导学生分析求最大值的方法,通过对这一现象的分析,逐步引出求最大值的算法设计思想。作者在此处点出了解决教学难点的方法,即采用“逐步引导和训练”的方法。其意图就
7、是希望学生经历整个过程,从而锻炼、提升探究能力,领悟、理解其中的思想,实现授人以渔的目的。 【教学过程】1情境创设_如何建立支架的?师(提问): 今天在第一排就座的有 10 多位同学,谁是我们第一排在座各位中的最高者呢?师(引导): 大家思考,通常这个任务我们是怎样去完成的?教师根据学生对问题的回答进行分析。引导学生往古时候比武时常常采用的“打擂台”的方式上想,提示学生可参考电视上经常播放的“挑战主持人”节目。师生: 打擂的过程可以描述为: (1) 确定一个擂主(讨论第一个擂主是如何确定的) ; (2) 挑战者上台; (3) 擂主和挑战者比较; (4) 挑战者胜的话,挑战者做擂主,否则擂主卫冕
8、; (5) 重复执行(2)(4) 步骤,直到最后一个挑战者。师: 在打擂的过程中,我们看到(2)(4) 步骤是要重复做的,所以我们该怎么办呢?生: 需要循环结构来实现。师: 这几个步骤序列重复到什么时候结束呢?由学生讨论结束的办法,很显然,需要在最后加上一个能判断什么时候结束的判断框。根据讨论的步骤,最后师生共同得出打擂台的算法和流程图(如图 1 ) 。 作者的引导可以总结为:比身高(学生的回答可能多种多样,也可能偏离预设方向)比武、 “打擂台” (将学生发散出去的思考往预设方向上牵引)“挑战主持人”节目(进一步将学生的思考引到其头脑中已有的认识上,前提是学生要看过该节目)用自然语言的方式整理
9、出比赛的规则(即算法的自然语言描述)得到表示算法的流程图。应该说,这样的引导方式完全可以达到作者的预设目标。 2求一般情况下的最大值的算法师(引导): 如果我们面对的是一堆数据,现在希望我们求出这一堆数据中的最大值该怎么办?通过教师和学生的共同分析,把问题进一步细化为: (1) 从第一个数据开始看起; (2) 把第一个数据的值在变量中记下来; (3) 再取一个数据; (4) 比较这个数据与变量中记下的数据的值; (5) 如果这个数据的值比记下的数据的值大,则去掉变量中原来那个数据,记下新数据的值; (6) 重复执行(2)(4) , 继续比较,直到最后一个数据。 也就是说,计算机的变量始终记着当
10、前比较过数据中的最大者(我们不妨用 X 表示它), 当取完最后一个数据时,X 中留下的也就是最大值了。求最大值的算法设计思想用下图表示。教学在上一环节的基础上再做进一步的深入,即扩大数据的比较范围,讨论一般的情况。由于学生已经经历了上一环节的思考过程,因此,再次思考一般性问题的解决方案就变得容易多了,这又是另一维度的“逐步引导和训练” ,即具体到一般的过渡。这是作者对教学策略设计的准确实现。 注意: a再次让学生讨论变量的意义,弄清赋值语句的意义。 b一些物理量用变量表达的意义。如 X 表示最大值,X 表示输入的一个值,且每次循环时都用同一个变量 X 。 c为了控制循环结束,必须加入一个控制循
11、环次数的计数器 I, 当 I 达到一定的次数后,循环工作结束。 除了对教学目标宏观上的关注与设计之外,也注意到了教学内容细节上的把握。作者在此处提出的三点注意都是编程语言细节上的问题,应该说,这“三点注意”是作者多年或是本案例实践过后总结的教学经验,当然也可能是教师在教学设计时预先设想的教学问题。这些要“注意的点”正是教学实践或设计中的精华所在,也是值得我们借鉴与学习的内容之一。 3 回顾小结师生共同总结算法设计的过程,就是将大脑思维的每一步都记录下来,并且用计算机能达到的功能来实现人解决问题的思路。最后带领学生总结本节课的中心思想,即回答“算法设计的过程是怎样的?”这一问题。使整节课有了一个明确的结论。