用電腦解題 -- 國小最小公倍數 ~~
用電腦解數學題目
有甲、乙兩個鐘,甲每25分鐘響一次,乙每30分鐘響一次,已知第一次同時響是在上午8時30分,請問第二次同時響是在何時?
分解問題:兩個整數的公倍數有無限多個,其中最小的就稱為最小公倍數。
找出規律:要找出第二次同時響的時間,所以是要找出最小公倍數。
抽象化:用X(未知數)來代表所求的最小公倍數。
歸納:範圍只限定整數部份。
(可以用短除法求出兩個收共同的質因數,再將這些共同的質因數和其他非共同的
質因數相乘,所得到的結果就是它們的最小公倍數。)
(互質的兩個數,它們的最小公倍數就是這兩個數的乘積。)
設計演算法:找出兩個數的共同因數,再去乘以其他非共同因數的演算法的流程。
設計演算流程,可以用流程圖幫助思考。
一.先畫出流程圖:
流程圖主要用意,是讓我們可以更加了解題目的意恩,透過流程圖,可以把要做的步驟,一步一步變成電腦解題的方式。
二.撰寫程式碼:
依照所劃出的流程圖,請電腦來幫我們解這個題目。
1. 輸入題目資料:
除了輸入題目提供的資料外,還需要比對輸入的資料跟題目是否一樣,一樣的話顯示出來,不一樣的話要重新輸入,直到輸入正確為止。
有可能要請電腦記憶下來輸入的資料,是否需要用到"變數"這個功能?或 者有其他方法可以代替?
程式碼如下:
在這個題目,設定了一些變數
很多變數都有一個中文名稱,應該很容易懂意思,其中有一個i,是一個計數功能,沒有任何意義,在電腦程式設計上,習慣上以i表示
2.計算最小公倍數:
電腦的計算方式,跟我們在課堂上所學習的方式是不一樣的,所以我們要想辦法把計算方法換成電腦可以接受的方式,電腦跟我們比起來,最大的優點就是,計算速非常快,可以善加利用這個優點,來計算出我們要的答案。
計算方法有很多,不是只有一種,只要了解如何計算最小公倍數,就可以輕易地設計出運算方法。
3.時間單位換算:
算出來的最小公倍數單位是分鐘,我們需要判斷是否有超出60分鐘,有的話需要進位,還要判斷是否有超過12點,有必要的話要把時間制換成下午。
程式碼由上而下,由左而右,為了顯示方便,分成兩行
都算好了,最後請人物幫我們說出答案。
都算好了,最後請人物幫我們說出答案。
4.把所有程式串起來:
現在的程式都是屬於”事件”驅動,簡單的說就是,你要給電腦一個動作,例如按一下鍵盤、滑鼠點一下特定的按鈕等,電腦才會依據所做的動作,採取因應的程式碼。
現在的程式都是屬於”事件”驅動,簡單的說就是,你要給電腦一個動作,例如按一下鍵盤、滑鼠點一下特定的按鈕等,電腦才會依據所做的動作,採取因應的程式碼。
我們用最常用的,點一下:
請注意積木型式,不一樣型式可是串不上去的。
................
以下有一堆,顯示到這邊。
5.除錯跟修改程式:
為了增加程式的可讀性跟可維護性,這裏用了一個小技巧,用類似副程式的手法,使程式的維護跟除錯變得簡單一點。
發覺在事件積木中,除了點一下之外,還有一個"廣播訊息"。
就利用這個功能,來分段一下程式碼,就像作文分段落一樣。
這個是一對的,先對程式發出一個廣播名稱,假設要執行程式,就把當收到訊息放到要執行那個程式碼的最上方。
最後我們要算小公倍數,所以執行完畢,再加入一段廣播訊息,繼續算出最小公倍數。
記得我們有宣告一些變數嗎?宣告出來的變數,其內容不知是什麼?
所以依據寫程式的習慣,會先做一個初始化的動作,來避免不可預期的執行錯誤。
隨時都可以初始化,只要發個廣播訊息,就可以把所有東西就定位。
再來修改一下主要的 "點一下"程式,如下:
只有兩行,看起來,清爽多了吧
修改及除錯後的程式碼如下:
留言
張貼留言