發表文章

目前顯示的是有「數學計算」標籤的文章

寫一些關於數學練習的程式(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 == ...

寫一些關於數學練習的程式(1)

圖片
           最近突然想到,又寫了一些跟數學相關的教學及自學程式,當然這是我一直有興趣的事,前陣子剛好家中女王提到中年級小朋友關於分數的學習問題,一時動了來寫寫相關教學程式的念頭… 寫個可以教小朋友分數程式        分數相關的程式,我以前沒有寫過,因為處理分數「顯示」方式的問題很讓人覺得麻煩…,不過這次就玩玩看吧!頂多寫不好,又沒什麼壓力~一開始很單純的,就是希望畫面上動態地出現某個分數,讓小朋友可以去辨識是真分數、假分數或是帶分數,因為中年級的範圍好像就中有這樣,再往後一點就是假分數與帶分數的互換…對於電腦程式來說,這其實沒有什麼難度就是Math.Radom就解決了,當然花了許多功夫在分數的呈現方式上,六分之五又不能寫成5/6,雖然有點麻煩,但設計一些涵數就也解決了 認識分數的種類 分數轉換     為了增加撰寫樂趣,我就想著若能讓這程式講話,唸出題目唸出答案,好像是不錯的點子,找到了 https://soundoftext.com/  這個網站可以讓人家輸入文字,下載成mp3所以就把預想中程式可能會說的字眼都分別存成獨立的mp3,我的策略是:要說話時就在程式中讓多個mp3音檔湊出那句話,一開始我把那些音檔一一送進播放器,問題出現了:雖然會講,但音檔與音檔在播放器交替時會有延遲,導致講話會鈍… 這是九十九的音檔波形         怎麼解決這個問題呢?我想必須先能在送進播放器之前,將各音檔先動態合併起來,方法當然是去爬文(英文不好但又得去爬外國人說的),別跟我說用Audacity、用格式工廠、用Audio Joiner呀!這些沒用的…,我的需求是在我的程式中可以動態將多個聲波檔合併成一個聲波檔的方法,原則上就是CommandLine工具或是指令或是dll涵式庫之類的,想不到外國工程師的文中提到用Windows內建指令就行了,語法如下: > copy /b 1st.mp3+2st.mp3+3st.mp3 output.mp3 在程式中呼叫了cmd.exe來執行這樣的語法,果然可以將多個音檔合併成一個,不過很快就發現了問題,怎麼產生的mp3明明檔案大小是多個檔加起來的,但卻只唸2...

數學可以不會,但不要討厭它

圖片
        在現在全球都在熱潮中的 人工智慧(Artificial Intelligence, AI)時代,對於小孩子的教育方向,美國政府最早提出了STEAM的教育理念, STEAM是由五個英文單字縮寫組成,也就是: S cience(科學) T echnology(技術) E ngineering(工程) A rts(藝術) M athematics(數學)。 你應該可以發現「數學」是佔其中一項重要的指標的,但我們目前的教育環境,大多還是是以考試領導教學的,全球都在重視及培養國民理工素養,但我們這兒在教改及課程網領改革的過程中,學校的數學課時間卻減少了、國小甚至沒有電腦課程規畫,國中卻要學生寫程式…有點令人不解~         當然囉!我只是一個小學老師,可能無法領會大教授們的教學理念遠景,在我實際的教學場域中,我儘可能帶給我所教到的小朋友正確的觀念,就像我這篇說的:「數學可以不會,但不要討厭它!」         在我個人的教學經驗中,覺得現行教程裡五年級的數學範圍特別重要,幾何圖形面積體積、分數進階運用、因倍數、數字較複雜的計算…都在這時出現,我常跟認識的人說:五年級的數學如果學不好,國中又會惡夢重現,所以我在空暇時喜歡提出一些較需思考的數學題目,跟學生當作閒聊,「今天想不出來,明天想嘛!」又不會怎樣…有時候還會提出:這題想出來請喝飲料唷! ※哈哈,純屬娛樂 ※ 有一個重點,如果有學生算出所謂的答案,我都在要他說一下自己是怎麼想的,所以怎麼算的,有時講到一半就知道自己的算法有問題了!

Arithmetic Challenge Open2015開發紀錄

圖片
今天我把以前開發給學校學生使用的 算術大挑戰 (Arithmetic Challenge)改版開放給校外,主要是把消息Share在溫老師的備課Party,比較起來,這兒重視小朋友學習的老師或家長還是多一點吧! 程式網站的位置→ http://163.26.23.3/app/math_game_ex/ 這是一個主從式的程式,意思是程式在使用者的電腦上執行,背後卻可以和伺服器連動,很多電玩不都是這樣嗎?以這個程式來說,小朋友挑戰的成績可以上傳到伺服器配合的網站程式接收,這樣可以讓小朋友們比拼一下誰厲害。 原本結合在學校兒童學習網的後端 在這次的改版中,保留原本程式中算術項目功能,「個位數加法」、「二位數加法」]、[九九乘法]、[二位乘一位]、[100以內的減法],我覺得這些項目是小學生最需要的話題,簡單是簡單,就算是一位加一位的題目,如果趕你時間,就可能會出錯囉! 我趁這個機會,就把最近用的「憤怒鳥」加到畫面裡。 程式執行起來的畫面 當挑戰者(學生)按下開始後,程式會自動出題,共20題,題目在上方,答案會隨機出現在下面的八鈕之中,學生做完一題,程式會立刻出下一題,直到20題結束。 分數的核算方法:本程式計算成績的方法依據二個部份→答對的題數及所耗用的時間,而且連績答對還會有動態加分,如此設計的原因是希望學生能同時兼顧作答的正確性及速度。 進入測驗的畫面 我覺得我之前構思的計算分數的方法是蠻不錯的想法→想得高分,得兼顧速度和正確還有連續正確…,只是過去在學校實施,有很多學生的成績會很接近,使用的秒數有一樣的情形,那是因為之前的程式,我讓它每一秒核算一次所謂的「時間加分」,當許多認真的學生出現時,他們的成績會很接近,甚至一樣。 所以這一次,我修改程式這個部份,改為每0.1秒核算一次,我想這樣子,想同分的機會就不多了。 再來就是成績上傳這件事,原來的版本,小朋友測驗完後,想要上傳成績,會跳出一個視窗要求輸入帳號密碼,會送出到兒童學習網認証並取得學生的資料,再寫入成績表,所以可以上傳成績的都是本校的學生。 想讓程式改成讓學校之外的人上傳成績,以學習的角度來說,這絕對是很棒的事,但如何在上傳成績時進行「認証」變成一件很值得思考的事,我不可能要求凡是要上傳成績的人都來系統申請帳號,因為這樣會讓事情變複雜了,而且我也不想找自己的麻煩。 最後,我想了一個辦法,伺服器上不需要保有使用者的...