|| 返回 || 本站首页 ||奥赛信息||计算机基础||pascal基础||数据结构||经典算法||试题汇编||校本教程||自主练习||

|| 奥赛信息 >> 专家话题

双击自动滚屏 

   
专家话题


佚名

全国青少年信息学(计算机)奥林匹克竞赛专家话题


奥赛凸现青少年人才培养规律

黄勇、谢湘

(文章来源:中国青年报 2000年9月28日)

  从1989年发起并参加信息学国际奥林匹克竞赛以来,我国选手发挥稳定,共取得过23块金牌,其中还有两次获得团体冠军,两名选手获得个人总分第一。通过竞赛,培养和涌现了一大批优秀的计算机后备人才,其中有相当一批已经在信息技术领域展露才华———如已成为国家863语音识别研究项目主力研究人员的奥赛铜牌获得者柴海新、被评为清华大学“十佳”学生的计算机系学生李劲、大三时就完成高速汉字激光打印机研究工作的吴昭等等。参加本届奥赛的中国选手张辰、徐静、肖洲、谢婧等因素质优异,目前已被清华大学计算机系免试录取,并即将更上层楼,成为我国参加国际大学生计算机程序设计大赛的主力,崭露头角指日可待。

  业内人士指出,以计算机技术为核心、正成为信息化时代最重要学科的信息学人才的培养,其意义不仅在收获人才,更重要的是凸现了青少年人才的培养规律,为各个领域的人才辈出提供了重要的启示。

  要有高层次的专家领衔。我国1984年就开始了国内信息学奥林匹克竞赛,牵头参与组织者以国内在该领域领先的清华大学计算机系为主,确保人才培养的高水准。该校教授吴文虎是我国计算机教育领域的拓荒者之一,10多年来一直致力青少年计算机教育的普及与提高,贡献巨大,并连年担任中国国家队的领队。目前又由该校青年教师邓俊辉博士接过领队重任。这些高层次的专家教授不仅组织全国性比赛,还坚持每年数次组织对学生和基层教师的培训,使得先进的培训方法和手段得以迅速普及,全国各地都诞生了一批高水平的基层教练,各地在从事青少年计算机人才培养的过程中因此少走了弯路。

  对特长生要尽早开始培养,越早越好。长沙雅礼中学一位取得过全国数学竞赛一等奖的学生过去与计算机接触较少,在高中进入该校后才开始计算机训练,尽管这位学生拥有很强的逻辑思维能力,对计算机的兴趣也非常浓厚,具备很好的培养条件,但与同龄的优秀选手相比差距较大,原因在于起步的时间太迟。据记者了解,教育部最新颁发的教学大纲规定,初中阶段的计算机教学重点是操作,从高中开始操作和编程并重。专家们认为,一旦条件成熟,操作的任务完全可以下放到小学完成,到了初二就可以接触最基本的程序语言,为高中阶段初步学会用编程解决问题打下基础。对一批喜欢计算机、在这方面能发挥特长的学生来说,不尽早培养就会坐失良机,等到醒悟过来已经迟了。

  要引导学生通过自学取得独立获取知识和运用知识的能力。比如涉及算法和数据结构的知识对学生们进一步的提高非常关键,很多就要选手通过自学掌握。吴文虎教授对记者介绍,他本人的计算机知识最初就是通过自学掌握的。现在计算机的知识更新很快,新的操作方法、新的技术层出不穷,要了解。

  特长人才培养决不是“毕其功于一役”,而是建立在全面发展的基础上。各地在计算机人才培训中都反复强调,从事计算机学习不能影响其他功课的知识积累。吴文虎教授指出,中外研究生的水平相差很大,关键是知识背景问题。对每一个智力正常的学生来说,在一定的时期内集中精力培养一项专长并不困难。但在这个专长领域能否成为有创造力的人才,能否将专长不断发展,持久保持下去,离不开广阔的知识背景,否则肯定行之不远。在计算机兴趣小组的活动过程中,我们始终坚持确立其“课外活动”的地位,要求学生在完成学业的前提下合理安排,挤出时间学习他们感兴趣的计算机知识。这样的要求使得多年来产生的奥赛选手都是各方面全面发展、进入大学之后后劲十足的人才。

  要彻底改变“纸上谈兵”的陈旧教学模式。否则就会误人子弟。计算机天然地需要动手实践,掌握最基本的操作方法才能谈到运用。在计算机教学中理论与实践的结合已成了家常便饭,学生们正是在频繁的动手之中培养了各种能力。能力的培养要靠活动来锤炼,活动愈是丰富多彩,锐意求新,能力发展的可能性就越大。   要培养专长就必须打破课堂教学和现有知识结构的限制,因材施教,鼓励冒尖,不要求一刀切,必要的时候开小灶,为扎实基础上的特长发挥创造条件。课堂教学最大的弊端是讲求整齐划一,在一定程度上抑制了学生特长的发挥。长沙雅礼中学的计算机兴趣小组经过多年摸索,重新设计知识结构。根据学生的接受能力,从初一开始除开设计算机基础课程外,还开设“TURBO PASCAL”语言程序设计的课程,对进入高一年级的学生,重点开设《数据结构》、《算法》等课程,其中的重点、难点邀请教授、专家讲解指导,其他内容则要求学生自学。进入高二增开《图论》、《组合数学》等相关课程以扩大学生知识面,强化解题算法和技巧,以形成参加全国、国际比赛的知识结构和心理素质。并开始要求学生写心得体会和论文、实验报告,培养总结能力和用书面语言表达观点的能力。他们还针对不同特点的学生实施分类指导。如经验型的学生,加强理论指导,让他们多进行总结归纳;理论型的,则加强实践能力的训练;对某些学生素质的缺陷,如基础不扎实、口头表述能力差、优化程序能力差、数学知识缺乏等,则提出针对性的解决办法,一把钥匙开一把锁。

  清华大学教授吴文虎指出,从计算机的学习看青少年人才培养规律,启示很多。但最重要的问题还是教育观念的改变。时至今日,依然有人认为特长教育是画蛇添足,把它机械地归入应该“减负”的范畴,这种思想对培养各方面的专门人才是十分有害的。

  今年8月在中国召开的国际计算机大会上传出信息,中国IT业目前面临的挑战主要是在计算机技术方面,首先国内的技术开发缺乏层次,大部分停留在应用范畴上,创新不足使技术过于单调,缺乏多样化;其次,许多核心技术掌握在少数国际公司手上,属于自己的创新人才还极少。尽快把握人才培养规律,使更多的人才脱颖而出,不仅仅是计算机领域的当务之急。


