西安百盛童程童美信息学奥赛编程培训

浅谈信息学奥赛程序设计算法的教学

【摘 要】青少年信息学奥林匹克竞赛作为一项面向青少年普及计算机科学知识的竞赛活动,主要是培养和提高青少年的思维能力、分析判断能力和应用计算机解决问题的能力。信息学奥赛教学的终目标就是让学生从给定的问题出发,设计解决问题的算法,并能初步使用一种程序设计语言编制程序实现算法解决问题。本文谈谈我近几年来在信息学奥赛程序设计算法教学中采取的一些方法和策略。

【正文】

程序设计算法教学就是要使学生在已有相关知识结构的基础上进一步体验算法思想,了解算法在解决问题过程中的地位和作用;能从简单问题出发,设计解决问题的算法,并能初步使用一种程序设计语言编制程序实现算法解决问题。由于算法具有高度的抽象性和严密的逻辑性;不仅需要学生具有一定的动手实践能力,更需要具有一定的数学知识和逻辑思维判断能力;学生入门比较难。因此在程序设计算法的教学中应特别注意与学生已有相关知识的衔接,从学生出发,要强调理论与实践的结合,要激发他们的学习兴趣,充分调动他们的积极性。我在程序设计算法教学过程中做了以下尝试和探索。

一、借助游戏教学法,激发学生学习兴趣

兴趣是培养学生学习程序设计算法的前提。心理学研究表明:人们对自己感兴趣的事物总是力求探索它,认识它。在学生刚刚介入程序设计算法的学习时,一般会从心理上产生一种新奇感,这是学生在接触新事物时的一般反应。然而随着知识难度的加深,学生的学习积极性很可能会下降,甚至对那些抽象难懂的程序设计算法产生抵触和畏难情绪。因此,教师应该运用策略使学生保持初学阶段的兴趣和积极性。

在讲算法概念时,我让学生先玩预先设计好的FLASH小游戏《农夫过河》:农夫要把羊、狼和青菜带过河去,而每次只能携带一件物品,又不能让狼吃羊或者羊吃青菜,请问农夫该如何过河?学生的兴趣一下子被激发起来,纷纷提出自己的方案,课堂非常活跃。在学生玩农夫过河游戏时,通过不同的方法过河成功。当几种方法汇总好以后可以自然而然引出算法的定义:为解决某一个问题而设计的确定的有限的步骤就称为算法,同时也可以让学生了解到一个问题的算法可能不止一种。又如,在讲算法的优劣性时,我引用了成语典故“田忌赛马”。学生饶有兴趣地分析出了田忌赛马的六种方案,接着我要求他们选出孙膑的方案,并点出算法具有优劣性。通过玩小游戏、引用典故来学习程序设计算法可以激发学生兴趣,使他们充分享受成功的喜悦。学习内驱力得到了的挖掘,学习效率也得以明显提高,学生乐在其中!

二、从学生出发,精选教学案例使教学形象化

算法是解决问题的方法和步骤,计算机解决问题,必须严格的按步骤进行,这和学生平时解决问题是有区别的。因此在算法设计中,应将平时解题中没有想清楚的每一步都想清楚,这对学生的逻辑思维能力要求较高,不借助一定生活案例,学生也难以理解。因而在教学中注意引导学生利用已有知识结构,从他们日常生活中熟悉的或感兴趣的问题出发,精心设计教学案例将程序设计算法的过程步骤具体化、形象化,变抽象思维为形象思维,促进学生理解。通过实践举例,理论升化,实践应用,即实践—理论—实践三步骤,使学生理解理论同时也能应用这些理论。

例如顺序结构中经典的问题:交换a、b两个变量的值。很多同学的答案是a=b,b=a,因为大家对变量还不够认识。这个时候我先用生活中的例子来解释变量的含义:变量就像一间单人房间,每次只能住一个人,当第二个人住进来的时候之前一个人就要被挤走。然后我把这个例题换了一种说法:我左手拿了玻璃杯,里面放了水,右手拿了塑料杯,里面放了可乐,怎么让玻璃杯里变成可乐而塑料杯里变成水呢?于是在七嘴八舌中便有了交换的方法。我又用了同桌互换作为比喻,让学生描述如何来交换座位,得出“我让开,你过来,我过去”的过程,而非“你过来,我过去”这么简单,还需要一个空地方让我先待着,这就是交换的关键所在。而后我只是说了一句话“再加个容器”,学生马上就理解了物品互换的原理,然后再导出如下知识点:

在该案例教学过程中,没有直接提出两数交换问题,而是通过容器互换、座位互换将问题具体化,形象化激发学生的兴趣,培养了学生的思维能力,促进学生理解。

三、加强生生交流和师生交流,促进教学相长

交流活动在程序设计算法教学中有着重要地位。一方面,生生之间的交流可以给学生提供表达自己成果的机会,同他人分享学习成果,体验成功快乐。通过与他人的讨论、互助等形式的合作学习,学生可以超越自己的认识,更加全面深刻的理解事物。另一方面,师生之间的交流,可以促进师生之间的感情交流,营造和谐的师生关系。它同时也是围绕学生学习的需要来组织安排的,能使学生主动地学习算法知识,而不是被动地接受灌输。

