8PASCAL语言(二)最小的打字练习程序

大一下学期,有一门课程如钻石般散发着亮光,无与伦比地吸引了大家的目光,那就是《Pascal程序设计》,该学期中唯一的一门计算机软件专业课程。

PASCAL,什么东东?”寝室里,教授拿起教材,用生硬的发音读着课程名称。

“哎,不知道读不是你的错,但拿出来吓人就是你的不对了。这个读成‘帕斯卡’,就是传说中的帕斯卡语言。”于谦马上打断教授,“知道不,编游戏就要用这个东西。”

“可是我翻书看了看,没有发现游戏设计的内容。”寝室长帅哥张接过话题。

“那当然了,这本书介绍的只是基础的应用,”貌似寝室里在做话题接龙,现在轮到木鸿飞:“编游戏需要专门的单元来画图。”

终于可以学习编程了,同学们翻开教材饶有兴趣的猛看了一阵子,但教科书上列举的内容实在是太枯燥了,于是大家又纷纷憧憬起学成后设计游戏的美景——相对于学习,做梦要容易也有趣的多——只是谁也没有想到,没过多久,美梦成真了!

Pascal语言老师姓石,其时还是一位普通老师,但十多年后,他博士毕业并成为了系里副主任,这是后话暂且不提。总之同学们课上很认真,尤其是很多女生,课上一个劲儿的做笔记,其速度之迅速、字迹之工整、记录之全面使人瞠目结舌。课后很多同学仍然兴趣不减,继续在纸上书写代码,诸如打印“1+12”、打印菱形、计算“1+2+3+…+100”之类的程序被设计了一边又一遍,学习热情空前高涨。

但这还不是高潮,当老师宣布Pascal语言的课程设计是编写俄罗斯方块游戏或者编写TT打字练习程序时,同学们沸腾了,我们居然可以编写游戏,这是真的吗?这真的真的是真的吗?

当然是真的,因为石老师还在继续:“程序的设计你们自己考虑,不过为了设计这些程序,光是这本教材是远远不够的,这本书上甚至连怎么画一个点都没有讲,所以你们需要多查阅一些资料,建议大家到图书馆走走。下面我们继续回到教材,今天讲函数,……

大家都竖着耳朵,生怕漏过一个细节,但至此以后,石老师再也没有讲述任何与俄罗斯方块或者TT打字软件相关的东西,这也就意味着同学们必须得依靠自己的力量独立的设计。

反观同学们的反映,无外乎三种。第一种,事不关己,高高挂起。游戏设计是别人的事情,我自巍峨不动。这些同学多半是对计算机毫无兴趣,毕业时纷纷转行。当然他们所占比例很小,绝大多数属于第二种,他们兴奋激动但是彷徨忐忑,内心极其渴望编写游戏但大脑却毫无头绪,茫茫然不知从何入手。还有第三种人,他们对程序有着敏锐的直觉,早已摩拳擦掌,准备大干一场。木鸿飞就是这类人,他整节课都心不在焉起来,满脑子都在考虑程序的设计。

这节课结束后,年级里兴起了一股学习Pascal热,图书馆中但凡与Pascal相关的图书都成了抢手货,几乎被一扫而空。在这方面,木鸿飞近水楼台先得月,毫不犹豫的把哥哥家的两本Pascal编程书拿了出来,即质量上乘又无需哄抢,有个教师哥哥还是很方便的。

大一的时候,系里有自己的机房,拥有若干台386,就当时而言,质量不算差。而且Pascal课程也安排了一定数量的上机课,避免了没有计算机的尴尬。

第一次课程设计,同学们卯足了劲,都想把×××作编的最好,给别的同学留下不可磨灭的第一印象,于是第三种人暗地里都在较劲,常常这个人设计了一个新颖的东西,马上就有人模仿并改进,真是你追我赶好不热闹。

木鸿飞设计了一个漂亮的菜单。有一次,在书上看到了设置闪烁字符的方法,马上如法炮制,将程序修改为:当菜单选项处于选择状态时,该选项变色并且闪烁,当光标移动后,该选项恢复正常。程序完成之时,木鸿飞故意在机房中不断的演示,他时而退回编程界面,移动光标,修改几个无关紧要的代码,然后重新运行,给人一种调试的假象,惹来同学们的顿足和阵阵惊呼甚至于倾心请教,他却摆出一股很平常的样子,说道:“这个很容易啊,你可以这样子……

大约过了几十分钟,木鸿飞突然听到机房里有两个声音传来。

……现在你知道怎么做闪烁功能了吧?。”声音甲。

“嗯,知道了,谢谢!”声音乙。

木鸿飞扭头看去,只见两个同学坐在一台电脑上,看架势,一个在请教,另一个在解答。而声音甲绝对没有咨询过自己,只有可能他也发现了字符闪烁的方法,看来大家都不甘落后啊。

×××程序的开发过程在紧锣密鼓和你追我赶中进行,就在即将完成之时,一个事件的发生,将之推上了一个高潮。

那是倒数第二次上机课,下节课就要交作业了,同学们都在紧张的修改自己的程序。大一新生都特别单纯,还没有养成拷贝或者挂名的习惯,所以无论能否独立完成,大部分同学都事必躬亲,即使需要帮助,即使需要照抄,也是亲自输入代码,而不会采用拷贝命令。但是也有极少数一群人除外,他们似乎对学习尤其是动手编程毫无兴趣,大学对他们来说只是生命中一个普通的过客而以。

于谦就是这样一个人,他是县里的官二代,老爸老妈的官职与李刚的差不多,所以在班上的学生中他的生活花费算是较多的一个。那时木鸿飞每月大约300元,吃饭大约花费150元,剩下的自己零花,而于谦是木鸿飞的两倍。但于谦绝对没有所谓官二代的飞扬跋扈,除了不爱学习外,其它一切都好,与同学们打成一片,在男生中尤其与木鸿飞和教授玩得要好。

