提高初中生信息学奥赛复赛水平的三个关键

2017-06-26 18:04金志峰
中学教学参考·文综版 2017年4期

[摘 要]信息学奥赛中每年都有很多初试高手,由于人为失误导致复赛成绩不好。经过实践,教师尝试总结出提高初中生信息学奥赛复赛水平的三个关键,即正确把握考试要求,避免出现低级错误;合理调整考试心态,自信面对复赛考验;灵活应用解题策略,力求考试成绩突破。

[关键词]信息学奥赛;复赛辅导;三个关键

[中图分类号] G633.6 [文献标识码] A [文章编号] 1674-6058(2017)12-0005-02

信息学奥赛是经教育部、中国科协批准,由中国计算机学会举办的面向全国在校中学生的一项重大赛事,它同数、理、化、生奥赛合称为中学五大奥赛。不同于一般的课堂教学,它是学有余力、学业比较拔尖的学生参加的比赛。参赛学生只有通过初赛考验之后才有资格进入复赛。信息学奥赛复赛是现场编程的比赛,要求选手熟练使用一门程序设计语言,并能应用各类算法和数据结构来解决相关问题。每年都有很多选手因复赛临场发挥失误而只能“打打酱油”,其中不乏一些编程高手,因未能正常发挥出水平而遗憾地名落孙山。因此,提高学生复赛水平是非常重要的。教师如何做好复赛辅导工作?笔者尝试做好提高初中生信息学奥赛复赛水平的三个关键,经过实践,效果良好, 对有效提高学生竞赛成绩和解决实际问题的能力具有很好的效果。“三个关键”具体如下。

第一个关键:正确把握考试要求,避免出现低级错误

选手在比赛中经常出现的低级错误如下。

1.选手文件夹未正确建立

有的考生建立了诸如“9D17JS_0261”的文件夹,看似没问题,实则不然,主要错在中间的下划线。近年来江苏省复赛都有这样的规则:要求考生在D盘submit文件夹下,建立选手文件夹,文件夹由机号和考试号构成,如D:submit\9D17JS-0261,中间为英文的减号而非下划线。文件夹建错就相当于书面考试中答题答错了位置。

2.文件名命名出错

有的考生交上来的程序名诸如“date.pas.pas”,很明显这里有两个“.pas”是错误的,主要原因是他的电脑上设置了“隐藏已知文件类型的扩展名”属性,而考生以为需增加扩展名,于是又加了一个“.pas”,错误就发生了。所以对考生来说,在仔细检查自己的文件名是否正确时,要注意自己的电脑是否设置了扩展名的隐藏属性,防止出错。按照考试规则,源文件名必须要正确规范,否则就无法评测。

3.注释符号未去除

有考生提交上来的程序中出现了“//assign(input,pencil.in);reset(input);”“//assign(output,pencil.out);rewrite(output);”的语句。这里的“//”符号在程序中起注释作用,运行时会使当前行为不执行,也就是这里的关联功能语句无法执行,导致无法测评,这样考生肯定不会有分数了。考生这样写,主要是因本机调试的需要而加上去的,最后提交时又忘记去除,于是就出错了。

以上出现低级错误的得零分的程序,其实并不一定是选手编程水平差,有的程序只要把这些小问题纠正过来,即可得到高分,最终的结果才不会令人扼腕叹息。实际考试过程中,考生可能还会出现种种不该有的问题,为避免各类低级错误的发生,笔者建议考生需正确把握考试要求,并做好以下几点。

(1)认真阅读《选手注意事项》并加以重视和注意。

(2)检查文件夹、文件名是否正确,保存路径是否正确。

(3)检查程序中除语法外,是否还有其他问题。

(4)检查文件对数据的输入、输出是否完全符合题目要求。

(5)文件提交后,仔细核对字节数是否一致。

第二个关键:合理调整考试心态,自信面对复赛考验

一位哲人说过:“你的心态就是你的主人。”在现实生活中,我们不能控制自己的遭遇,却可以控制自己的心态;我们不能改变别人,却可以改变自己。其实,人与人之间并无太大区别,真正的区别在于心态。笔者有一学生沈某,编程基础很好,智力水平也很高,平時在学校练习评测时总是最高分。但他的心理承受能力和自我调节能力很差,每到临近考试时总是想法太多还失眠,导致临场发挥糟糕。平时水平不如他的学生,反而能考得比他好,他初中阶段两次参加复赛都没能拿到一等奖。可见,在信息学奥赛复赛中,选手合理调整好自己的心态是非常关键的。笔者认为,调整心态可从以下几个方面着手。

1.放松心态,自信面对

一般在比赛前,笔者会观察学生表现的细节,对于比较容易紧张、心理素质不太好的学生,要想办法让他们放松,可以让他们适当玩一会儿游戏,看看喜剧片或者跟他们谈谈心,以此来缓解他们的压力。笔者会告诉学生:“你们能进入复赛已经非常棒了,可以想想学校里未能参加复赛的同学正用羡慕的眼神看着你们呢,你们要加油!”鼓励学生在考试时,不要看到题目就怕,就认为自己做不出来,这样只会让自己连本来会写的程序都写不出来,必须要对自己有信心,信心是命运的主宰者。

2.戒骄戒躁,沉着应对

