浅谈信息学奥林匹克竞赛辅导教学方法与技巧
**省小学信息学奥林匹克竞赛以“信息与未来”夏令营为载体,通过上机编程着重考察学生对问题的分析理解能力,数学抽象思维能力,编程语言的应用能力和编程技巧、想象力和创造力等。在信息学奥赛的辅导教学过程中,作为教练员应依据“体验科学探究活动的过程与方法,培养良好的科学态度,增强创新意识和实践能力”的指导思想,摸索出一条比较新颖的适合小学生的教学方式。
信息学奥赛所涉及的内容广,程度深,从计算机qb语言教学,到基本算法、相关知识点包含许多专业知识。就教学常态而言,至少要2-3年左右的时间,才能培养出一名好的选手。但是要提高学生的程序设计能力,并不是人们想象中那么高不可攀,只要方法得当,持之以恒,是可以取得良好效果的。
现状分析
就本校现状来看,信息学竞赛与其它学科竞赛之间存在着明显差异,大致存在以下几点:
(1) 学生不了解学习的内容
信息学程序设计是全新的课程项目,学生从来未接触过,并不了解其中奥秘,缺乏兴趣。启蒙将花费较大精力。加上主要学科老师及学生家长存在着种种误解,不是很支持,参加人数少。
(2)学生参加活动时间有限
信息学竞赛不同于其它学科竞赛,难以安排专门时间,辅导只能利用周末和节假日。而学生空余时间本来有限,能支配的时间少之又少,时间安排相当困难。
(3)学生对学习方式不适应
计算机程序设计是一门与实践操作结合非常紧密的学科,学生如果采用传统的学习方式来对待,必是学得累,学习兴趣受挫,最终可能会选择放弃。
辅导方式
面对现状,结合小学生的认知规律及思维发展规律。通过几年的教学实践,我们摸索出了“引导+创新”的教学指导模式,呈现出较高的效率和良好的效果。
一、引导——教师竞赛辅导的基础
引导指采用一定的手段,把某种本来就潜藏于受教者身上的潜力挖掘出来,从一种潜质转变为现实。对于信息学竞赛辅导教学来说引导的目的就是为了少教,不教。通过启发、激发让学生能在主动学习、主动探求、主动沟通、主动应用、主动完善的一种学习活动过程中,"自我"得到充分发展。
首先要明确地告诉学生目光要放远,信息学竞赛对思维能力的拓展培养、未来各方面发展都十分有利。让学生意识到信息学科的重要性和学科间知识的无界性、扩展性、渗透性。
其次计算机解决问题的方式比较细致繁杂,程序是对所要解决问题的各个对象和处理规则的描述,算法是解决问题方法的精确描述,结合小学生抽象思维较弱的特点,一些算法只能领悟,对每个问题,不同学生有不尽相同的算法,教师不能采用灌输的办法,只能指导一个方向性的思路,由学生独立编制完成。教师要多做有心人,针对每个学生不同的思维习惯和特点,从学生的主体性地位出发,有针对性分别指导。长期坚持,学生的独立思考和自学能力就得到长足发展。
比如“回形矩阵”题目(jsoi20xx小学组复赛第1题),可以有多种解题方法,可以用普通变量,也可以用下标变量;可以用for循环,也可以用do……loop循环;可用拟人法来解题,也可以用解析法来解题等等。引导学生尽可能掌握多种方法来解题。
有些经典问题,小学教材中给出一般解法,对各种特殊情况和变形不作深入的研究。而在实际应用中,又加入一些约束条件后,原有性质会发生改变,在题目中隐藏着不易察觉的规律,作为教师应多引导学生通过对原问题标准程序段的扩展,将约束条件加入题目中,进而发现规律,得到有效算法。
例: 回文数列(jsoi20xx小学组复赛第4题)
对一个正整数k,求出k的所有拆分,并统计输出其中回文数列的个数。
所谓回文数列是指该数列中的所有数字,从左向右或从右向左看都相同。
例如:
k=4时,有如下的拆分:
4=1+1+1+1{回文数列1}
=1+1+2
=1+2+1{回文数列2}
=2+1+1
=2+2{回文数列3}
=1+3
=3+1
回文数列共有3个
通过分析问题,学生可以采用回溯算法来解决,分为初始设置(包括数据输入、栈的初始化以及初始元素的设置)、数的拆分(回溯)、回文数列的检测、输出结果四个模块。
由于本题没有要求打印输出所有回文数列的原始清单,只要求输出计数的结果,因此我们可以换个角度引导学生重新思考问题,以进一步发现其中的规律。分别以4和5为例。
由于是回 文数列,因此每个数必须被分成3部分,以4为例:4=1+2+1,我们发现中间的数字只能是偶数,即2和0,为2的时候有1种数列,0的时候有2种数列。再来研究一下6,当为4的时候有1种,为2的时候有2种,为0的时候有4种。最后看一下5,情况和4非常的相似,只是中间的数字只能是奇数,这样以来思路就很清晰了,我们可以首先将m2,将这个结果给一个变量k,然后只要计算2^0+2^1+2^2+……+2^(k-
1)的结果,再简化一下就是计算2^k-1的值.
引导对教师的要求:
(1)教师对自已所教的知识领域,达到一定的深度和广度,是引导过程中的基本要求。
(2)教师注重的是思路方法的拓展引导。教师作为教练在竞赛的深化阶段,程序点评分析及拓展是必要的。
二、创新——学生成长的关键
1、组建学习互助小组,编写对应的学习方案
信息学奥赛辅导的实践证明,许多问题不是单靠个人思考所能解决的,最佳答案往往是集体智慧的结晶。学生们每解决一个问题,建立一个新的程序模块,都是一次创新。在解决问题的过程中,刚入门的同学往往没有框框,反而容易有新思路,他们的想法应得到充分的重视。通过讨论,连锁促思。有时学生们的想法会超过老师。因此教师在教学过程中要营造一种平等、自由、互相尊重、互相信任的师生关系。
2、搭建标准程序模块,探究最优解决方案
辅导不提倡题海战术,而要注重对问题不断深入的探索,最终得出一个最优化的解决方案,搭建一个标准程序模块,这样的模式,既为学生减轻了负担,又为他们养成良好的思维品质、提高效率意识提供了极好的锻炼机会。
3、注重“问题”意识,培养倡导问题教学方法
“问题”决定潜力。提不出问题的学生不是“好”学生,没有问题说明没有进行深层次的思维意识, “问题越多,潜力越无限”。当然,有“问题”是前提,解决问题则是学生提升自我的重要途径。交流是关键,与团队交流,与教师交流,在网络中交流,方式是灵活多样,其最终目的就是达到解决问题,掌握知识,建构自我学习框架。
例如:减法算式
小红是二年级学生,老师布置他们回家自己出一道数学题做,题目要求是三位数的退位减法,即要求一个三位数减去另一个三位数,(被减数比减数大),而被减数的个位必须向十位借数才能减去减数的个位,然后被减数的十位也必须向百位借数才能减去减数的十位。小红的哥哥小华,是五年级学生,在学习编程,她就让哥哥帮她编一个这样的程序,小华答应了。小华想到自己正在学习素数(除了本身和1外不能被其它数整除的正整数,1不是素数)知识,就给题目增加了一个条件,就是被减数的百位数、十位数、个位数中或被减数本身必须至少有1个是素数,减数也如此。如:438-269;513-479。请你帮助小华完成该程序,能够编出所有符合这些要求的题目。
通过认真读题,发现最终要列举出所有符合条件的减法算式,对算式中的数字必须满足下列要求:
(1) 被减数、减数必须是三位数
(2) 被减数的个位必须向十位借数才能减去减数的个位,然后被减数的十位也必须向百位借数才能减去减数的十位。
(3) 被减数、减数的百位数、十位数、个位数中或被减数本身必须至少有1个是素数。
要解决上面的问题,首先在程序中判断1000以内的数是否是素数,然后运用穷举算法在三位数中依次查找,判断是否满足上述第二条,如符合条件再判断这两个数是否满足上述第三条,以上两条均满足则打印输出。
但是在运行的过程中,学生发现了一个问题,最后一个算式是 997-899=,899显然不符合题目要求,但是却显示在结果中。反复检测程序,均找不到错误,于是同学们开始尝试思考其他的方法解决这个问题。
深入思考,首先筛选出三位数中符合要求
(3)——被减数、减数的百位数、十位数、个位数中或被减数本身必须至少有1个是素数的数,然后运用穷举算法在这些数中依次查找,判断是否满足要求第二条,以上两条均满足则打印输出。
dim a(900)
n = 0
for i = 102 to 997
a = i mod 10: b = (i
10) mod 10 :c = i 100
if a = 2 or a = 3 or a = 5 or a = 7 then s = 1 else s = 0
if b = 2 or b = 3 or b = 5 or b = 7 then s = s + 1
if c = 2 or c = 3 or c = 5 or c = 7 then s = s + 1
f=0
for j = 2 to int(sqr(i))
if i mod j = 0 then f = 1 : exit for
next j
if f = 0 then s = s + 1
if s >= 1 then n = n + 1: a(n) = i
next i
for i = 2 to n
for j = 1 to i - 1
x = a(i): y = a(j): z = a(i) - a(j)
c = x mod 10: b = (x
10) mod 10: a = x 10
g = y mod 10: f = (y
10) mod 10: e = y 10
c1 = z mod 10: c2 = (z
10) mod 10
if (c1 + g > c) and (c2 + f> b –
1) then print x; "-";y;"=",
next j
next i
end
4、灵活运用条件迁移,强化拓展思维训练
随着学习活动的深入,小学生对编程有了一定的认识,掌握了一些知识和技能时,教师就应采用一些相适应的教学方法。通过条件迁移、由此及彼,触类旁通,从一个问题拓展出许多新问题,在解决这些新问题的过程中,举一反三进一步锻炼思维,利用联想的线索将新问题、新算法、新程序模块并入知识网,通过这样的练习同学们的综合编程能力可以得到提高。
总之,在信息学奥赛辅导过程中,教师的作用不仅是讲授基础知识,更重要的是引导学生学会怎样学习,让学生学会独立思维、自主学习、合作互助、为终身学习、持续发展的需要打下坚实的基础。