close

話說某君在學習IPHONE編程的第一還是第二課就被要求試著製作計算機APP,

當時除了一些簡單的Object外,

就沒有更多的關於Swift的認識啦,

當時還是靠著其他編程的基礎硬生生寫出來了,

現在回想一下,

這不正是計算機最初階的雛形嗎?

正好可讓有興趣的各位實際練習一下哦~

 

現在提供一下某君在這實例中用到的一些程式碼、概念等,

用上這些應該就能推出最後的結果了,

如果不行的話,是不是沒有看前幾篇教程呢?

image

上面的是上次完成的Layout,[iOS][Xcode][Swift]iPhone手機編程--簡易計算機製作 第一彈 -- 適配各個型號手機、平板屏幕的方法(Constraint, Auto Layout, StackView)

在此基礎上,你還要知道:

Label上的是文字,如果要作計算的話,需要轉換成數字。 --Double(x), Int(x), Float(x)

其他的應該都可以在某君的其他教程上找到,簡介一下:

1. 如何定義變數? 

2. 基本流程控制

3. 程式碼與Object的簡單連結

 

如此便能製作成功啦,教程!!

 

哈哈,說笑啦,

至少還要把程式碼貼出來吧~

 

//  ViewController.swift

//  ViewController程式碼部分

//  Created by cm420-07-2020-c on 07/07/2020.

//  Copyright © 2020 cpttm. All rights reserved.

//

 

import UIKit

 

class ViewController: UIViewController {

    var str=""                                                                 //定義一個空字串變數來存放顯示於Label上的數字

    var numA:Double?

    var numB:Double?

    var num:Double?                                                      //定義三個小數變數

    var sym=0                                                              //定義一個變數存放運算符

    

    @IBOutlet weak var display: UILabel!                        //將Label拖曳至程式,並命名為display

    

    override func viewDidLoad() {                                 //並沒有預先執行的程式

        super.viewDidLoad()

        // Do any additional setup after loading the view.

       

    }

//將按下1的Button的動作命名為clickNumber1,並且在Label的文字後加上1,即若display.text=""時,現在就變成1;若本來display.text=232,現在就變成2321

//(這就是上面提到的Label的text是純文字,不能直接運算,所以不會變成233。等同於str1="Happy " str2="Birthday" str1+str2="Happy Birthday")

//由於當時並不知道有獲取button上文字的方式,只可以為每個按鈕做一次相關步驟,是有點蠢啦,不過也是最好理解的方法

    @IBAction func clickNumber1(_ sender: UIButton) {

        str+="1"

        display.text = str

    }

    @IBAction func clickNumber2(_ sender: UIButton) {

        str+="2"

        display.text = str

    }

    @IBAction func clickNumber3(_ sender: UIButton) {

        str+="3"

        display.text = str

    }

    @IBAction func clickNumber4(_ sender: UIButton) {

        str+="4"

        display.text = str

    }

    @IBAction func clickNumber5(_ sender: UIButton) {

        str+="5"

        display.text = str

    }

    @IBAction func clickNumber6(_ sender: UIButton) {

        str+="6"

        display.text = str

    }

    @IBAction func clickNumber7(_ sender: UIButton) {

        str+="7"

        display.text = str

    }

    @IBAction func clickNumber8(_ sender: UIButton) {

        str+="8"

        display.text = str

    }

    @IBAction func clickNumber9(_ sender: UIButton) {

        str+="9"

        display.text = str

    }

    @IBAction func clickNumber0(_ sender: UIButton) {

        str+="0"

        display.text = str

    }

    @IBAction func clickNumberDot(_ sender: UIButton) {                                         //這個是小數點的按鈕

        str+="."

        display.text = str

    }

//接下來是運算符部分,只要按下運算符,就把之前的數字儲存成numA,並把字串歸0,方便之後的儲存新的數字

//由於符號始終不及數字方便輸入和識別,某君索性把1代替+、2代替-,如此類推

    @IBAction func clickAdd(_ sender: UIButton) {

        numA=Double(str)

        str=""

        sym=1

    }

    @IBAction func clickMinus(_ sender: UIButton) {

        numA=Double(str)

        str=""

        sym=2

    }

    @IBAction func clickMultiply(_ sender: UIButton) {

        numA=Double(str)

        str=""

        sym=3

    }

    @IBAction func clickDivide(_ sender: UIButton) {

        numA=Double(str)

        str=""

        sym=4

    }

//當按下=的Button時就會作運算,將現存的數字存為numB,並用Switch Case判斷是+-*/哪一個,並作相關運算

    @IBAction func clickEqual(_ sender: UIButton) {

        numB=Double(str)

 

        if let a = numA{

            if let b=numB{                                                                                      //這裡是Optional的判斷部分,確定numA和numB都有值

                switch sym {

                case 1:

                    num=a+b

                case 2:

                    num=a-b

                case 3:

                    num=a*b

                case 4:

                    num=a/b

                default:

                    num=numB

                }

            }else{

                print("numB error.")

            }

        }else{

            print("numA error.")

        }

        

        if let n=num{                                                                                            //運算完畢之後將數字轉回文字並顯示在Label上,同時將符號歸0

            display.text=String(n)

            str=String(n)

            sym=0

        }

        else{

            print("num error.")

        }

        

    }

 //當按下C的Button時就會一切歸0

    @IBAction func clickC(_ sender: UIButton) {

        str=""

        display.text=str

        sym=0

        numA=0.0

        numB=0.0

    }    

}

 

arrow
arrow

    4ngus 發表在 痞客邦 留言(0) 人氣()