計數機程式選材與取拾

選材就是選擇題材。作為一個程式編寫員,程式有很多編寫的題材,究竟寫什麼才好呢?有時的確很難想。

如 果是一個初中生,所學的知識比較少,而且通常中是初中才接觸計數機,所以可能不太熟手,我建議先打好基礎,看明白說明書,我也是由看說明書一步一步學回來 的。以fx-3900Pv為例,看說明書可以暫時不看log﹑ln﹑統計功能﹑積分功能等較難的地方,先看sin﹑cos﹑tan﹑x2等較易的東西,摸熟計數機的輸入和運作過程。特別要摸熟Fix0﹑RND﹑NRM等 ( 其他類形計數機的類似功能都是 ) 因為這是在寫程式時經常用到的,而且也很容易明白。

如 果摸熟了,便可試寫一些程式,我建議試寫寫一些實用又簡單的程式,例如 Distant formula﹑Slope of straight line﹑Point-slope form / Two point form of a line…這些在中二中三左右的平面幾何會學到的,很有用。覺得太易也可寫寫一些較複雜的程式,如 HCF&LCM。

在中四﹑ 中五時,學到更多更多東西了,可以寫的題材很廣,學懂什麼是sin﹑cos﹑tan﹑log後,已經很好用了,很多程式都用到這幾個制。另外,有一條程式 是不可不寫的,那就是 Quadratic equation 了。這在中三至中五都會經常運用到,而且有很多板本。另外,也可嘗試寫一些計數機遊戲,有時很好玩的。

我假設一個中四﹑五左右的學生能夠有 熟練技巧,那麼怎樣才能發揮到長處呢?作為一個中學生,基本數學知識是有的。若你是懂得很多數學理論知識的話,如一些大學生﹑老師,可以寫一些牽涉較深奧 的數學理論的程式,如一元四次方程式。如果你數學知識不是太穩,可以寫寫一些簡單而特別的程式,或是遊戲程式之類。

我比較喜愛寫一些遊戲或 較 另類的程式,一來,寫了後成功感較大,二來,較少人寫有新鮮感,三來,遊戲的類型變化多端,自由度很大,而且編寫遊戲的過程較有趣,由無到有,一齊規則由 自己設定,四來,寫遊戲程式其實是最難的,因為若寫數學程式,根本已有了數學原理,我們只需將數學上的原理翻譯成程式語言便成,但是,寫遊戲程式時,本身 根本沒有數學原理,要由自己將抽象的概念轉化為數學原理,難度會多些。

取捨又是什麼? 我說的取捨是指在寫計數機程式中,在各事項取得平衡。正所謂魚與熊掌,不能兩者兼得,有很多事都要作出平衡。每個人對它們作出不同的取捨,於是便會有不同的風格。需要作出取捨的有:程式實用性﹑程式長短﹑方便程度﹑準確性﹑速度等。

上述每樣都是重要的,但不能太偏重於某一方面而怱略其他地方 ,否則得不嘗失。但有時為了特別需要,會突出某一方面。大多數的取捨都是以下幾個例子:

  • 程式實用性<->程式長短﹑方便程度
  • 程式長短<->程式實用性﹑方便程度﹑速度﹑準確度
  • 方便程度<->程式長短﹑程式實用性
  • 準確度<->程式長短﹑速度
  • 速度<->程式長短﹑準確度

程式長短是很重要,但你看一元三次方程式多麼的長,可是用的人也大有人在。因為很多人覺得這是值得的。

最短 23 步的 Quadratic equation 的確很短,但我考試一定不會用,因為用途不廣,我寧願多些步數,起碼可以計到 discriminant 同 max/min value 等。

例如因式分解 Quadratic equation,用的時候要先按五次 RUN,很不方便,但是它的實用性掩蓋了這個缺點。

以上的取捨只是大部份例子,但是卻也有例外,有時程式短反而會更加慢。小數轉分數最短的程式只需16步,但可以說是沒有人會用的,因為太慢了。大部份人都的小數轉分數程式都是約四﹑五十步左右。為什麼短的程式反而會慢呢?這是因為程式的 agorithms 不同的原故。

每個程式都有一定的要求,用不同的 agorithms 達到要求,會有不同後果。程式的原理如果設計得好,有時可以避免一些不必要的取捨,兩全其美的。所以在寫程式前,要先設計好 agorithms 才寫,這樣不但事半功倍,而且也可減少取捨。

取捨的定義因人因情況而異,所以很難一概而論。在大部份的情況下,我的優先次序為:
程式實用性 > 程式長短 > 方便程度 > 準確性 > 速度

當我們在設計遊戲程式時,同樣都有所取捨,就是加密與不加密。

有 人認為在遊戲中加密是無意義的,因為只要是對程式有認識的人都能輕易作弊,作弊太易了,而且可令程式更簡潔。有人卻認為在遊戲中加密是有用的,因為設計合 適,用者是絕對不能作弊的;而且有時只是多幾個步數,這又何樂而不為呢?我認為,比起玩電腦遊戲﹑玩電子遊戲機,玩計數機遊戲不算很有趣,如果還作弊,會 更加沒趣。所以我認為是大部份人是不會作弊的,即使是的話也不會好玩。我慣常是:如果加密只是多加幾個步數,我會加,如果為此而多幾十個步數,我便寧願不 加密好了。

Leave a Reply

Your email address will not be published.