Salı Ağustos 13th, 2019

Swift App – Hesap Makinesi Part-2

ile Ebubekir Sezer

Bir önceki yazımda iPhone’larda kullandığımız hesap makinesinin tasarımını nasıl sabit halde tüm cihazlarda çalışabileceğini yapmıştım. Bu yazımda ise Hesap makinesinin çalışması için gereken backend kodları yazarak hesap makinemizi çalışır hale getireceğim.

İlk olarak oluşturduğumuz swift projesini açıyorum ve proje içerisinde ViewController.swift sayfasına geçiyorum. Burada MainStoryboard’da oluşturduğumuz sayı butonlarını diğer tarafa hepsini seçerek den ekliyorum daha sonra aynı işlemi işlem operasyonu gösterecek butonlar ve üstekki sonucu gösterecek olan label içinde yapıyorum.

@IBOutlet weak var resultLabel: UILabel!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

    @IBAction func operationButtons(_ sender: Any) {
    }
    
    @IBAction func numberButtons(_ sender: Any) {
    }

Bu işlemleri yaptıktan sonra MainStoryboard’la işim kalmıyor, şimdi sadece kodlarımı yazarak uygulamayı yapacağım. Hesap makinesinde 2 adet sayı alacağım için 2 adet değişken tanımlayacağım bunlar firstNumber ve nextNumber olacak. Daha sonra kullanıcının işlem yapıp yapmadığını kontrol etmek içinde boolean bir değişken tanımlayırum isMath adında. Daha sonrada butonları etiketlerinden yakalayacağım için operation adında bir integer değer tanımlayorum ve bunu 0 değeri veriyorum.

    var firstNumber : Double = 0
    var nextNumber : Double = 0
    var isMath : Bool = false
    var operation : Int = 0

Gerekli tanımlamaları yaptıktan sonra, operationButtons fonksiyonuna giderek ve gerekli kontrolleri yaparak burada işlemlerimize devam etmemiz gerekiyor. İlk olarak kontrol ettğimiz nokta sonuç başlığının boş gelip gelmediğini ve işlemleri sıfırlama ve eşittir butonuna tıklanıp tıklanmadığını kontrol etmek. Eğer bu kontrol doğru ise firstNumber’a tıklanan sayı butonun değerini veriyorum. Daha sonra hangi işlemlerin yapılıp yapılmaması gerektiğini if-else yapısını kullanarak kontrolünü sağlıyorum.

@IBAction func operationButtons(_ sender: UIButton) {
        if resultLabel.text != "" && sender.tag != 11 && sender.tag != 17{
            firstNumber = Double(resultLabel.text!)!
            if sender.tag == 12 {
                //%
                resultLabel.text = "%"
                
            }
            else if sender.tag == 13 {
                // /
                resultLabel.text = "/"
                
            }
            else if sender.tag == 14 {
                // *
                resultLabel.text = "X"
            }
            else if sender.tag == 15 {
                // -
                resultLabel.text = "-"
            }
            else if sender.tag == 16 {
                // +
                resultLabel.text = "+"
            }
            operation = sender.tag
            isMath = true
        }
        else if sender.tag == 11{
            firstNumber = 0
            nextNumber = 0
            operation = 0
            resultLabel.text = ""
        }
        else if sender.tag == 17{
            if operation == 12 {
                resultLabel.text = String(firstNumber / 100)
            }
            else if operation == 13 {
                resultLabel.text = String(firstNumber / nextNumber)
            }
            else if operation == 14 {
                resultLabel.text = String(firstNumber * nextNumber)
            }
            else if operation == 15 {
                resultLabel.text = String(firstNumber - nextNumber)
            }
            else if operation == 16 {
                resultLabel.text = String(firstNumber + nextNumber)
            }
        }
    }

Operasyon işlemlerini tamamladıktan sonra şimdi sadece hangi sayının tıklandığını ve resultLabel kaç değerine eşit olup firstNumber mı yoksa nextNumber değerine eşitleyeceğimiz kontrolu yapacağız. Bunu yaparken oluşturduğumuz Boolean değeri kullanacağız. Boolean değerine göre hangi işlemle devam edip etmeyeceğimize karar vereceğiz. Button değerine’de  verdiğimiz tagler hep sayının 1 fazlasıydı bunu çıkarınca aynı sayıyı elde edeceğiz.

 @IBAction func numberButtons(_ sender: UIButton) {
        if isMath == true {
            resultLabel.text = String(sender.tag - 1)
            nextNumber = Double(resultLabel.text!)!
            isMath = false
        }
        else{
            resultLabel.text = resultLabel.text! + String(sender.tag - 1)
            nextNumber = Double(resultLabel.text!)!
        }
    }

Bu işlemlerden sonra hesap makinesi uygulamamız düzgün bir şekilde çalışacaktır. Ekran görüntüsünü aşağıda görebilirsiniz. Projeye buradan ulaşabilirsiniz.

Soru ve görüşlerinizi mail veya yorum olarak belirtebilirsiniz.