高中算法与程序设计教学
【摘要】《算法与程序设计》是高中信息科技的选修模块,也是高中信息科技教学的重点和难点,其教学内容枯燥,因此教学难度较大。本文结合笔者几年来的教学实践对高中《算法与程序设计》的教学进行探究。
【关键字】算法 程序设计 兴趣 教学方法
《算法与程序设计》是高中信息技术选修课程,学习算法与程序设计就是要使学生在原有基础上进一步体验算法思想,了解算法和程序设计在解决问题过程中的地位和作用;能从简单问题出发,设计解决问题的算法,并能初步使用一种程序设计语言编制程序实现算法解决问题。在本模块的教学,应注意与学生已有相关知识的衔接,要强调理论与实践的结合,要循循引导学生,激发他们的学习兴趣,引导学生注意寻找、发现身边的实际问题,进而设计出算法和计算机程序去解决这些问题。那么怎样才能上好这门课?下面谈谈我在教学中采取的一些方法。
一、借助游戏教学法,激发学生学习兴趣
兴趣是培养学生程序设计能力的前提,研究表明,让学生在娱乐中学习将更有利于新知识的获得。在学生刚刚介入新知识的学习时,一般会从心理上产生一种新奇感,这是学生在接触新事物时的一般反应。然而随着知识难度的加深,学生的学习积极性很可能会下降,甚至对那些较为枯燥的程序设计产生抵触和畏难情绪。因此,教师应该运用策略使学生保持初学阶段的兴趣和积极情绪。如教材第一章算法概念抽象难懂,过多的课堂讲解会起反作用,因为学生一旦听不懂或觉得太枯燥,就可能抑制他们对这门课的学习兴趣。如在第一课教学中以玩“猜数游戏”作为主线,通过生生之间、人机之间相互玩猜数游戏的活动,将计算机拟人化,激发学生学习程序设计的兴趣。首先让2名同学一组玩“猜数游戏”。学生甲心里想一个0—100之间的整数,让学生乙猜。根据学生乙猜的数进行判断并反馈信息“大了”还是“小了”,直到最终猜中,相互交换角色,看谁能用最少的次数猜中数。其次教师用VB设计的电脑游戏和学生一起玩,玩时注意引导学生思考总结猜数所用的方法,并设法减少猜的次数。引导学生交流讨论,引出算法的概念。通过这样的一节导入课使学生充分认识到学习算法的目的就是通过掌握的程序设计语言来“教”电脑做事情解决具体问题。将游戏与教的方式融入算法与程序设计教学,创设轻松愉快的环境,使学生降低对算法学习的恐惧心理,激发学习兴趣。在第一课的教学中,学生对猜数游戏有了浓厚的兴趣,也有了一试身手的欲望。
教师还可以再演示一些由学生自己编写的、有趣的程序,从而吸引学生,并告诉他们学习了《算法与程序设计》的内容后,大家都能够编出这些有趣的小程序。 二、从学生的已有知识水平出发, 设计教学实例
算法是解决问题的方法和步骤,计算机解决问题,必须严格的按步骤进行,这和学生平时解决问题是有区别的。因此在算法设计中,应将平时解题中没有想清楚的每一步都想清楚,这对学生的逻辑思维能力要求较高,许多学生刚开始可能不太适应。因而在教学中注意引导学生利用已有知识结构,从他们熟悉的或感兴趣的问题出发,进行算法与程序设计的教学。 如在讲解顺序结构中交换两个变量值的问题。老师提出问题:设整型变量A的值为5,B的值为6,如何交换它们的值?学生:我不知道该怎么办,无从下手。老师提示:如果有两盘磁带,里面分别录有外语听力和流行音乐,请你把里面的内容对调,你会怎么办?学生:找个空白的磁带呀!原来这么简单。老师:要求用变量A、B、C来代表三个磁带,把操作的过程表示出来。经过这一类比,同学们毫不费力地就可以画出如下的知识点:
在该案例教学过程中,没有直接提出两数如何交换问题,而是通过磁带互换,培养了学生的思维能力。而后再将知识迁移,通过这样的过程,学生对两数交换的理解和记忆都达到了很高的层次。
如在讲解枚举法时,我引用了我国古代著名的《孙子算经》中的鸡兔同笼问题:今有鸡兔同笼,共有35个头、94只脚,问鸡和兔各有几只?这样一来,学生即有了学习兴趣,又可以根据现实生活中的实际情况来解决问题:由于共有35个头,所以鸡和兔共有35只。每只鸡有2只脚,每只兔有4只脚,脚的总数是94。所以有变量x来表示鸡的数量,x从1到34列举所有可能的情况,然后对列举出的鸡的数量x和兔子数量35-x进行检验,判断是否满足共有94只脚的条件,即x*2+(35-x)*4是否等于94,若满足条件则输出x和35-x。这样一来,学生即解决了问题,又学会了循环结构的程序设计。所以在教学过程中,联系实际,从学生的已有知识水平出发, 设计教学实例作为程序设计的活教材可以收到事半功倍的效果。
三、进行有效的练习与作业评价
算法与程序设计是一门实践性很强的课程。学生通过练习不仅可以及时巩固所学知识,加深对知识的理解,更重要的是把学过的知识加以运用,以形成技能技巧,从面发展自己的智力,培养自己的能力。如何做好这个环节的教学也是十分关键的。在教学中我做过以下几点尝试。第一,让学生从模仿中学习,先设计一个与老师讲解过的例子相类似的题目让学生去完成。例如,在顺序结构教学中,教师举例分析“已知圆的半径,求周长和面积”后,请学生完成“已知长方形的长和宽,求周长和面积”。这样多数同学很快就可以完成,感到有成就感。第二,对于一些较难的题目,教师可以事先完成一部分流程图,引导学生如何进行分析解题,最后主要部分让学生去完成。第三,可以设计多种形式的练习,帮助学生理解程序,学习算法与程序设计。如阅读程序,写出程序运行结果,说明程序的功能;分析问题,设计算法,画出流程图;给出问题算法分析与部分流程图,补充完善流程图与程序。
作业是学生对所学知识的掌握情况及时、真实的反馈,教师通过批改检查作业,可以直接获取学生信息,把握学生知识掌握和能力发展的程度,及时调整教学方案,修改教学行为,确保后续教学的时效性、有效性和针对性。在教学过程中,我对学生的书面作业都是及时批改并反馈,批改的方式有全部批改、重点批改、轮流批改、当面批改、师生共批、学生互批等。因全部逐本批改占据教师大量的时间而影响备课的质量,所以应采取各种类型相结合的方式。不论用何种方式批改,都应注意并记录学生作业错误的数量和性质。通过作业反馈,一方面让学生及时订正,另一方面教师要加强对错误原因的分析,以便在以后教学中有针对性地加以纠正。教师对作业应按质量打成绩,也可写评语,评语以鼓励的话语激励学生把作业做好。应尽量少用负面的标语对优秀或进步较大的作业,教师应给予全班表扬,可以全班传阅,以资互相学习,对差的作业应视具体情况给予指点和帮助。
四、重视生生交流和师生交流活动
交流是人际间的交往、对话、沟通的活动,是人际间增进彼此了解、沟通的重要方式。交流活动在信息技术教学中有着重要地位。一方面,生生之间的交流可以给学生提供表达自己成果的机会,同他人分享学习成果,体验成功快乐。通过与他人的讨论、互助等形式的合作学习,学生可以超越自己的认识,更加全面深刻的理解事物。另一方面,师生之间的交流,可以促进师生之间的感情交流,营造和谐的师生关系。它同时也是围绕学生学习的需要来组织安排的,能使学生主动地学习算法与程序设计知识,而不是被动地接受灌输。
例如在学生已经掌握了s=1+2+3+4+??+99+100的循环结构程序基础上,来做1-2+3-4+??+99-100这个程序设计示例的时候,本来教学设计的时候是希望学生在绘制流程图时出现代码:s=s+i*(-1)^(i+1)。但是,在给予学生充分的空间和时间,让他们交流想法,自主编写之后,我惊喜的发现学生编写出了多种方法。(1)学生直接指出了我预先设计的代码过于复杂,可以用初始值n=-1,然后在每次的循环体内取n=-n;s=s+n*i,这样就可以将代码写的更为简洁,我及时的将这部分同学的思想给予肯定;(2)部分同学通过对原始代数式的分析,写出s=s+(i-(i+1)),循环步长step=2。将这个例子拿出来给全班同学看的时候,我特意指出了程序的循环次数少了一半,算法上更为优化,希望能够引导学生今后尽量想出优化的程序;(3)部分学生交流之后采用了循环+分支的结构,通过条件的判断来决定正负号:if I mod 2=0 then s=s-I else s=s+I ,这是一个非常好的方法,根据这个思路,我调整了一下教学安排,让全班的同学参与分析、讨论,也许是因为这种想法源至他们自身,所以非常顺利接受了如何结合循环和分支结构,来完善和增强自己程序的功能。达到了教学相长的效果。
教师通过自己的教学行为来积极引导学生交流,同时也参与到学生的交流之中,从而引起学生学好算法与程序设计的积极态度,激发并满足学生的情感需要,特别是对知识的渴望与兴趣,从而更好地完成教学。 五、合理安排上机实践
在算法与程序设计教学中,不能忽略学生的上机实践,一个好的例题,学生通过上机操作,可以更好的理解知识,教师也可从中挖掘学生的潜能,开拓学生的思维。
在教学中,教师应采用灵活多样的教学方法,充分调动学生学习的积极性,引导学生独立思考,敢于提出不同见解,质难问疑,积极创造条件鼓励学生勇于探索,使他们主动地学、积极地学。我校信息科技课一周两节,第一节课我在教室集中讲授相关算法与程序基础知识,针对讲授的内容布置练习。第二节课学生上机操作,我在布置练习任务时采取由浅至深、逐步递进的方式,刚开始的时候只是让学生模仿书上的流程图和程序完成练习,随着知识的逐步深化,慢慢让学生练习独立绘制流程图和编写简单的程序,再到较为复杂的内容。
在辅导过程中我发现一个可喜的情形就是学生刚开始一遇到问题就急于找老师,让老师帮助解决。但随着课程内容的深入,多次的上机实践后我发现课上这种寻求帮助的声音越来
越少,学生们非常乐于自己修改排除错误。在完成做业后学生脸上洋溢着自信的表情,在这样的过程中学生体验了成功的喜悦,同时也帮助了他们理解程序,尤其是到循环结构以后,这种作用就更明显了,而且这种能力完全可以迁移到今后的学习和生活中去。 六、 结束语
通过几年的摸索,笔者对于高中算法和程序设计的教学有了较大的提高,但仍存在若干不足之处。本文提出以上见解,以期起到抛砖引玉的作用。笔者将在今后的教学中,更加注重教学、教法的探究,在实践中不断提高算法和教学设计这么课程的教学能力。
新课程改革对教师的自身发展也提出了更高的要求。信息科技本身最大的特点就是不断发展,所以作为信息科技老师也应该不断地学习,必须不断更新观念,不断地积累教学经验,注重学习新知识,提高终身学习的意识和能力,以适应不断变化的时代对现代教育所提出的更高要求,以便找到合适教学方法来更好地教学。我们要不断培养和发展自己的反思能力,包括反思自己的教育理念与行为,思考各种教育行为的后果,不断自我修正、调整和更新,成为反思型教师。
【参考文献】
1.《上海市中小学信息科技课程指导纲要(征求意见稿)》,上海市中小学课程教材改革委员会办公室编,上海教育出版社,2002年11月
2.上海市高级中学信息科技学科教学基本要求(实验本),中国地图出版社,中华地图学社,2009年1月
3.王爱艳:《算法与程序设计教学之我见》,信息技术教育,2008.2 4.《〈算法与程序设计〉模块的教学策略》 李 娟