个人编程之旅

你们好,我是上外附中的马骋远,也是一个地道的电脑迷,在这里我想和你们交流一下我学习编程的过程和方法。其实,在我看来,兴趣是最好的老师!
个人编程之旅开始于五年级的寒假,一位朋友说他爸爸要教他编程,出于对信息的兴趣和朋友之间的攀比,我也跟着学了起来,学着学着才知道原来学的是大名鼎鼎的VB,我磕磕碰碰地在书籍的帮助下作了一个简陋的计算器。VB算是我学习编程接触的第一门计算机语言吧。
一年半前我迷上的了一款叫MineCraft的游戏,那款游戏里头能够本身编写模组(即对游戏自身的扩展),我发现那些模组是用Java编写的,别人可让本身的游戏更加丰富多彩,我为什么不可?为了证实本身能够,我特意买了一本厚厚的Java书研读起来。在这个时候我发现了语言的共通性,不少相似的结构,编写逻辑其实在VB就已学过,这也更让我意识到:重要的不是在语言,而是算法。由于Java严格区分大小写等语法规则与C、C++、C#极为类似,这也为我学习其余C语种的语言提供了便利。到目前为止,Java是我研究时间最长,也是我很熟练的一门语言,而这其实纯粹是在个人兴趣驱动下学习的。
Pascal实际上是我接触的第三门计算机语言了,在以前Java的学习和练习中对逻辑和算法的了解让我很快上了手。其实一开始学Pascal时我是拒绝的,由于这么老的语言,这么低的实用性,如今还能作什么?我编程的目的向来不是考试,而是创造出一些真正能让我受益的小程序(例如信息课杀监控啊等等)。可是随着学习的深刻,我发现它实际上是门很优美而又不失严谨的语言,能够说,它极大地磨练了个人逻辑能力,而这些锻炼的成效不只体如今考试上,也对我用其余语言编写更高级的程序不无裨益。
在学习的过程当中,徐老师向咱们推荐了ZJ和OpenJudge,不像班内其余的两位大牛解题数300+,个人解题数差很少只有七十几,归根到底仍是我懒,我想若是我也作到300+的话此次的成绩应该能够在300之上了吧。其实我真是一个很懒的人,我比较懒得背诵快排,高精度等代码,算法大概了解一下便可。由于,你们若是学了其它高级语言就会发现,数列排序都是用语言自带的Array.sort()或相似库函数或过程实现的,高精度有封装好的Decimal,这些都是系统自带的,写一句代码调用便可。这也是先学习其它高级语言的弊端,人会变懒o(╯□╰)o。再次重申,我学编程的目的是为了兴趣,而我最终是但愿用所学语言和知识编写出本身的程序。固然这并非说大家能够和我同样懒,我也想勤快一点!同窗们,目前考试是必过的一道坎,因此仍是背背为好,这些知识在你须要修改算法时也是颇有用的。若是我能背出快排,也许今年NOIP比赛的第三题还能多得40分。~
这边再来和你们说一说解题的技巧吧,首先目前的题目大可能是数学题,要有清晰的逻辑思惟,因此去学奥数吧骚年!数学功底必须有。碰到题目先读懂,不要一开始就想着最优,我是一开始先想出最笨(就是效率最低下可是必定能作出来的那种)的算法,后来在思索着怎么优化,这些优化大可能是数据范围减小,循环嵌套次数减小等,你若真找不出最笨算法,那就简化简化再简化,必定能作出来的,优化不了的话,能拿10分就拿10分嘛!那么程序运行中会出现一些莫名其妙的bug,而你又脑子卡壳了怎么办呢?这个时候就须要调试,我以为在运行过程当中writeln一些变量的值是一个简单粗暴的好方法,只是要记得把最后他们注释掉便可。不要单纯输出值,也能够用标示或句子连起来,更直观。
这些就是我想给你们分享的解题策略和学习编程的心路,学习的过程当中能够有目标,但不要太有“目的”(好比比赛得奖之类)。若是“目的”至上,那么失败的话就会是一件超级倒兴的事,“兴”都倒完了,我以为确定不会再有好的学习结果。
祝你们好好编程,每天向上,以此文与你们共勉!
 
马骋远:现就读于上外附中,2015年NOIP普级组一等奖(上海市排名第二十)。马骋远是一位善于钻研、勇于表达的同窗,他在编程之路上学以至用的目标和不断探索钻石的精神值得咱们学习。
相关文章
相关标签/搜索