信息学(计算机) 奥林匹克培训与素质教育

(本文原载“走向新世纪—面向21世纪天津基础教育研讨会”论文集,天津人民出版社)

天津师范大学计算机系 李学武

改革开放以来,我国一批优秀的中学生积极参与了国际各学科 (数学,物理,化 学,信息学,生物学等) 的奥林匹克竞赛(以下简称"奥赛"), 在各项比赛中,均获得 优异成绩,令世人瞩目. 仅以 96 年国际信息学(计算机)竞赛为例, 虽然我国只派出 4 名选手(各国最多可派5名选手), 但结果却以全获金牌的成绩夺得总分第一.

然而, 奥林匹克学科竞赛作为一种事业, 展望其前景, 并非一片光明. 首先, 在培训工作上, 存在不少问题, 不容乐观. 其次, 社会上不少人对奥赛了解甚少, 特别是某些望子成龙过于心切的家长,盲目让孩子参加各类培训, 其适得其反的做法, 导致了一些人对奥赛的误解. 至使一些报刊不时刊登非难奥赛的文章. 此外, 在国际上,一小股反华势力利用奥赛制造"两个中国"或"一中一台"的活动也始终没有停止.

笔者过去曾从事过数学奥赛的培训, 从 95 年起,开始进行信息学(计算机)奥赛的培训. 本文将根据笔者的实践, 以信息学(计算机)奥赛为主,探讨几个方面的关系,其目的是希望学科奥林匹克这项事业能沿着一条正确的健康的道路不断地发展,前进, 并期望我校能为天津市,乃至为全国的奥林匹克竞赛作出更大的贡献.

一. 信息学(计算机)奥林匹克概况