例如在学生已经掌握了s=1+2+3+4+……+99+100的循环结构程序基础上,来做1-2+3-4+……+99-100这个程序设计示例的时候,在给予学生充分的空间和时间,让他们交流想法,自主编写之后,我惊喜的发现学生编写出了多种方法。(1)有学生直接指出了我预先设计的代码过于复杂,可以用初始值n=-1,然后在每次的循环体内取n=-n;s=s+n*i,这样就可以将代码写的更为简洁,我及时的将这部分同学的想法给予肯定;(2)部分学生通过对原始代数式的分析,写出s=s+(i-(i+1)),i=i+2。将这个例子拿出来给全班同学看的时候,我特意指出了程序的循环次数少了一半,算法上更为优化,希望能够引导学生今后尽量想出优化的程序;(3)部分学生交流之后采用了循环+分支的结构,通过条件的判断来决定正负号:if i mod 2=0 then s=s-i else s=s+i ,这是一个非常好的方法,结合了循环和分支结构,来完善和增强自己程序的功能。教师通过自己的教学行为来积极引导学生交流,同时也参与到学生的交流之中,从而引起学生学好算法的积极态度,激发并满足学生的情感需要,特别是对知识的渴望与兴趣,从而达到教学相长的效果。

四、充分利用学生错误资源,培养学生反思能力

在程序设计算法教学中,错误总是伴随着学生的学习过程。心理学家盖耶认为:“谁不考虑尝试错误,不允许学生犯错误,就将错过富成效的学习时刻。”学生出现的错误自有它的特有之处,我们要容“错”、用“错”、诱“错”、后纠“错”,这样才能让“错误”美丽起来。:建立“语法错误”资源库,提升“错误”价值。在课堂中我把学生每次上机犯的语法错误都记录下来,放到错误共享资源库,学生在调试程序时,如果发现错误,可以从资源库里“检索”。一段时间下来,学生的语法错误逐渐减少了。第二:利用“逻辑错误”突破教学重难点。有时候程序运行后结果并不是所期望的,这说明程序可能存在逻辑错误。造成逻辑错误的常见原因有:运算符使用不正确、语句的次序不对、循环语句的初值、终值不正确等等。通常,逻辑错误不会产生错误提示信息,故错误较难排除,而且逻辑错误的产生往往是学生没有理解某些重要知识点而造成的。鉴于此,我们要在课堂中因势利导,利用这些“逻辑错误”来突破重点或分散难点,达到较好的教学效果。如在教学“循环语句”时,在用DO和FOR语句编写程序时,学生容易出现三种逻辑错误:一是语句次序颠倒使结果不符合要求;二是条件表达式写错使循环没有执行;三是初值设置错误。而这些问题恰恰是教学重难点需要解决的问题的具体体现。我们要充分利用这些课堂生成资源引导学生对这些典型错误进行讨论和自我总结,从而促进学生科学知识结构的建立或完善。第三:以“隐性错误”为契机,培养学生反思能力。在程序运行过程中,有时候会出现两种情况:一是程序运行结果正确但程序有错,二是程序运行有结果,但结果是错误的,学生却没有发现结果有错。这两种很难感觉到的错误,可称其为“隐性错误”。学生一般很难察觉隐性错误,教师发现此类错误后,好不要直接指出,而是要引导学生多观察、多思考、多比较,让“错误”逐步浮出水面。而且学生往往对自己的隐性错误有很大的兴趣,找到错误后也会很兴奋,教师可借此机会让学生积极开展自我反思。

学生的错误是课堂原生态的“资源”,我们不能忽视这些资源,而应充分利用这些错误带给我们的教学契机,化错为宝。课堂错误也只有在不断地改正中行进,在教师的良好驾驭中转化提升,才能迸发无穷的魅力。

五、开设自主学习网站,引导学生自主学习

“教让学动”——让学生自学,体验成功的乐趣。信息学奥赛内容繁多,课堂教学时间有限,教师不可能面面俱到,要让学生能够获取更多的知识,就必须改变传统的“教师讲多少,学生学多少”的模式,努力培养学生积极主动地去获取知识、弥补自己的不足之处的能力。程序设计算法涉及到很多概念性知识,学生也会接触到大量的例题,在这种情况下,学生要么忙于作笔记而忽略了问题的分析与解决,要么忙于考虑问题而来不及作笔记,为了让学生两头都不落下,并且增加教学的效率,我觉得开发自主学习网站是很有必要的。由于学生个体差异,部分学生能很快吸收、消化课堂知识,但是他们还不满足于此,为了延续这些学生的学习热情,在自主学习网站上为他们开辟一个专栏,对程序设计作深入介绍,同时将一些竞赛信息也放置其中,在满足这些学生需求的基础上充分调动他们的学习积极性。对于不能在课堂上及时吸收和消化的学生,课后可以通过访问自主学习网站再现上课内容,根据掌握程度选择学习知识点,逐步掌握课堂知识。这种做法克服了传统教学中学生“吃不饱”与“吃太饱”的问题。对于网站的更新,每堂课结束以后,我会将本堂课的知识点、上课用到的例题及算法、拓展延伸部分放到网页中去。为学生开辟网站,让学生自主学习培养了他们的自学能力,同时在自主学习中遇到问题并能与同学们一起探讨、解决,培养了学生的合作精神。

程序设计算法教学一直是突破信息学奥赛的门槛,这是由于程序设计算法教学本身抽象、枯燥,逻辑思维性强,学生不易入门。怎样培养学生的好奇心、求知欲,保持学生对算法课的兴趣,提高学生思维能力和自主学习能力,使学生乐于学习,这是值得我们探讨的。

如需了解更多的少儿编程培训班、课程、价格、试听等信息,您可以点击在线客服,或者拨打页面上的联系电话,也可以在线留言,我们课程顾问会尽快联系您,为孩子定制专属课程,开始孩子的编程学习之旅。

领取试听课
每天限量名额,先到先得
温馨提示:为不影响您的学业,来 西安少儿编程培训 校区前请先电话或QQ咨询,方便我校安排相关的专业老师为您解答
  • 详情请进入 西安童程童美少儿编程...

关于我们 | 招生信息 | 新闻中心 | 学校动态

版权所有:搜学搜课(www.soxsok.com)