آموزش سوئیفت swift قسمت نهم

1396/1/4 خانم عقیلی 2931

مقدمه و معرفی : 

سلام در این جلسه ساخت ماشین حساب رو کامل می کنیم در ابتدا به چند متغیر احتیاج داریم

var resultvar = Float()
var currentNumber = Float()
var currentOperator = String() ‍

توجه کنید که میتونید هر نام دلخواهی برای متغیر انتخاب کنید

resultvar متغیر نتیجه نهایی هست

که میتونه از نوع float باشه

currentNumber عددی هست که وارد می کنید و به صورت پیش فرض هم مقدارش ۰ هست

currentoperation عملگری هست که انتخاب میکنید و از نوع رشته یا کاراکتر میتونه باشه

در جلسه پیش یه تابع به عنوان buttonOp تعریف کردیم  که دکمه هایی که شامل عملگر ها بود رو بهش متصل کردیم!

در این تابع باید کار عملگر ها رو مشخص کنیم

از switch  استفاده می کنیم به صورت زیر

switch currentOperation{
        case "=" :
            resultvar = currentNumber
        case "-" :
            resultvar = resultvar - currentNumber
        case "/" :
            resultvar = resultvar / currentNumber
        case "+" :
            resultvar = resultvar + currentNumber
        case "*" :
            resultvar = resultvar * currentNumber
            
        default :
            print("error")
        }

نکته ای که هست بعد از اینکه عملگر مد نظر رو انتخاب کردید در خود ماشین حساب  متغیر currentNumber باید اماده پذیرفتن عدد بعدی بشه پس بعد از این switch

`currentNumber = 0`

و

result.text = ("(currentNumber) ")

که مقدار textfield موجود در ماشین حساب رو عددی که کاربر وارد میکنه قرار میده

توجه کنید

("(currentNumber)")

اسلش و بعد پرانتز و نام متغیر یعنی اینکه مقدار این متغیر رو به عنوان متن یا رشته در خروجی قرار بده

یک شرط هم قرار میدیم 

 if (sender.titleLabel!.text !== "="){
            resultvar = 0
}‍‍
sender.titleLabel!.text!

مقدار دکمه لمس شده توسط کاربر رو به صورت رشته میگیره

این شرط یعنی اگر عملگر مساوی بود مقدار متغیر resultvar رو صفر قرار بده تا برای محاسبات بعدی خالی باشه.

پس این قسمت از کدمون به این شکل هست:


 ‍`@IBAction func buttonOp(sender: UIButton) {`
        switch currentOperation{
        case "=" :
            resultvar = currentNumber
        case "-" :
            resultvar = resultvar - currentNumber
       case "/" :
            resultvar = resultvar / currentNumber
        case "+" :
            resultvar = resultvar + currentNumber
        case "*" :
            resultvar = resultvar * currentNumber
        default :
            print("error")
}
        currentNumber = 0
        result.text = ("(currentNumber)")
        if (sender.titleLabel!.text! == "=")}
            resultvar = 0
}
}

میریم سراغ فانکشن :

@IBAction func buttonNum(sender: UIButton){
        currentNumber = currentNumber * 10 + Float(sender.titleLabel!.text!.toInt()!)
        result.text = ("(currentNumber)")
}

این فانکشن برای اعداد هست وقتی دکمه اعدا رو وارد می کنید در خروجی چه چیزی نمایش داده بشه !

sender.titleLabel!.text!

همونطور که گفتم این قسمت مقدار دکمه رو به عنوان رشته میگیره و طبق این فانکشن اول به integer تبدیل می کنه و بعد هم به float

 

در اخر هم متغیر currentNum رو به عنوان رشته در  textfield مربوط به خروجی قرار میده.

در ماشین حساب دکمه clear داشتیم که برای پاک کردن textfield  و متغیرها ازش استفاده می کنیم


@IBAction func clearBtn(sender: UIButton) {‍
        resultvar = 0
        currentNumber = 0
        currentOperation = "="
        result.text = ("(resultvar)")
    }

همه متغیر ها رو 0  و عملگر  رو هم برابر مساوی میذاریم

فقط یک قسمت مونده که اون هم وقتی برنامه لود میشه و تازه باز میکنیم برنامه رو ماشین میتونیم قرار بدیم

override func viewDidLoad() {
        super.viewDidLoad()
        currentOperation = "="
        result.text = ("(resultvar)")
}

توجه کنید که  viewDidLoad() پیش فرض در خود برنامه همیشه ایجاد میشه ! فقط کافیه مقادیر مورد نظر رو که در نظر دارید به عنوان پیش فرض متغیر ها یا textfield داشته باشه رو در این قسمت قرار میدید.

خب ماشین حساب تکمیل شد کافیه که روی دکمه build کلیک کنید و منتظر بمونید کامپایل بشه و در شبیه ساز خروجی رو ببینید.

آموزش سوییفت

این هم خروجی همونطور که میبینید در ابتدا خروجی شامل ۰ هست چونکه در دستور شرطی که ایجاد کردیم قرار دادیم خروجی برابر صفر باشه اگر عملگر = باشه در ابتدای لودینگ برنامه هم تعریف کردیم که متغیر currentoperation‍‍ برابر = باشه ! پس این خروجی ۰ از اونجا نشعت میگیره

امیدوارم این جلسه براتون مفید واقع شده باشه موفق و موید باشید.