竞赛中,由于处在一个陌生的环境,再加上一时间面对那么多难题,考生一般都会出现紧张、急躁、畏难等心态。此时,考生需戒骄戒躁,否则,越急只会越写越乱,连最初的灵感都丢失了。因此,我们要指导学生学会自我调节,因为竞赛不只是编程能力的竞赛,更是心理状态的竞赛,谁能先摆脱紧张、急躁、畏难的障碍,谁就能掌握主动权并且发挥好。情绪调整好后,才有可能沉下心来思考问题。复赛试题不会像数学题那样,直接将已知条件告诉你,再告诉你求什么。命题人往往会编一些生活中的故事,对于内容很长且难以理解的题目,必须要沉着,有耐心。可以告诉自己这题只是题意不好懂,其实看懂了就很简单,很多时候,事实也的确如此。

3.切勿冒进,以稳为主

在写程序时,教师可能会要求学生写出多种解法锻炼其思维,培养其创新精神。但考试时考生一定要用最稳妥的方法,新方法可以平时再尝试,因为考试一年只有一次机会。当有多种方法供选择时,要选把握最大的方法,即使拿不到满分,也比用没把握的方法导致零分要好。比如,试题明显是用动态规划方法,而动态规划内容考生又不是很熟悉,最有把握的是搜索,此时就应退而求其次用搜索方法来做。

第三个关键:灵活应用解题策略,力求考試成绩突破

1.合理分配解题时间

江苏省信息学奥赛高级教练员林厚从老师对学生有这样的要求:在信息学奥赛解题过程中要把握好三个三分之一,即审题、编程、测试。每一题花在这三部分上的时间都要尽量平均,不要斩头去尾。这是非常有道理的,没有经验的考生几乎会把所有时间都放在编程这一部分上,而忽视审题和测试。首先,审题很关键。例如,NOIP 2014第一题珠心算测验,题目大意是:已知n个数,求恰好等于集合中另外两个不同数之和的数的个数。很多考生都错误地理解成有多少对两数之和等于另一数。考生如在这种思路下解题,会使本来能得满分的题目最终只收获40分。仔细分析题意,它要求的是求个数,等于另两个不同的数之和。如5=1+4,5=2+3,就只能算是一个了。所以,审题也是解题过程中很重要的一个环节,千万不能忽视。考生不应在没有完全理解题意的情况下写程序。其次,测试也很重要。编程结束后必须检查自己的代码是否还有问题,测试则是很好的检查方法。测试的数据既要考虑一般情况,也要考虑特殊情况,因为评分的唯一标准是测试数据。在时间允许的情况下一定要写一个能解决所有问题的程序。测试内容通常包括这些方面:①测试程序算法的正确性,代码是否还存在漏洞,与手工或者暴力程序得到的答案比较,如贪心策略对不对。②测试为优化算法而维护的数据结构是否正确,如堆、平衡树等,否则得不偿失。③测试程序是否会超时。④测试程序是否会爆数组空间。⑤测试程序是否会爆数据类型、精度够不够等。

2.充分利用草稿纸

信息学奥赛复赛解题思维过程是复杂而曲折多变的,参赛者考虑问题必须全面。考生若仅凭自认为很强的“心算能力”来编程,往往会漏洞百出、错误不断,此时若能用好草稿纸则可缓解这类问题。首先,在草稿纸上列出程序提纲,可帮助考生理清思路,使问题结构模块化。考生可以在草稿纸上列出程序提纲、程序用什么样的结构和算法等,规划好后再动手写程序,这样才不至于越写越乱,越做问题越多。在电脑上编写代码时,考生经常会在分心的时候突然断了思路,不知道下一步该写什么。此时,可以看一下草稿上的提纲或其他信息提示,帮助快速找回思路。其次,在草稿纸上列出各类注意要点,有助于考生考虑问题面面俱到。笔者之前的学生经常是能够做的题目得不了满分,这属于发挥欠佳。究其原因不是自我估计不准,而是考虑问题不够全面。如何解决呢?考生可以更好地发挥草稿纸的作用——在草稿纸上列出本题中各类注意点,然后在写代码时加以重视。比如数据如何存储,要定义什么样的变量,开多大的数组,内存空间会不会超标,如果超标能不能利用数据之间的关系将它们压缩等。再如时间复杂度会不会太大,如果超时能不能换一种算法来减少运算量等。

3.正确应用考试策略

参赛考生应正确估计题目的难度和自己的水平,只有应用正确的考试策略才能保证有良好的临场发挥。首先,要主攻相对简单的题目。初学者或基础不是特别好的考生一般不太可能完成所有的题目,应把重点放在平时熟悉和有把握的题上(一般是前两个题目),对这些题目要加强审题正确性、编程准确性、测试全面性,把自己有能力拿到的分拿稳。其次,对于难题,考生应该慎重放弃。竞赛的后两题通常很难,考生可能会无法理解或想了半小时仍然毫无头绪而无从下手,此时就可以果断放弃了。有时,考生也可以考虑放弃拿满分。一般的试题都会告诉你数据范围,如30%的数据在一个小的范围,60%以内的数据在稍大的范围,90%的数据在更大的范围。假如你确实只能解决小数据,应放弃全对的期望。每年复赛结束后,总有这样的情况:分析出这道题正确算法的学生花了半天的时间却因一个小错或者是一个小的忽略而“颗粒无收”,而那些大胆放弃满分的学生在这道题上却可得到30分。

总之,信息学奥赛为广大学生提供了展示自己才华的舞台,只要学生充分用好以上提高信息学奥赛复赛水平的三个关键,就能在竞赛中获取好成绩。事实证明,世上无难事,只怕有心人。笔者所带学生近三年来有7人获得全国青少年信息学奥赛(江苏赛区)普及组一等奖就是很好的例子。

[1] 金志峰.中学生编程学习中的困难因素分析与对策研究[J].信息记录材料,2016(17).

[2] 林厚从.程序设计与应用[M].南京:东南大学出版社,2012.

(责任编辑 黄 晓)