#13 計算機App

優先權+公式型態的計算機

看到老師的計算機參考資料,原以為計算機是很單純的『+−×÷』計算,但實作之後,發現不是只有『+−×÷』,且老師出的題目,有包含『先乘除後加減和考慮負數的』運算法則,與一般的傳統計算機的工作原理便不太一樣,於是先演繹思維大致的演算法之後,就邊做邊修正,以下就是老師的參考資料:

storyboard的規劃:

主要配置部分跟一般的計算機都相同,比較不同的地方,只有最上面的藍色方塊是公式顯示區域。

按鍵配置:

由圖看出,所有的按鍵都拉到同一個 @IBAction func pressButton(_ sender: UIButton) {}中了。

程式宣告:

宣告中比較特別的地方是參考學長的做法,把 input 做成 computed property,是相當傑出的方法。

程式部分:

input computed property 中有呼叫到 formatDecimal() 這個 function,其中是用 for Loop的方式來判斷 小數點的位置,常數 DECPOINTS 是可以調整所要顯示的小數點到第幾位。

程式演算法:

主要的運作框架是,把輸入的值跟符號存到陣列中,在接收到使用者按鍵按下『=』按鍵(等於按鍵)之後,會依據先後次序從陣列中一個一個,拿出來計算,其中有符號是『×÷』的數字會先做,等陣列都讀出來計算後,所得的數值就是結果了。主要的作法大致是這樣的。

實際操作圖:

(動畫會有下載時間,會中途重播,請稍等一下)

由圖可以看出,上方的公式輸入區域,是顯示操作者所按下的按鍵紀錄,這樣可以比對輸入的資料是否正確,以免中途錯誤,圖中的操作是隨意按鍵的,可以『+−×÷』混合使用,操作時允許可以連續『×』或『÷』無限制輸入,這樣可以增加較廣泛的運算範圍,計算所得的答案,後來自行驗證結果是正確的。

以下的操作圖是加入了『+/−』跟『 % 』兩個按鍵的操作:(動畫會有下載時間,會中途重播,請稍等一下)

圖中看到可以在任何數值輸入的過程中按下『+/−』跟『 % 』,來改變此數值的正負值或是百分比,而且可以在按下『=』按鍵之後,繼續下一筆計算公式的輸入,不需要重新從頭輸入,可以更增加操作的效率。

參考資料:

感謝參考的學長的資料如下:

--

--