最NB的打字練習程序——計算機達人成長之路(39)

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++上編譯通過。

 

#include <stdlib.h>

int main(int argc, char *argv[])

{

  srand((unsigned int)time(NULL));

  while(1)

  {

      putchar('a' + rand()%26);

      putchar(getch());

      putchar(' ');

  }   

  return 0;

}

 

“嗯,最小的TT程序,這也是一種思路,設計精簡的程序,說不定老師特別喜歡。”教授評價。

“有道理。看看有沒有可能再壓縮代碼行。”帥哥張說道。

“不如這樣,把這機行代碼並排寫,合寫到一行中。”于謙提出主意。

“那樣做是沒有用的!一個語句就是一個代碼行,合併在一起仍然是兩行。”帥哥張不同意。

……

                                                      上一篇   目錄  下一篇

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章