一、编程是什么?
编程是编写程序的中文简称,就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到相应结果的过程。编程的目的是为了解决实际问题。为什么解决问题要借助于计算机呢?因为计算机在机械的运算上具备极大的优势,但是计算机自身没有思维,它的所有行为都是按照编程人员的代码去执行的。所以编程的实质就是程序员“告诉”计算机应该第一步做什么,下一步要做什么。
二、怎么编程?
那么接下来的问题就是,程序员要怎么“告诉”计算机呢?我们的班主任在交代我们做一件事情的时候,往往会和我们面对面地交流,但是程序员没有办法和计算机面对面的讲话,程序员与计算机的交流,只能通过“代码”这样的一个东西来实现。所以要请准确无误、畅通无阻地与计算机交流的话,我们就必须要学习“代码”。在现实世界中,不同国家的人会使用不同的语言来交流,有普通话,有粤语,有英语等。同样地,我们在与计算机“交流”时(写代码)也有很多种语言,譬如C语言,VB,pascal,c++等等,不同的语言也许特点不一样,但是他们本身并没有优劣之分,只要选择自己喜欢的就可以了。回顾起我们在学习语言的时候,我们都是先选定一种语言,然后最初的语法规则开始学起,然后再通过阅读大量的文章资料,提高自己的表达能力和水平。同样的,我们在学习编程的时候,也是同样的道理。一般而言,对于一门语言来说,会基本的“听说读写”只是基本功,它们非常重要,学会之后我们就能很快地应用在生活中了,但是只会基本功,并不代表我们就具备了很高的表达能力,我们还要去不断地模仿和学习表达的技巧和方法。实际上,学习编程的过程,就是要解决与计算机交流的问题。为了解决这个问题,我们需要选择一门合适的语言,学习它的语法;编程的目的是为了实际中的问题,我们需要明确地告诉计算机要先做什么,然后做什么,这其实就是“算法”,同时为了更好地实现算法,我们掌握一些常见的数据结构来帮助我们更好地实现算法,就像在数学中,我们可以借助平面直角坐标系来更好地表述位置关系。因此,学习编程,主要就是包含三个方面,基本语法、算法、数据结构。
三、信息学竞赛是什么?
信息学竞赛的设立最初是为了更好地推广计算机的普及,但是发展到现在,计算机已经非常普及的情况下,信息学竞赛就慢慢变成了培养和选拨顶级选手的竞赛了。信息学竞赛是中学五大联赛之一,分为省、国家、国际多个级别的比赛。如今,在国内外顶尖大学的计算机系的学生,大部分都来自于信息学竞赛,并且国内顶尖大学如清华北大等都有为信息学竞赛选手提供大量自主招生的名额。编程的竞赛在大学阶段也有,叫做ACM大赛。同样,现在顶尖的IT企业非常看重ACM竞赛成绩。学习信息学竞赛,能极大的锻炼思维,但是同时也对数学和逻辑抽象能力有较高的要求,并且这是一个非常漫长地过程,需要选手能坚持不懈地学习和训练。目前信息竞赛分为多个级别赛事,有全国联赛(NOIP)、省名校邀请赛(市队选拔GDKOI)、省奥林匹克竞赛(省队选拔GDOI)、全国奥林匹克竞赛(国家队选拔NOI)、国际奥林匹克竞赛(IOI)等等。一切都要最初的联赛开始,联赛分两轮:初赛(每年10月第二个周末),笔试,主要考察计算机常识、基本算法和语法,全国统考,各市划指标,成绩靠前的同学可以获得第二轮复赛资格;复赛(每年11月第三个周末),上机编程,分两天进行,总共6题,6个小时。联赛成绩突出的选手将获取广东省名校邀请赛资格,邀请赛和复赛形式相同,但是题目难度增加了许多,邀请赛成绩最突出的几名选手将入选市队,代表本市参加GDOI。GDOI难度和GDKOI难度稍微难一些,GDOI成绩突出的选手将获得名校自主招生面试资格,如果面试表现优秀,将获得名校高考降分或直接录取资格。入选省队的选手将代表广东省参加全国奥林匹克竞赛(NOI),如果表现突出,将入选国家队,将继续代表国家参加国际大赛。根据以往经验,能入选国家队或在NOI中拿到金牌的选手基本上都能拿到清华北大的自主招生面试,并基本能进入清华北大,当然也有部分国家队选手获得麻省理工、哈佛等世界名校录取通知书的先例。一句话,只要你实力足够强,名校任你挑,但是如果实力不够,就只能被学校挑。
四、如何学习
前面已经提到,编程主要包含三大部分,语法、算法、数据结构。那么我们在学习的过程中,其实也就是解决这三个问题。为了大家更好地学习与交流,我们工作商定一些安排,请大家统一行动。
1、编程语言选定为C++;请每位同学自行购买刘汝佳编写的《算法竞赛入门经典(第2版)》;
2、每天的下午第9节课及周六上午,在机房集训和上课,特殊情况需请假说明;
3、训练常用的平台OJ有洛谷、codeVS,请自行注册,并加入我校队伍中;
4、注册github帐号,管理好自己代码;
5、编程是写出来的,不是看出来,多实践。
6、请自行加入郑中qq群(450539759),里边会有更多资源更新。