为便于后面的讨论, 在此, 先对信息学(计算机)奥林匹克予与简要的介绍. 当今, 计算机已成为"人类通用的计算工具", 计算机技术与通信技术,自动控制,网络技术等相结合构成的信息技术, 已成为现代科学技术的基础与核心, 成为社会第一大产业. 进入 90 年代以来,信息化的程度已成为衡量一个国家综合技术水平和综合国力的主要标志. 因此, 在广大群众中,特别是在青少年中迅速普及信息技术已成为刻不容缓的一件工作[1][2].

邓小平同志在 84 年初曾经指出:"计算机的普及要从娃娃抓起", 为响应这一号召, 1984 年, 我国举办了首届全国青少年计算机竞赛,至今已连续举办了十三届. 目前,全国性的信息学奥赛可分为三个层次: 先举办全国信息学(计算机)奥林匹克分区联赛, 联赛分高中组,初中组进行, 以普及为主. 近两年我市每年都有上千人参赛. 在分区联赛的基础上,各省市组成自己的代表队(一般为3名选手),参加第二个层次的比赛, 即全国青少年信息学奥林匹克竞赛 (简称 NOI), 第三个层次是从 NOI 中选拔优秀选手(一般为 15 人), 经过培训, 考试选拔,组成国家队(一般 4-5 人). 参加国际信息学奥林匹克竞赛, 即IOI, 这是国际性的最高水平的竞赛.

由于分区联赛与 NOI 在试题难度上相差较大, 不少省市在分区联赛后, 还要组织自己的选拔赛, 以组成参加 NOI 的本省市代表队.

94 年以前, 我市的 NOI 比赛成绩较差, 最好的一年为第 17 名,有一名选手获铜牌. 近两年来, 参赛成绩逐步提高. 95 年, 有两名选手获铜牌,总分为第 14 名, 96 年,有两名选手获银牌, 总分为第 10 名. 今年全国在 NOI 中获金牌, 银牌的选手共15 名, 将在他们中间产生国家队, 参加明年的IOI, 在今年暂停高中毕业生保送上大学的情况下,他们仍被确定为毕业后直接保送到清华大学或复旦大学. 由此可知, 我市选手今年参赛成绩的提高, 确实是突破性的, 是令人振奋的.

二. 正确处理竞赛与普及的关系

各学科的奥赛, 其内容都不同程度地超出了现行的中学教学大纲,其难度更是远远超出了中考和高考. 因为举办这类竞赛的一个直接的目的是要在优秀学生中选拔最拔尖的人才. 这样, 参赛学生光靠课内听讲,课外自学是不够的, 必须要参加课外的培训. 而这种培训又不是一般教师能够胜任的, 这一点,将在本文第四部分详细讨论. 于是,有人会问: 为了最后获胜的几个学生, 让一大批学生耗费大量精力去准备竞赛, 让一些高水平的教师放弃其它重要工作投入培训,是否值得? 笔者以为, 答案不言而喻是肯定的, 我们不妨考虑以下一些因素:

1. 要鼓励青少年积极进取,勇于拼博

与体育奥林匹克一样, 学科奥林匹克也是一个拼博的战场, 是智力 ,能力,品德与意志的较量. 我们应鼓励青少年从小要立志作高水平的人才, 要积极进取,勇于拼博, 而不要安于现状. 这一点,对于当前以独生子女为主的中小学生, 尤为重要. 另外, 胜负也不仅仅是几个人的事情, 一个足球队, 不过一二十人,但一场比赛的胜负可以改变一个城市,甚至一个国家的人民的情绪. 学科奥林匹克固然没有那么大的效应, 但仍然与一个城市,一个国家的荣誉密切相连. 具有强烈的现代大都市意识的上海市, 具有同样强烈的争先意识, 他们非常重视各学科奥赛,为此作了大量投入. 特别是对优秀选手采取了一些特殊的措施,从而保证了上海市在全国多种学科奥赛的连续多年的领先地位.

2. 选拔只是竞赛的一个直接目的,竞赛的最终目的是普及

参加 NOI 或 IOI 比赛的, 都是高水平的选手, 对他们自然要进行赛前的培训, 但也不是随便找几个学生就可以培训成功的. 准备参赛的学生,必须要有扎实的程序设计的基础,有较强的分析问题解决问题的能力. 而这只有通过不同层次的普及工作, 在青少年中大力推广计算机教育才能实现. 目前,用于计算机教育的正式课时还比较少, 因而,课外活动已成为一个主要的培训的渠道. 对课外辅导处理得当, 不仅不会影响正常教学, 而且有利于学生的全面发展.