于谦有一个很特别的本领,缠功一流,木鸿飞马上就要领教了。

“嗨,于谦,今天你怎么有空到机房来了。”于谦上机课就来过几次,平时都是跷课,是本班乃是本年级跷课的弄潮儿。所以木鸿飞发现于谦到来,颇有些吃惊。

“嘘!不要声张!”于谦急忙说道,“我找你有事。”

“什么事?”木鸿飞问。

“那个下节课要教课程设计了,你可不可以帮我设计一个。”看来于谦虽然不学习,可也注重成绩。

“你不是整天吃喝玩乐吗,也在乎作业?”木鸿飞调侃道。

“我不是纨绔子弟!”于谦义正严词道,“你程序设计那么厉害,就帮我设计一个吧。”

木鸿飞心里做了一个“你就是纨绔子弟”的想法,然后摇头道:“不行,我就设计了一个,给了你,那我交什么?”

“你可以把界面做一些修改啊,这样老师就看不出了。”于谦连办法都想好了,不愧为作弊高手。

“没有办法修改。”木鸿飞不答应。

“这个可以有。”

“这个真没有。”

“这个一定有。”

 “界面好难设计的!”

“你可以把我的界面设计的很丑,我不在乎的。”

“办个忙咯,回头真的请你吃饭。”

“设计一个程序好难的,而且下节课就要交了,做不出来。”

“没关系,我只要最简单的打字练习,能打字就行,不在乎界面。”

“很困难,没有办法设计。”木鸿飞不答应。

“这个可以有。”

“这个真没有。”

“这个一定有。”

……(此处略去1万字)。

如此无良的对话足足持续了半个小时,木鸿飞的声音由最初的激动高昂逐渐成为奄奄一息,反观于谦仍然神采奕奕斗志不减。最后身边的同学都受不了了。

“于谦,你缠人的时间都可以自己设计一个程序了。”帅哥张首先发话。

“木鸿飞,你一开始答应他说不定现在都做完了。”这回是教授。

木鸿飞早已斗志黯然,如同斗败的公鸡一样耷拉着头。突然他想起了什么,神情猛地一震,说道:“真的什么样的打字程序都可以?”

“是啊,好的,你答应了啊!”于谦终于胜利了。

“你走走走,”木鸿飞推开于谦,“到墙角画圈圈去,不要来吵我,做完叫你。”

于是世界清净了,只剩下极富节奏感的键盘敲击声。

但五分钟后,这种节奏感又被打断。

“于谦,OK!”木鸿飞大叫一声,结束了短暂的清净。

 “来了,”一阵风飘过,于谦不知从哪里冒了出来,“这么快,我才抽了一支烟。”

“那当然,也不看是谁出马。”木鸿飞小小的得意了一把,“先运行给你看看效果。”一边说,一边同时按下CTRL+F9键,编辑界面迅速转化为一个黑洞洞的窗口,窗口左上角只有孤零零的一个字符,字符右边一个光标在闪烁,算是这个窗口中唯一的活物。

木鸿飞按下窗口中字符对应的按键,光标处出现按下的字符,然后马上显示一个空格和一个新的字符。木鸿飞又按下键盘,每次都在原有字符的右边回显按键的内容,空格后再面随机出现一个新字符。

“这就是TT打字练习程序。显示的字符表示就是你要输入的内容,而一旦输入完毕后就会随机产生另一个要输入的字符。”木鸿飞一边按键一边解释,“无论是否输入正确,都会进入新的练习。”

于谦一只手在键盘上按键,沉默了老半天,终于说道:“你这也忒简单了吧!”

“你不是说界面无所谓,功能无所谓,只要能打字就行,完全符合你的要求哦!”木鸿飞得意道。

于谦无话可说,只得点头,“好吧,好吧,有总比没有好。程序怎么退出?”

“不好意思,没有设计退出功能,你可以按CTRL+BREAK强行退出。”木鸿飞潇洒的回答。

I服了U!”于谦提前说出一个几年后才流行的时髦语句,“给我解释一下代码,老师肯定会考察源代码的,我得有所准备。”

“没问题。”木鸿飞按下CTRL+BREAK组合键,程序强行退出,回到编程界面。

“欧买嘎,欧买嘎,欧买累滴嘎嘎!”见到代码,于谦露出不可思议的神情,在再三确认后,他发出了惊呼,“怎么可能,不到十行,就编出了一个TT打字程序!”

于谦的叫唤吸引了一堆同学,大家纷纷探过头来,打量着这个程序。现在就把这个号称最小的打字练习程序公布与众,让读者也共同欣赏,不过考虑大部分读者未曾接触Pascal语言,就将之转化为windowsC语言版本吧,在DEV C++上编译通过。

 


  
  1. #include <stdlib.h>  
  2. int main(int argc, char *argv[])  
  3. {  
  4.   srand((unsigned int)time(NULL));  
  5.   while(1)  
  6.   {  
  7.       putchar('a' + rand()%26);  
  8.       putchar(getch());  
  9.       putchar(' ');  
  10.   }      
  11.   return 0;  
  12. }  

 

“嗯,最小的TT程序,这也是一种思路,设计精简的程序,说不定老师特别喜欢。”教授评价。

“有道理。看看有没有可能再压缩代码行。”帅哥张说道。

“不如这样,把这机行代码并排写,合写到一行中。”于谦提出主意。

“那样做是没有用的!一个语句就是一个代码行,合并在一起仍然是两行。”帅哥张不同意。

……

上一篇   目录  下一篇