i信息学奥赛

加入QQ群:1025629106,或关注微信公众号:i信息学奥赛,获取更多学习资源。

导航

我的编程之旅

Posted on 2016-12-10 16:53  shnoip  阅读(536)  评论(0)    收藏  举报
大家好,我是上外附中的马骋远,也是一个地道的电脑迷,在这里我想和大家交流一下我学习编程的过程和方法。其实,在我看来,兴趣是最好的老师!
我的编程之旅开始于五年级的寒假,一位朋友说他爸爸要教他编程,出于对信息的兴趣和朋友之间的攀比,我也跟着学了起来,学着学着才知道原来学的是大名鼎鼎的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普级组一等奖(上海市排名第二十)。马骋远是一位善于钻研、敢于表达的同学,他在编程之路上学以致用的目标和不断探索钻石的精神值得我们学习。