时间:2022-06-25 09:23:20
序论:在您撰写信息学奥林匹克竞赛时,参考他人的优秀作品可以开阔视野,小编为您整理的7篇范文,希望这些建议能够激发您的创作热情,引导您走向新的创作高度。
一、培训班开设:,全国公务员公同的天地www
根据全国青少年信息学奥林匹克()竞赛的要求,开设初中普及组和高中提高组两个竞赛辅导班专门开展培训工作。其中初中普及组主要在初中一年级学生中选拔,并吸收少量优秀的初中二年级学生,计划人数人左右,由××老师负责主要培训课程。高中提高组在高中一年级学生中选拔,计划人数人左右,由××老师负责主要培训课程。
二、学生选拔工作:
培训班学生主要在学习成绩良好和对计算机兴趣浓厚的学生中选拔,组织学生召开动员大会,并自行命题安排选拔考试。分别对学生的计算机基础知识、数学能力、逻辑能力和接受新事物能力进行了全面考核,经过综合考虑,从参加选拔考试的名初中学生中选拔了名组成初中普及组培训班,从参加考试的名高中学生中选拔了名组成了高中提高组培训班。
三、课程安排:
根据全国青少年信息学奥林匹克竞赛大纲对初赛参赛知识的基本要求,结合学校实际情况,对培训班的课程安排如下:
课程
主要内容
时间安排
节数
程序设计基础
⒈程序基本结构,简单语句、表达式
月日-日
⒉输入语句,输出语句,输出格式
月日-日
⒊关系式、逻辑式与布尔数据,选择结构语句
月日-日
⒋基础训练
月日-日
⒌循环语句,循环语句,循环控制
月日-日
⒍基础训练
月日-日
函数和过程
⒎标准函数和过程与自定义函数和过程
月日-日
⒏函数和过程中的参数及变量作用范围
月日-日
⒐基础训练
月日-日
数据结构
⒑线性表、队列和栈的基础知识
月日-日
⒈线性表、队列和栈的程序实现
月日-日
计算机知识基础
⒉计算机软件和硬件基础知识
月日-日
⒊计算机中的数、进制的转化
月日-日
全面复习
⒋全面复习,准备参赛
月底-月初
四、培训时间和地点安排:
初中普及组:
周次
上课时间
上课地点
备注
周一
下午第节-第节
电脑一室
周三
晚修第三节
电脑一室
周五
下午第节-第节
电脑一室
高中提高组:
周次
上课时间
上课地点
备注
周一
下午第节-第节
电脑三室
周三
晚修第三节
电脑三室
周四
晚修第三节
电脑三室
五、培训班学生要求:
⒈严格遵守上课时间,不迟到、不早退,有事提前请假。
⒉严格遵守电脑室上课要求。杜绝玩游戏,发现立即开除出班。
⒊上课带好笔和笔记本,认真做好笔记。
⒋有连续三次未到或者总计五次未到者,直接开除出班。
⒌培训班采用不定额淘汰机制。进行阶段考试,精简人数。
六、培训目标:
我们目前还欠缺信息学奥林匹克竞赛的辅导经验,一切都处于摸索阶段。希望通过半年多时间的努力,能够在××年月份举行的全国青少年信息学奥林匹克竞赛中取得较好成绩。为学校争取荣誉,为以后参加全国青少年信息学奥林匹克竞赛及组织竞赛培训积累经验。
目标:初中普及组和高中提高组分别有至少一名学生取得市二等以上奖项,争取获得三等以上的学校团体奖。
关键词:奥林匹克竞赛;“学案导学”;教学模式
中图分类号:G434 文献标识码:A 文章编号:1671-7503(2015)19-0048-03
进入21世纪以来,高效地培养高素质的人才是各国教育关注的焦点。党的十明确提出要“深化教育改革,全面实施素质教育”。信息学奥林匹克竞赛是教育部和中国计算机学会举办的一项益智性的竞赛活动,每年为国家选拔出许多优秀的计算机人才。然而,信息学奥林匹克竞赛开展情况不太乐观,同时,信息学奥林匹克竞赛教法、学法单一,使教学效果大打折扣,目前,处于一种尴尬的地位。因此,信息学奥林匹克竞赛课堂教学如何提高课堂效率,改变学生的学习方式,有效地提高教学质量,成为一线教师所要研究的重要课题,理应积极探究其教学模式改革。
一、信息学奥林匹克竞赛“学案导学”教学模式设计
全国和谐教学法研究会理事长、天津市教科院基础教育研究所王敏勤教授曾经说过,“课改进入深水区,改到深处是模式”。那么,什么是教学模式呢?教学模式可以理解为开展教学活动的一整套方法论体系,它实质是在一定的教学思想或教学理念指导下建立起来的、较为稳定的教学活动结构框架和活动程序。
信息学奥林匹克竞赛“学案导学”教学模式是在“尊重学生,相信学生,全过程放手让学生学”的教育理念指导下,以学案为载体,以教师的“诱导”、“引导”、“疏导”、“指导”四环导学为主要教学方式,以学生的自主探究、自主学习、合作学习为主要学习方式,以提高自主学习能力为目的,师生共同完成教学目标,达到高效课堂的一种教学模式。
信息学奥林匹克竞赛“学案导学”教学模式的学案既是学生学习的方案,也是教师指导学生学习的方案。相对于教案而言,信息学奥林匹克竞赛学案不同于教案,它是教师在充分了解信息学奥林匹克竞赛大纲、教材内容和学生学情的基础上,根据教学大纲要求、教材内容和学生特点,从学生学习角度出发设计出指导学生进行探究、自主、合作的学习方案。学案不是教科书的翻版,也不是教材习题的汇总,而是侧重指导学生的学习方案,目的是提高学生的自主学习能力,它是指导学生学习信息学奥林匹克竞赛的学习方案。
该教学模式分为课前、课中、课后三个阶段。如图1,课前预备知识自主学习阶段,学生根据教师预先设计好的学案进行预备知识的依案自学,教师根据本节课学习内容进行学法指导,帮助学生掌握正确的学习方法,通过预备知识检测实现预备知识学习反馈,便于学生带着问题到课堂上解决。
课中导学的组织与实践阶段是信息学奥林匹克“学案导学”教学模式的核心部分,通过教师活动和学生活动完成创设情境、激趣导情质疑置问、引导探究精讲点拨、释疑破难拓展创新、总结归纳达标检测、评估学习五个步骤的教学活动。
课后巩固提高阶段,教师根据课中达标检测、评估学习的结果,进行课后作业布置,目的在于反馈调整,巩固提高。学生根据学案提供的课后习题进行自主学习,遇到问题可以查阅教材、辅导书,也可以上网和老师、同学进行在线交流。教师通过建设和维护信息学奥林匹克竞赛学习群,进行在线答疑,帮助学生,进行课后辅导。
图1 信息学奥林匹克竞赛“学案导学”教学模式
二、教师的四环导学
信息学奥林匹克竞赛“学案导学”教学模式中教师的四环导学基本教学方式采用的是问题式导学,即诱导(提出问题)、引导(分析问题)、疏导(解决问题)、指导(深化问题)。将知识问题化、能力过程化,把学生需要掌握的知识设计成问题,学生在解决问题的同时既掌握了知识,又培养了能力。
1.诱导――提出问题
四环导学第一步是诱导:提出问题。教师联系生活中的案例提出问题,创设问题的情境,目的是激趣导情。问题的提出要贴近生活,具有趣味性。教师通过诱导方式激发学生的学习兴趣,调动学生学习的积极性,明确本节课的学习目标和学习任务,让学生主动参与到课堂教学中来。
2.引导――分析问题
四环导学的第二步是引导:分析问题。教师质疑置问,引导学生依案探知。对于学生可以依案探知独立完成的问题,教师只需明确将教学任务布置给学生完成,学生依案探知、自主学习后进行汇报、总结。教师了解学生的学习情况后需肯定学生的学习成果,并给予适当的鼓励和表扬。对于教学过程中出现的重点问题,教师质疑置问,并且加以引导,引导学生进行问题分析,然后学生再进行依案探知。重点问题应该重点对待,学生依案探知、自主学习后,教师针对这部分知识的核心问题加以提问,检查学生对重点知识的掌握情况,如果学生掌握得有偏差,需要教师及时地引导,加以分析,帮助学生掌握这部分知识。
3.疏导――解决问题
四环导学的第三步是疏导:解决问题。精讲点拨、释疑破难是在学生自主学习、自主探究、合作学习之后,教师根据教学内容的重难点和学生在自主学习、自主探究、合作学习过程中遇到的困难,进行精讲点拨,加以疏导,解决问题。教师在疏导过程中,注意要做到以下几个方面:首先,语言言简意赅,内容要精讲点拨;其次,教师应根据学生在“先学”过程中遇到的困难有针对性地精讲点拨,切忌面面俱到;再次,教师疏导时,精讲点拨、释疑破难不是教师从头讲到尾,应具有启发性,学生经过教师的疏导后能独立自主解决问题;最后,学生在教师的疏导下,最大限度地发挥潜能,调动主观能动性,拓展解决问题的思维,提高自主学习、自主探究的能力。
4.指导――深化问题
关键词 中学 信息学奥林匹克竞赛 课程建设
中图分类号:G633.96文献标识码:A
1 信息学奥林匹克竞赛的意义
虽然近几年教育部对信息学奥赛高考加分政策做了调整,但仍有许多青少年怀着浓厚的兴趣参与这项赛事,可见它的意义远不止“应试”而已。从本质上看,计算机学科是思维学科,正确的思维训练可以播种持续创新的优良种子。青少年时期正处于思维活跃、充满各种幻想的黄金年代,长期的实践经验告诉我们,青少年信息学奥林匹克竞赛可以让广大的青少年淋漓尽致地展现其思维的火花,享受创新带来的美感。①
2 中学信息学奥林匹克竞赛课程的开展条件和生源选拔
2.1 开展条件
信息学奥林匹克竞赛课程是一门难度较大的校本课程,其开展有赖于学校、教师和学生三方面的支持。②课程的开展不仅需要校方给予硬件设施上的支持,更需要的是深刻理解信息学竞赛对于中学生的意义,在思想上的给予高度重视,支持有能力的教师开展教学活动,鼓励符合条件的学生积极参与到其中。
除了严谨的治学态度,系统完整的专业知识结构,宽广的知识面意外,本课程的任课教师必须具备纯熟的教学技能,能够运用便于学生理解的适当方法解释重、难点内容。
想参加本门课程学习的学生必须对程序设计有浓厚的兴趣,并具备一定的信息技术知识、扎实的数学功底、有勤恳的学习态度、较强的自学能力、高效的学习效率、敏捷的思维和逻辑判断能力、权衡文化课和竞赛的能力和积极自觉的交流意识。
2.2 生源选拔
为选拔合适生源、最大限度地利用教学资源,笔者将生源选拔分为:(1)初试的筛选:通过笔试确定学生的基础水平,淘汰能力不足的学生。(2)中期的遴选:在教师进行了一段时间的教学活动对学生有了解之后,根据双向选择原则,对于学生进一步筛选。(3)后期的重点培养:对于一些前期教学内容掌握效果好、要参赛的同学进行重点的培养。
3 中学信息学奥林匹克竞赛课程的实施
3.1 课程内容
本课程内容共分为六大模块,各模块相互衔接,行程有机统一的整体。第一大模块:竞赛的知识。讲述竞赛形式和成绩评定办法,试题形式和试题的知识范围。第二大模块:信息技术基础知识。包含计算机的发展、计算机的组成、操作系统、计算机内的数据表示、文字的录入与排版、网络技术与应用以及信息技术道德规范等内容。第三大模块:程序设计语言。Pascal语言作为过程模型程序设计的代表,有其独特的魅力,作为程序设计的起点,其强调的结构化设计方法和思想蕴涵着丰富的哲理,是培养程序设计思维的良好入门。本模块讲解PASCAL编程语言的编程环境、语法基础、程序设计语言结构、自定义数据类型、数组、过程与函数、文件和指针等内容。 第四大模块:数据结构。讲解包含线性表、队列、栈、树和图等在内的常用数据类型,并举例讲解数据结构在程序设计中的应用。第五大模块:算法设计与分析。包含穷举法、递归算法、贪心算法、回溯算法、分治算法、动态规划等经典的算法,另外还包括排序和查找算法的实现和选择,以及算法的时间和空间复杂度分析。第六大模块:竞赛模拟。遴选近几年的试题,从竞赛实战需求出发对每一道题进行了详细解析。
3.2 教学方法
信息学奥赛课程注重基础和应用,因此教师应根据教学内容的不同特点以及学生的认知特征灵活使用教学方法和手段,思考如何帮助学生全面、深入、熟练的掌握所学内容,真正领悟重难点,建立二者之间的联系,提高分析问题和动手解决问题的实践能力。
(1)信息技术基础知识部分。这部分内容的特点是知识点比较基础,且纷繁复杂、琐碎细致。由于时间的限制,讲解不可能面面俱到,只能挑选进制、计算机系统等重点内容使用讲授法进行讲解,并对历届考题进行分类讲解,其他的知识则穿插在后续课程中,作为每节课的小知识点贯穿整个课程。在课程实施过程中配合练习法对先前讲解的内容进行定期回顾和复习,循序渐进地提高学生的信息素养。
(2)程序设计语言基础部分。程序语言的讲解比较基础,特点是理论性和实践性较强。语言基础理论主要选用讲授法进行细致讲解,为后续学习奠定扎实的基础。结合小组讨论法和练习法进行,引导学生阅读程序、分析程序、练习编写程序,帮学生形成程序设计的思路,并养成良好的变成习惯。并使用实验法,给学生布置实验设计的题目,根据题目难度,确定小组合作或是单独完成设计。另外还要选择经典常用的小程序段,作为小锦囊,让学生反复使用练习,熟练掌握,做到能够灵活应用。
电子教案和课件在程序设计教学中的优势不言而喻,充分利用现代教学手段,把抽象的思维过程和概念形象化为动画进行仿真演示,生动而直观地表现教学内容,将抽象概念具体化、看不见的可视化、思维过程形象化、思路清晰明了化,这种教学手段符合学生的认知规律,可以大大地减轻教学难度,有效提高教学效率和质量。
(3)算法设计与分析部分。算法是本课程的重难点,教学实施过程中应引入有趣且合适教学的算法实例,使用任务来驱动课堂,教师逐步抛出问题,启发学生去分析问题,经历人脑解决、计算机代替人脑解决、将算法转化为程序、调试程序等环节,培养在算法支持下使用程序设计语言编写程序解决实际问题的能力,最后随着算法思维的积累,学会优化程序,寻求时间和时间复杂度都最小的最优算法,体会算法的精妙之处。
另外,在日常教学过程中,教师不但要帮助学生掌握好信息学知识,更应该关注学生优秀心理素质的培养和教育,应该让学生认识到:竞赛特别是高层次的奥赛具有强烈的刺激性、竞争性,参赛并非追求名利,而是一种信心和能力的体现,是一次智力与技能的检验,是一次扩充知识和再学习的极好机会,参与,才是奥林匹克精神的所在。
3.3 教学实验设计
本课程精心设计程序设计基础实验和程序设计应用实验两个模块,以加深学生对理论知识的理解,培养学生应用知识和解决问题的能力。
程序设计基础实验模块设计目的是为了强化学生对程序设计语言的使用能力,其中包含的内容有顺序、选择、循环三种程序设计结构,数组、枚举、集合、记录等自定义数据类型,过程与函数,指针、文件等重点知识,实验内容包含计算闰年、Fibonnaqi数列、求阶乘、最大公约数和最小公倍数、求素数、求水仙花数、打印制定图案、打印九九乘法表、数组的输入和输出、子过程的嵌套与多重循环、链表的基本操作和指针的使用等等。
程序设计应用实验模块设计的目的是为了强化学生对算法的理解,包括穷举法解决排列组合的问题,递归解决阶乘问题和汉诺塔问题,回溯、贪心算法解决超市找零钱的问题,快速、冒泡、选择的排序方法,深度搜索和广度优先搜索,动态规划等等。
具体实施时根据实验实施的难易程度考虑是否建立实验小组,实验前教师应布置充实、明确的任务要求,实验中给予学生适当的辅导,学生完成实验并详细记录思路和实验过程,最终师生共同进行过程性和总结性的评价。
3.4 考核
本课程考核采取模拟竞赛方式,考试流程严格按照全国青少年信息学联赛和NOI竞赛的规则进行。作此安排除了为检验教学效果、让学生对自己的学习程度和现有水平有客观的了解之外,还为了让学生对竞赛流程和题目难度有一定的准备,帮助学生明确并及时补充和夯实知识结构的薄弱环节。
注释
**省小学信息学奥林匹克竞赛以“信息与未来”夏令营为载体,通过上机编程着重考察学生对问题的分析理解能力,数学抽象思维能力,编程语言的应用能力和编程技巧、想象力和创造力等。在信息学奥赛的辅导教学过程中,作为教练员应依据“体验科学探究活动的过程与方法,培养良好的科学态度,增强创新意识和实践能力”的指导思想,摸索出一条比较新颖的适合小学生的教学方式。
信息学奥赛所涉及的内容广,程度深,从计算机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、灵活运用条件迁移,强化拓展思维训练
一、以学生兴趣为导向
在高考加分、保送政策改革下,学生对于学科竞赛的热情较以往大大降低,家长不再支持自己的孩子在学科竞赛中投入大量的精力,同时学校对于竞赛培训工作的支持力度有所减弱。在这样的环境下,我们不能沿用以往的大面积撒网,重点培养的培训模式,应作出相应调整。中学阶段的学生,对于知识的求知欲很大程度是基于兴趣的驱动。这就要求我们在对学生的选拔过程中,应以学生的兴趣为重要依据,建立学科竞赛学习小组,实行小班化教学。在教授学生基本编程知识、技能的同时,更要积极采取措施,激发学生学习编程的欲望,努力培养学生兴趣,将创新思维贯穿始终,不断提高学生的综合能力。
二、建立学习互助小组
信息学奥林匹克竞赛分为普及组(初中)和提高组(高中)两个组别,这就使得新高一的学生在进校之时就出现两类情况:一是初中阶段参加了信息学奥林匹克竞赛的培训,具有一定的基础;二是之前没有接受过培训,但对信息竞赛很感兴趣,同时学有余力。在编学习小组时,我们可以把学生分成若干学习小组,每组3~5人,其中一名为初中阶段参与过信息竞赛培训的学生。在我们的教学过程中,教师的教授是面向全体学生的,由于学生的个体差异,这就存在掌握知识点快慢的现象。在学生实践操作环节中,教师对全体学生的指导是有限的,不能照顾到每一位学生。这时,拥有以往培训经历的学生在听取教师讲授的过程是复习巩固的过程,在实践操作阶段,这些学生就起到了教师的小助手的作用,对本小组的学生进行指导。在教师、学生的互相交流,学生之间的互相交流中,所有学生都能够很好地掌握教授知识,实现共同提高进步。
三、分阶段、循序渐进的培养
信息学竞赛较其他学科竞赛略有不同,以往在大学阶段学习知识要在中学阶段中进行学习,教师教授的是计算机程序设计语言、数据结构计算法艺术,学生接受的是全新的知识,这就要求我们在培训过程中分阶段,循序渐进地进行。培训过程中应尊重技能养成的循序渐进,更应关注学生的能力发展,应根据学生实际情况合理地安排学习内容,确立培养目标。第一阶段:在高一的一年时间里,以程序设计语言的教学为主,夯实基础,培养学生的实践操作能力。同时讲授基础的算法,如模拟法、分治法、贪心法。第二阶段:在高二上学期的前半段,讲授数据结构及动态规划法的初步知识,并进行有针对性的赛前练习,为第一次竞赛做准备。第三阶段:在第一次竞赛后至高三第二次竞赛前为培训工作的第三阶段。有了第一次竞赛的经验积累,在竞赛中找到不足之处,剩下的一年时间里主要进行数据结构以及动态规划法的培训工作。在学生掌握了信息学竞赛知识后,针对每一位学生的特点,制订相应的培训策略,注重培养和发展学生的学习能力、研究能力、创新能力,为高三的竞赛做充足的准备。
四、利用学校、网络资源,创建良好培训环境
在培训过程中,充分利用学校计算机教室、学科竞赛活动室作为培训的主战场,创建小组探究式的学习环境,给学生提供一个良好的学习环境,有利于学生团队精神的培养及自我归属感的建立。
为了切实提高学生的编程能力,利用网络信息学在线测评系统作为学生的练习平台。根据教学安排,布置相应的练习任务,在信息学在西安测评平台上进行训练,提高学生的编程能力。同时定期组织模拟赛,在限定时间内完成模拟测试,对测试成绩进行及时分析,对测试题进行讲评,以赛代练。
关键词:信息学;奥林匹克竞赛;程序设计;习惯
中图分类号:G642 文献标识码:B
1现状与对策
全国青少年信息学奥林匹克联赛(National Olympiad in Informatics in Provinces,简称NOIP)是全国信息学奥林匹克竞赛(NOI)系列活动中的一个重要组成部分,旨在向中学生普及计算机基础知识。从早期只考核学生对程序设计语言的理解、熟悉程度以及编程技巧发展到模型设计、离散数学、动态规划的思想及算法,由单纯的培养学生学习兴趣转变为创造性地运用程序设计知识解决实际问题的能力。然而学生在程序设计习惯方面普遍重视不够,为软件项目开发埋下了巨大隐患。
1.1现实中存在的问题
信息学奥林匹克竞赛上由于教学单位出现急功近利的思想,造成学生不能较好地正确掌握计算机程序设计过程,没有养成良好的程序编程习惯。在现实中,程序设计普遍存在以下一些共性问题:
(1) 不愿意读别人的程序。强调自己程序设计方法的优点,不愿意学习和借鉴他人的设计思路。
(2) 不画流程图。程序流程图本来是程序设计的最简单最直白书面表达,然而没有得到足够的重视与平时养成,学生不乐意用流程图来表达设计思想与过程,实际上往往导致程序逻辑交叉,当程序出错时排除费时费力。
(3) 不写程序功能说明。程序设计过程中普遍存在只写源代码的语句,对程序实现的功能没有描述,别人阅读程序很难,有时编程者自己对程序的处理技术方法也遗忘。
(4) 不写代码的注释。不对程序进行必要的注释,造成阅读困难,程序可读性差。
(5) 忽视出错处理。只完成程序功能的单一实现过程,对程序可能的具体出错处理分析不够。
(6) 忽视程序算法分析。程序算法对程序运行的效率影响是非常大的,程序算法的复杂度直接影响程序的时间和空间。
(7) 忽视程序设计过程中文档资料的积累。普遍认为编程就是写程序和调试过程,忽视文档的书写,其后果导致程序维护困难。
1.2对策
信息学奥林匹克竞赛注重学生终生学习能力的培养,而不停留在唯竞赛而学。在平时的教学中培养学生良好的程序设计习惯,使学生学会准确运用程序设计工具,养成良好的程序设计风格,将达到事半功倍的效果。
(1) 勤于思考、克服困难的习惯。由于学生对知识层次理解的深度有限,思维是发散而新颖,学生所编写的程序必然有别于专业人员,但是要培养其具有专业人员的素养,要养成解决问题的好习惯,从解决方法和基本原理上勤于推敲。
(2) 与人协作的习惯。NOIP考试形式上看是学生个人的行为,而真实的软件工程是多人合作、信息共享的活动,互学互助、取长补短、与人沟通、信息交流的好习惯将使学生受益终身。
(3) 培养全局规划习惯。不论是程序语言的学习例题还是NOIP的考试命题,题目功能典型,学生要善于从短小的程序代码中分析计算机解决问题的方式、途径,将小代码功能扩充完善,利用程序设计工具对问题从全局角度进行分析处理。
(4) 良好的代码编写习惯。包括程序流程图、变量命名、代码标注、功能注释、捕获代码异常、测试样例、文档记录等多个环节。如果在软件开发和程序编写过程中养成良好的习惯,那么程序中存在的漏洞就易于发现,为将来大型软件项目的开发打下良好基础。
(5) 养成善于总结分析、勤于记录文档资料的习惯。建立自己的知识库,不仅有源程序代码,还要有完备的文档资料记录。
2培养正确程序设计习惯的措施
学生在学习过程中主要接触的是以掌握基本算法为主的程序例题和NOIP独立命题题目,而软件开发过程是一系列活动,包括方法、工具和过程三个要素。因此,如何让学生以小见大,培养良好的程序设计习惯才是学习的根本。以第14届NOIP提高组C++初赛题目阅读程序4为例题,说明如何借助程序设计工具,养成良好的程序设计风格,培养良好的程序设计习惯,例题的源程序如下。
#include
#include
using namespace std;
int i,j,len;
char s[50];
int main()
{ cin>>s;
len=strlen(s);
for(i=0;i
{if (s[i]>='A'&&s[i]
for(i=0;i
{if(s[i]
cout
for(j=1;j
{ for(i=0;i
{s[i]=s[i+j];}
}
cout
return 0;
}
2.1准确使用程序工具的习惯
学生在学习程序设计过程中不要过分强调上机调试运行,学会正确运用程序设计工具是根本。程序设计工具不仅能正确将程序分析过程转变为程序实现,而且还能够帮助学生快速分析源程序的语句功能,生成程序设计过程中所需要的文档资料。
2.1.1数据字典
数据字典以字典式顺序组织精确严格地定义了每个数据元素。通过读例题源程序,得到例题的数据变量的数据字典,具体变量描述如表1所示,这有助于理解各变量在程序中的输入、输出、存储和中间计算。
2.1.2N-S图
N-S图是适应结构化程序设计特点,逐步求精模块化程序设计方法的有力工具。阅读例题源程序语句可以快速画出它的N-S图(图1),从而确定例题的程序顺序结构功能,如图2所示。
2.2良好程序书写风格的养成
程序不仅要保证运行正确,也是让别人读的。程序书写设计风格包括4个方面:源程序文档化、数据说明、语句结构和输入输出方法。针对NOIP命题特点,学会从编码原则提高程序的可读性着手。由于例题已具有完好的缩进格式,只需要加入相关的序言性和语句注释。程序部分修改内容如下。
/* 4.cpp 程序功能: */
/*首先,大小写混合字母的字符串变成小写字母;然后以26字母循环形式,逐个字符替换为其位置后的第3个字符;最后,重新赋值指定位置字符。*/
....
int main()
{ cin>>s; //字符串s初始化
len=strlen(s); //求s长度
for(i=0;i
...
//逐字符转换为其后面的第3个字符
for(i=0;i
...
cout
//3次循环将s指定字符s[i]重新赋值s[i+j]
for(j=1;j
...
cout
return 0; //返回
}
2.3程序算法分析的习惯
算法的空间复杂度和时间复杂度是分析一个程序算法的执行效率与存储需求,可以有效避免只强调偏僻技巧而忽略算法复杂性。
int main()
{ cin>>s; //执行次数1
len=strlen(s); //执行次数1
for(i=0;i
...
for(i=0;i
...
for(j=1;j
for((i=0;i
s[i]=s[i+j] //执行次数4*n
cout
}
通过对例题的基本语句执行次数分析,得出程序的时间复杂度为O(n2)。
2.4面向对象程序设计的习惯
目前面向对象的程序设计技术在软件开发中占据主导地位,是指导学生学习软件的发展方向。根据例题程序的功能实现,通过定义一个obj类,含有实现程序功能的4个成员函数,将例题的面向过程编程改写为面向对象的程序设计,使数据和操作具有封装性。改写后的程序源代码如下。
#include
#include
using namespace std;
class obj //定义obj类
{public: //定义公有成员函数
obj( ) {*s=NULL;len=0;} //定义构造函数
void input( ); //输入函数
void change( ); //字符转换函数
void setvalue( ); //字符重赋值函数
//定义输出函数
void print(){cout
private: //定义私有成员变量
char s[50]; //字符串s
int len; //字符串长度len
};
void obj::input( ) //定义输入函数
{cout
cin>>s;
len=strlen(s);
}
void obj::change( ) //定义转换函数
{ for(int i=0;i
{if (s[i]>='A'&&s[i]
for(i=0;i
{if(s[i]
}
void obj::setvalue ( ) //定义字符重赋值函数
{ for(int j=1;j
{ for(int i=0;i
s[i]=s[i+j];}
}
int main( ) //主函数
{ obj x; //obj类的对象x
x.input ( );
x.change ( );
x.setvalue ( );
x.print ( );
return 0;
}
3结语
NOIP重点是培养学生学习计算机的兴趣,使学生对信息技术的一些核心内容有更多的了解,提高创造性地运用程序设计知识解决实际问题的能力,而不是一味学习专业教材。因此,只有开始养成一个良好的程序设计习惯,才能为将来的软件开发打下好基础,而不是追求唯竞赛而学的短期效果。
参考文献:
[1] 马苗,田红鹏. “面向对象程序设计与C++”教学中的问题与思考[J]. 计算机教育,2008(6):81-82.
[2] 杨显霞. 信息学奥林匹克竞赛教学模式初探[J]. 西南农业大学学报:社会科学版,2008(4):169-171.
[3] 林小华. 计算机程序设计风格探讨[J]. 软件导刊,2006(17):33-35.
在新的高考政策下,高考加分制度作出了相应的调整,这使得很多学生对奥赛的热情有所减退,家长也不愿意学生浪费更多的时间在这项比赛中。因此,以往的奥赛教育模式已经无法满足现在学生的要求了,必须要作出改变。由于中学生对知识索取的动力与小学生不同,更加偏重于兴趣,所以在选取参加信息学奥赛的学生时需根据其兴趣来决定,摒弃过去大班式教育,实行小班式教育,组建奥赛兴趣小组。
组建互助小组
信息学的奥赛分为两个小组进行,包括普通组和提高组,分别由初中生和高中生组成。也就是说,高中学校在组建奥赛小组时,其高一学生中就会出现两类人,一类是已参加过奥赛培训,具有一定的基础;另一类是没有参加过奥赛,但对其比较有兴趣,同时还能有业余时间学习。因此,在分配小组时,每个小组中至少要有一名成员参加过奥赛,具有一定的知识基础,这样组内有知识基础的成员就可以在课余时间指导小组的其他成员,这样的方式不仅可以使其巩固已有知识,也可以增强小组内的凝聚力。
分阶段培养
信息学奥赛较之其他学科略有不同,其所要学习的大部分知识对高中生来说具有一定深度。因此,在培训的过程中教师不能盲目地进行教学,一定要采取分段式教学方法,为学生循序渐进地传授相关知识,将重点放在技能的学习上,注重学生能力的发展,根据学生的实际情况来安排课时。
第一阶段,是学生的高一时期。教师主要以讲授程序设计的语言为主,同时培训计算机基础算法,如模拟法、贪心法等,为学生打好基础,培养其上机能力。
第二阶段,是学生高二的第一学期。教师需要对数据结构、动态规划等方面进行培训,同时要进行合理的赛前训练,也可以带领学生参加第一次比赛。
第三阶段,是学生高二的第二学期及高三时期。有了学生第一次参加奥赛的成绩,教师可以从中找到其不足之处,并在第三阶段进行有针对性的培训,主要还是围绕数据结构、动态规划等方面进行。这个阶段重点是锻炼学生的创新能力和实践应用能力。
充分利用学校资源
在整个奥赛兴趣小组的培训过程中,应充分利用学校的计算机教室、多媒体、活动室等资源,为兴趣小组营造一个良好的培训环境。利用各类趣味编程来提升学生对编程学习的兴趣,同时,利用网络在线评测系统为学生提供更多的练习机会,根据当天或当个阶段的教学内容为学生布置练习题目,要实用与趣味相结合。学校还可组织校内模拟竞赛,用比赛的方式代替练习,为比赛中获得优异成绩的学生或小组颁发奖品,以激励学生的学习积极性。
劳逸结合
在高中繁重的学习课程和竞赛任务的压力下,教师可多带领学生参加校外活动、参观科技馆或相关比赛,让学生以旁观者的眼光对编程有一个概念,再与自己的编程进行对比,这样能够让学生体悟到许多理论知识中没有的内容,从而提升学生的实践能力和学习能力,也锻炼了他们的逻辑思维。同时,校外活动还可以很好地放松学生的身心,减小其心理压力,使培训过程更加有效率,降低他们因逆反心理或压力而放弃培训的情况。