在中学生中普及计算机教育, 不仅是可能的, 而且也是必要的. 对此,我们应看到这样一个基本事实: 学生从小学升到初中,尽管还有很大的可塑性, 但总体上已划分成差别很大的多个层次. 1993 年, 我们在研制初中代数题库时, 曾用同一份试卷对市内某些区的全体初二学生进行测试, 结果各校平均分差别很大,校平均分在 40 到 90 这个区间内几乎是均匀分布. 新编的九年制义务教育教材,删去了旧教材的不少难点,不能说没有这方面的考虑. 换句话说, 有相当多的学生不会满足教学大纲规定的课堂教学的内容, 渴望得到更多的知识. 如何引导这些学生,开发他们的智力, 使他们健康全面的发展,决不是一个小问题. 我们这样讲, 并不意味着可以放弃学习较差的学生. 对青少年的全面教育是一个十分复杂的系统工程, 有关的讨论已超出本文的宗旨.

三. 奥赛培训是素质教育,不是应试教育

"素质"一词具有很丰富的内涵, 这里我们主要指心理素质与能力素质,后者包括获取和运用知识的能力, 创造思维能力, 科学研究能力等等.

在培训工作中, 笔者深深感触到, 不少学生最缺乏的是刻苦钻研,拚博向上的精神. 这些学生头脑都很聪明, 接受新知识的能力很强, 基础也不错,但遇到难题时, 如果尝试几次不成功,便等待别人指点, 其实某些难题按他们的能力是可以独立解决的. 我们曾留过一些阅读程序的作业, 读程序本来就很艰苦,所给的程序又比较难, 结果多数学生都没有完成. 显然,不解决这些问题, 他们很难达到较高的层次. 一个优秀的选手, 必须具有良好的心理素质,这也是奥赛培训的一个重要内容.

有人在某报撰文指出:"奥赛培训无非就是题海战术",笔者以为,对此要作具体分析. 学习任何一门知识, 都要做适量的习题,奥赛培训当然也不例外. 而且为了具有较宽的知识面和较强的能力, 题量还不能太小. 但不能笼统地认为,多作题就是"题海战术", 所谓"题海战", 一般是指对同一知识点,作大量习题, 靠多次重复,靠熟练来应付考试. 目前一些学校还在采用这种方式应付高考, 是不得已而为之, 因为教师和学生的水平还都不尽人意. 而奥赛培训,采用这种方式是绝对行不通的. 以数学竞赛为例, 难度在全国联赛之上的竞赛题, 目前至少可找到上万道, 如果一天做十个题(有些难题,即使一天做一个,也很不容易), 也得用 1000 天,这对于中学生是无法承受的,计算机方面的赛题还没那么多,但每个题都要上机调试,其时间的耗费也是无法承受的. 因而,奥赛培训只能设法让学生具有和提高解决难题的能力, 这要靠学生对知识的深刻的理解和对知识的灵活运用. 另外,每次的竞赛题大都是新创造的,靠"背题",靠"熟练"去应考也无济于事. 既不搞"题海战术", 又要让学生能作难题, 这是对教师的能力的挑战. 一个好的培训,应教会学生在学习知识时怎样抓住其精髓, 遇到问题时怎样去分析研究. 因为奥赛难题的求解过 程, 实际上也正是一种科学研究的过程. 如果学生从小就能得到这种高素质的培训, 以后即使得不到奖牌, 也会受益终生.

四. 良好的组织与培训是奥赛成功的关键

就中学生总体水平而言,我们天津市不比其它大城市相差多少,但历年来,在各学科奥赛进入全国前几名的选手中,天津选手并不多, 而北京,上海等大城市,除了偶尔的空白,基本上年年都有, 差距是很明显的. 笔者以为, 最主要的差距体现在对奥赛的组织与培训工作方面.

