寫一些關於數學練習的程式(2)
應該是太容易就把分數類型及轉換的程式給寫好,加料的壞習慣又來了,想說應該要有分數計算的部份才對吧!想不到這個念頭又 讓自己陷入很損耗腦細胞的程式碼漩渦中…想起來很簡單自然的事情,在實現面常常都是複雜的…※不是艱難而是複雜! 趁此機會讓畫面有點樂趣 我在這支程式的畫面中,用了許多「憤怒鳥」的圖,它是我女兒小時候很喜歡的卡通人物,※這組Angry bird的圖是取自 https://snap2objects.com/ ( https://creativecommons.org/licenses/by/3.0/ )而程式的icon及裡頭的關於頁用的 Garfield,則是我個人很喜歡的,用的圖也是我女兒小時候手繪的~ 在寫分數的加減乘除這個部份,比較費神的加減的部份,主要是因為分母通分的部份,還有讓電腦亂數出題,有可能會出一些答案是負數的,這個在小學可是不適用的… 還有,我不僅想讓程式自己出題、自己給出答案,還希望它能列出建議的計算過程,最後也能有語音講出來的功能,這些都是費功的地方,一時間開始思考分數的SOP算法是我個人的收獲…發現在這些計算中,求二數的「最大公因數」的能力非常重要,所以五年級的課程中,因數這個話題,小朋友一定要學好… 在程式中,我就要先寫一個取最大公因數的演算式才行,找了一下資料最棒的方式應該是「輾轉相除法」 又稱 歐幾里得算法 (英語: Euclidean algorithm ), 而在 中國 則可以追溯至 東漢 出現的《 九章算術 》 (幾千年前的人智慧怎麼如些高呀!) 我實作出下列CODE --求最大公因數 function gcd(m,n) local remainder = Math.Mod(m, n); while remainder ~= 0 do m = n; n = remainder; remainder = Math.Mod(m, n); if remainder == ...