编程十年 (4):步入编程殿堂

编程十年 (4):步入编程殿堂

1998年,上高中。因为迷恋电子制作而“玩物丧志”,从市重点降入区重点高中。按说这个结局会让我老爸对我玩电子制作这件事深恶痛绝,但没想到的是,假期开始的时候,我老爸甩手就给了我200块钱,让我随便买零件,随便折腾。这原是欲擒故纵之计——200块钱还没花掉一半,我就知道了自己原来不是玩硬件的料。于是放弃。

就这样,高中的第一个学期基本上没有接触过任何计算机或是电子方面的东西,主要的业余活动就是打篮球。不过到了1999年,高一的下半学期,我惊喜地发现竟然有计算机课程,而且每周2节——一节理论、一节上机实验。但是这门课是没有教材的——就靠老师讲。

结果没想到的是,这门课并不只是浅浅地讲解计算机的入门知识和使用方法,而是讲解编程的。更牛逼的是,第一节理论课里老师就讲完了所有基础知识并且开始介绍编程——QBasic编程。不过第一次实验课并没有学习写程序,只是熟悉键位,顺便练习一下上次课讲的一些基本DOS命令。

因为在初中的时候已经记熟了键位,而且摸过计算机,所以当别的同学还趴在键盘上从浩瀚的按键中寻找A、B、C时,我已经搞明白老师讲过的所有DOS命令了。这让我的虚荣心和成就感得到了极大的满足,也鼓励着我之后的计算机学习。当然,“幸运”的是,高中同学竟然没有人家里有计算机,初中时也没接触过计算机,这也许就是塞翁失马的道理吧,虽然从市重点“掉到”区重点,但自己的相对水平却提高了。

虽然到了90年代末期,图形界面已经成为主流,但学校配备的计算机还是很老旧的486电脑,安装的是DOS操作系统。记得实验室里电脑的机箱上还有个“Turbo”按钮,旁边还有LED数码管显示着CPU的主频,平时是75MHz,按下Turbo按钮后则会显示90MHz。

不过应该感谢这些老旧的电脑,如果一开始就给我个花花绿绿的Windows,我真不知道自己是不是还能坐下来踏踏实实地写程序。

由于在第一个学期期末的时候已经知道下学期的课程,所以在假期里我打算做些准备。恰好快到春节,妈妈带我去大姨姥爷家串亲戚,回来的路上我拉着妈妈去逛附近的花市新华书店——以买教参为由,她当然无法拒绝。结果,却只抱了一本QBasic的书回来,搞得妈妈很是诧异,小心翼翼地问我“这个书上课有用么”。而我则理直气壮地回答“当然有用,下学期要开这门课了”。

回来之后,自然就是抱着这本书啃了。这本书真的是不错,虽然装帧很简陋,不像什么经典著作,但是内容很充实。这本书并不是只介绍QBasic的关键字和语法,而是花了不少篇幅介绍了结构化程序设计,我就是通过这本书前面的几章知道并且理解了顺序结构、选择(分支)结构和循环结构。而且,这本书还介绍了流程图的画法,而我在一开始学习写程序时,还真的一本正经地在纸上画流程图呢。

当时家里并没有计算机,于是我专门找了一个小横格本,拿铅笔在上面画流程图、抄写程序。然后,等到上机的时候,我就会带着这个小本,照着敲进去测试。这种特殊的情况对我来说利弊参半,不好的一方面是,我必须忍耐一周的时间才能检验这些程序的正确性;不过,好的一方面是,这给我留下了充足的时间去改进程序,而且打下了比较坚实的手写程序的功底,能够熟练掌握语法而不依赖编译器的检查。

就这样,一个学期过去刚一半,我就基本上掌握了QBasic的语法和结构化程序设计的思路。而我买的那本书,内容还不是一般的充实,在最后几章,还介绍了QBasic的图形编程。而我说什么也不相信,在DOS这种字符界面下,竟然能绘制图形——虽然当时Windows已经流行起来,但我还没有见过呢。于是我抄了几个书上的例子,等到实验课时带到机房试了一下,果然可以!

于是在接下来的一周里,我开始专门研究QBasic里的绘图函数,然后编写了我人生中第一个程序——绘制机器人。之前学习基本的语法,都是要么抄例子,要么做习题,并没有自己的想法。而这一次,例子和习题已经不能满足我的兴致了,我腿儿硬了,要自己走了。我在前面提到过,我认为能够把自己的想法写成程序就叫“编程”了,所以我认为从这时起,我已经会编程了。

其实这个程序非常简陋,就是用矩形和椭圆形拼凑成一个劣质的机器人形状,整个程序就是一个顺序结构,依次画出各个形状就是了。不过,编这个程序的过程还是很麻烦的,首先得在纸上按比例画出屏幕边界和机器人,然后就是计算每个关键点的坐标。由于没有机器做实验,所以图不能画得太潦草,大致比例还是要准确一些的。

当然,这样简单的程序是不足为奇的,所以我很快又写出了改进版本——动态绘制机器人。就是,先从屏幕上方落下两只脚,然后落下两条腿,然后是身体、胳膊和头。这次终于不完全是顺序结构了,循环也用上了。

后来还写过一个无聊的程序,随机循环在屏幕上画圈,而且是死循环。然后把程序发给同学,搞恶作剧。

不过,不管是粗糙的机器人,还是无聊的恶作剧,都足够我在班里吸引众多眼球了,虚荣心再次膨胀。但很快这种爽歪歪的日子就结束了——快到期末了,计算机课结课了。

posted @ 2011-04-22 00:19 Anders Liu 阅读(...) 评论(...) 编辑 收藏