众所周知, 奥赛培训是一种高智力的活动, 其难度不亚于某些科研工作,一个好的教练员, 起码要具有能独立解出各种奥赛难题的能力,这不是件轻而易举的事情, 因为不少奥赛难题就是某些专家的部分科研成果. 在我市,一些教师在这方面已达到了相当高的水平, 如南开大学李成章教授, 除了他自己的微分方程专业,在数学竞赛方面也作出了许多出色的工作, 已成为国内外知名的数学奥林匹克专家. 实验中学副校长, 特级教师王连笑, 在数学竞赛方面也有很深的造诣,在今年全国数学联赛中, 在天津市的前十名选手中, 实验中学占了六名, 在前六名中,实验中学占了四名. 遗憾的是, 象这样的高水平的教练,在我市太少了. 尽快扭转这种局面, 已成为当务之急.

1. 奥赛培训应主要依靠中学教师

不容置疑, 参加奥赛的选手必须要具有相当扎实的基础, 基本功不扎实,只会作几道难题, 毫无意义. 以信息学奥赛为例,考核方式主要是直接测试计算机的输出结果, 在比赛中, 我们常看到一些选手对试题能归纳出算法,但不能在规定的时间内在计算机上实现, 特别是当运行结果不正确时, 不能准确地找出程序的错误, 从而导致考试失败. 任何高水平的发挥都建立在雄厚的基础之上,而打基础的工作应主要依靠中学校内的课外活动,其责任自然要落在中学教师的肩上. 中学教师直接与中学生接触,了解每个学生的特点, 因材施教, 有的放矢, 容易取得较好的培训效果. 若进一步做到统筹安排,形成梯队, 则必将提高整体水平.

据笔者了解, 在信息学奥赛培训上,许多中学教师都做了大量的工作, 一些教师已达到了较高的水平, 但从总体上讲, 还不能适应形势的需要.

这里只谈一个积极性的问题. 笔者在为本系本科生,研究生讲授《计算机竞赛培训》,《算法设计与分析》等课程时, 曾邀请一些中学教师免费旁听, 但响应者寥寥无几.原因是多方面的, 笔者以为最主要的是缺乏一种鼓励教师在这方面进行投入的机制. 作为学校, 奥赛成绩突出,自然可以宣扬一番. 成绩不好, 也没什么了不起. 作为教师,要想在奥赛培训的水平上有一个质的飞跃, 谈何容易, 投入大, 收效慢, 远不如做些其它"短平快"的工作,更有利于晋升. 固然, 在培训工作上,我们需要教师对事业的奉献精神, 但这并不够, 为了造就一批从事奥赛培训的高水平的教师, 必须要有一个良好的环境, 要有良好的组织工作,要有能鼓励教师不断进取的政策, 这是我们的奥赛事业能不断前进的必要条件.

2. 高等学校应该为奥赛培训作出贡献

不可否认, 某些地区,在某些学科上, 奥赛取得突出成绩, 应主要归功于一些优秀的中学教师. 但从总体上讲, 高等学校教师的作用是难以替代的,它往往会影响到一个地区的总体水平. 奥赛培训, 就其本质而言,是研究能力的培训. 大学教师与中学教师, 作为两个群体(不是指某些个别成员), 其重要差别之一,就是在科研能力上. 一个好的培训, 不仅仅是介绍知识, 介绍试题解法,还必须介绍怎样去思考问题,解决问题. 很难想象, 如果没有大量的科研实践, 一个教师能把科学研究的方法讲得深入,透彻,生动,具体. 而这些正是学生们最需要的.

我校在奥赛培训上至少可在两个方面发挥作用:首先是培训高水平的从事奥赛的中学教师, 对此, 即可直接为在校学生开设有关课程,也可以为各校的中学教师办培训班. 近两年来, 笔者开设了《计算机竞赛培训》等选修课,已收到一定的效果, 一些学生毕业任教后, 已成为该校奥赛培训的骨干教师. 其次,我们可直接参与对中学尖子学生的培训,这更能发挥我们的优势. 近两年我市信息学(计算机)奥赛成绩的提高, 就是一个很好的例证.

目前, 各学科奥赛都有自己的组织机构, 我们介入奥赛培训,应注意协调与各方面的关系, 既不能成为哪个部门的附属, 也不能越俎代庖, 我们的最终目的,是为天津市,为全国作出更大的贡献. 此外, 笔者衷心期望我校有关部门能重视这一工作,对从事这一工作的教师给予更多的支持.特别是在经费上给予必要的资助,使有关教师能作出更大的成绩.

纵上所述, 学科奥林匹克竞赛, 作为中学生素质教育的一个组成部分,应受到各方面的重视, 应认真解决在组织与培训工作中存在的种种问题,使这项事业能沿着正确的健康的道路不断前进.


从一题多解看解题方法

周祖松

  信息学竞赛,要求学生有很强的思维能力和逻辑推理能力。下面通过一题多解,层层深入,希望能够起到抛砖引玉的作用。题目:求1×2×3×……×n所得的数末尾有多少个0?(1000〈n〈10000)即:若把n!分解成b×10 x形式,其中b为不能被10整除的正整数,求x为多少?

  看到这个题目,一般读者想到计算机的运算速度那么快,可以先求出1×2×3×...×n这个数,再数出后面的0的个数,可是计算机的长整型也只能表示出10位有效数字,而n的阶乘(1000〈n〈10000)有上万位数,计算机能表示出来吗?所以这种方法行不通,我们必须想出其它的方法来解决这个问题,在这里我们用pascal语言提供三种方法。

  方法一:采用从1乘到n,每乘一个数判断一次,若后面有0则去掉后面的0,并记下去掉的0的个数。我们是求后面的0的个数,与前面一些数无关,为了不超出数的表示范围,去掉前面与0无关的数,只保留三位有效数,当乘完n次后就得到0的个数。

  program ex1;

  var

   i,ii,n:integer; sum:longint;

  begin

   ii:=0;

   sum:=1;

   write('please input n:');

   readln(n);

   for i:=1 to n do

   begin

   sum:=sum*i;

   while sum mod 10=0 do

   begin

   sum:=sum div 10;

   ii:=ii+1;

   end;

   sum:=sum mod 1000;

   end;

   writeln(ii:6);

  end.

  方法二:第一种方法能得到正确的结果,可是运行的次数太多了,在1×2×3×...×n这些数中有些与生成0无关的数(如3、7、9、13等)可以不考虑进去,其实影响生成0的数只有2的倍数和5的倍数,如在1到9这些数中只有2×5,4×5,6×5,8×5,这些数能生成0,从这些数中我们还可以看出,真正影响生成0的是5的倍数,这些数的分解数含2的数显然多于含5的数,因此我们可以得出这样一个结论:n!的分解数中有多少个5,末尾就有多少个0。这样就可以使外面的大循环的次数减少五分之四。

  program ex2;

  var

   i,ii,j,n:integer;

  begin

   j:=5;ii:=0;

   write('please input n:');

   readln(n);

   while j〈=n do

   begin

   i:=j;

     while i mod 5 =0 do

   begin

   i:=i div 5;

   ii:=ii+1;

   end;

   j:=j+5;

   end;

   writeln(ii:6);

   end.

  方法三:第二种方法是把含5的数转变成含0的数,再求0的个数,我们已经知道n!的分解数中有多少个5就有多少个0,我们可不可以直接求5的个数呢?答案是肯定的。这种方法就是根据含5的个数求0的个数,用层层剥皮法。先以5为步长,执行一次循环,进行第一次剥皮,求出含5的个数(个数为n/5取整),通过第一次剥皮5,10,15,20,25,30...变成1,2,3,4,5,6...再以5 2为步长,执行第二次循环,进行第二次剥皮,求出含5 2的个数(个数为n/25取整),在第一次剥皮后25,50,75,100,125,150……这些数变成5,10,15,20,25,30……再经过第二次剥皮就变成1,2,3,4,5,6……再以5 3为步长……直到步长大于或等于n退出循环,具体实现如下:

  program ex3;

  var

   i,ii,n:integer;

  begin

   write('please input n:');

  readln(n);

   i:=n;

   ii:=0;

   while i〉=5 do

   begin

   i:=i div 5 ;

   ii:=ii+i;

   end;

   writeln(ii:6);

  end.

  这三种方法,从常规思维到方法一,从方法一到方法三,思维过程步步加深,循环次数成倍减少,方法一与方法二外循环次数分别为n次和n/5次,里面还有内循环,方法三只需√n次循环,笔者实习期间曾以此题为竞赛题目考查学生的思维能力,推理能力,激发学生学习计算机的兴趣,起到了很好的效果。


 
 

 

 
 
 

制作与维护:重庆市忠县中学 谭海