Swift if ve guard ( Tanımlamalarıyla ve Örnek Kodları İle ) || Mobilhanem

Swift if ve guard ( Tanımlamalarıyla ve Örnek Kodları İle ) || Mobilhanem

Merhaba arkadaşlar ,
mobilhanem.com sitemiz için anlattığımız/yayınladığımız Swift Dersleri serimize bu yazımızda Swift İf ve Guard ile devam edeceğiz. Bir önceki yazımızda Swift String ve Character konusundan bahsetmiştik. Bu derse başlamadan önce xcode’u kurmak ve playground  üzerinde swift kodu yazabilmek için bu dersimizi okumanızı tavsiye ederim.

Swift if Kullanımı

Önceki derlerimizde az da olsa if yapılarını kullanmıştık . Swift if yapıları oldukça basittir.Peki if ne demektir ? if ingilizce bir kelime olup türkçe karşılığı “eğer” dir. if yapısı, programlama dillerinde belirtilen herhangi bir koşulun doğruluğunu kontrol etmek için kullanılır. Belirtilen koşul sağlanıyor ise  true değeri döner ve if bloğu çalıştırılır, eğer belirtilen koşul sağlanmıyor ise  false değeri döner ve if bloğu çalıştırılmaz. Örnek olarak hepimiz en azından bir kere kullandığımız bir cümle olan , ‘eğer hava güneşli olursa dışarı çıkacağım’ cümlesini swift dilinde aşağıdaki kod ile yazabiliriz.

var havaGunesli = true

if havaGunesli {
print(“Dışarı çıkacağım”)
}

var havaGunesli = true

 

if havaGunesli {

    print(“Dışarı çıkacağım”)

}

havaGunesli diye boolean bir değişken tanımladık ve değerini true yaptık. Ardından bunu if yapısına eklediğimizde yukarıdaki cümlenin kod olarak karşılığını bulmuş olduk. havaGunesli değişkeni true olursa konsollara “dışarı çıkacağım” yazdırılıyor. Peki havaGunesli değişkeninin false olma durumunda yazdığımız kod ne yapar ? false olma durumunu belirtmediğimiz için hiç bir şey yapmaz .

Swift if – Else Kullanımı

Havanın güneşli olmama ihtimalide olduğu için kodumuza bu durumu kapsayacak şekilde düzenleyelim.

if havaGunesli {
print(“Dışarı çıkacağım”)
} else {
print(“Dışarı çıkmayacağım”)
}

if havaGunesli {

    print(“Dışarı çıkacağım”)

} else {

    print(“Dışarı çıkmayacağım”)

}

Peki bu else nedir ? else’in burdaki anlamı ‘eğer havaGünesli’nin değeri true değil ise else bloğunu çalıştır’dır. if yapılarını boolean değerlerin  dışındada kullanabiliriz. Örneğin ,

var benimYasim = 24

if benimYasim == 24 {
print(“Benim yaşım (benimYasim)”)
}

var benimYasim = 24

 

if benimYasim == 24 {

    print(“Benim yaşım (benimYasim))

}

Küçük bir not , == operatörü eşitliği kontrol eder.Örneğin 23 == 24 dediğimizde 23 , 24’e eşitmi demiş oluruz.

Integer türünde benimYasim adında bir değişken tanımladık ve değerini 24 yaptık.Yukarıdaki kod bloğunda demek istediğimiz , “benimYasim’ın değeri 24 ise (true döner) , ekrana “Benim yaşım (benimYasim)” ‘ı yazdır”dır. Ve benimYasim değişkeninin değeri 24 olduğundan dolayı kod bloğumuz ekrana “Benim yaşım 24” yazar. Tabi ki sadece bu kadar değil , else yapılarını biraz daha etkin kullanmaya başlayabiliriz.

Swift if Else-if Kullanımı

if benimYasim == 23 {
print(“Benim yaşım 23”)
} else if benimYasim == 24 {
print(“Benim yaşım 24”)
}

if benimYasim == 23 {

    print(“Benim yaşım 23”)

} else if benimYasim == 24 {

    print(“Benim yaşım 24”)

}

Yukarıda yapılan işlemin karşılığı , benimYasim ‘ın değeri 23 ise  print(“Benim yaşım 23”) komutunu çalıştır , benimYasim‘ın değeri 23 değilse ve eğer benimYasim‘ın değeri 24 ise  print(“Benim yaşım 24”) komutunu çalıştır ‘dır. Burada ki önemli olan nokta else if yapısını yan yana yazmamızdır. else if ‘in çalışma mantığı ise yukarıdaki if konuşulunu sağlamamışsa ve kendi koşulunu sağlıyor ise çalıştırılır. Yukarıdaki örnek için benimYasim değerimiz 24’tür ve ilk if bloğunu sağlamaz çünkü 23 , 24’e eşit değildir, ve ardından else if bloğuna gelir ve yukarıdaki if bloğuna girmediği için benimYasim değerinin 24’e eşit olup olmadığı bakar ve sağlıyor ise o bloğun içine girerek yazılmış olan komutları çalıştırır.

Swift if Else-if Else

Buraya kadar her şey tamam ise bir başka örneğimize geçelim. Şimdi ise diploma notunu ele alan bir kod bloğu yazalım ,

var diplomaNotu = 3.7

if diplomaNotu < 2.0 { print("Mezun olmak için çok çalışman lazım") } else if diplomaNotu <= 2.5 { print("Mezun olabilirsin ama çalışman lazım") } else if diplomaNotu <= 3.0 { print("Fena değilsin") } else if diplomaNotu <= 3.5 { print("Bravo tebrik ederim :)") } else if diplomaNotu <= 4.0 { print("Çok iyisin !!") } else { print("Bizi Kandırma , 4.0'ın üstünde olamaz..") }

var diplomaNotu = 3.7

 

if diplomaNotu < 2.0 {

    print(“Mezun olmak için çok çalışman lazım”)

} else if diplomaNotu <= 2.5 {

    print(“Mezun olabilirsin ama çalışman lazım”)

} else if diplomaNotu <= 3.0 {

    print(“Fena değilsin”)

} else if diplomaNotu <= 3.5 {

    print(“Bravo tebrik ederim :)”)

} else if diplomaNotu <= 4.0 {

    print(“Çok iyisin !!”)

} else {

    print(“Bizi Kandırma , 4.0’ın üstünde olamaz..”)

}

İlk olarak diplomaNotu değişkenimizi oluşturduk ve değerini 3.7 ‘ye eşitledik. Ve if bloklarımız ile bu değerin hangi aralıkta olduğunu bulmaya çalıştık. İlk olarak diplomaNotu 2.0’dan küçük mü diye baktık ve eğer küçük ise “Mezun olmak için çok çalışman lazım” yazısını ekranımıza bastırdık. Ardından eğer diplomaNotu 2.0 ‘ın üstündeyse (Yani ilk if bloğuna girmemişse bir başka deyişle sağlamamışsa) bu sefer 2.5’ten küçük mü ? diye baktık eğer küçük ise (true döner) ekranımıza “Mezun olabilirsin ama çalışman lazım” yazısını bastırdık eğer bu koşul sağlanıyor ise diplomaNotu 2.0 ile 2.5 arasında olduğunu anlayabiliriz (dikkat 2.5’te dahildir bu aralığa) Bu şekilde devam ederek hangi aralıkta olduğunu if , else if ile bulabiliyoruz.

Peki en sonraki else neyin nesidir ? En sonda yazdığımız else yukarıda yazdığımız durumların hiç birine girmiyor ise en sondaki else bloğuna girer ve kontrolu sağlamış oluruz. Yukarıdaki kod bloğunda mantıksal olarak bir hata var , bu hatayı bularak yorum kısmında belirtebilirsiniz eğer bulamaz iseniz bir sonraki yazıyı bekleyip görebilirsiniz.

if Yapısında Mantıksal İfadelerin Kullanımı

Mantıksal ifadeler derken and , or , eşit mi ? , küçük mü ? , büyük mü ? , eşit değil mi ? , küçük eşit mi ? , büyük eşit mi ? operatörlerini kastediyorum. Öncelikle bunların swift dilindeki karşılıklarını öğrenmeliyiz aşağıdaki görsele bakarak rahatlıkla görebilirsiniz.

Swift operatörler

 

Anlamlarını öğrendik ama klavyemizde nasıl yapabiliriz ? Aşağıdaki görselde tam olarak nasıl yapılabildikleri açıklanmıştır.

Swift operatör yapılışları

Devam etmeden önce And , Or bağlaçlarının sonuçlarını bilmiyorsanız aşağıdaki görselden öğrenebilirsiniz,

Swift And Or Sonuçları

Evet bunlarıda öğrendikten sonra bunları biraz uygulayalım ,

var paranVarMi = true
var uykunVarMi = false

if paranVarMi == true && uykunVarMi == false {
print(“O zaman dışarıya çıkabilirsin”)
} else if paranVarMi == true && uykunVarMi == true {
print(“Biraz uyu ondan sonra dışarıya çık”)
} else if paranVarMi == false && uykunVarMi == true {
print(“Biraz para kazan ve uyu”)
} else if paranVarMi == false && uykunVarMi == false {
print(“Biraz para kazan”)
}

var paranVarMi = true

var uykunVarMi = false

 

if paranVarMi == true && uykunVarMi == false {

    print(“O zaman dışarıya çıkabilirsin”)

} else if paranVarMi == true && uykunVarMi == true {

    print(“Biraz uyu ondan sonra dışarıya çık”)

} else if paranVarMi == false && uykunVarMi == true {

    print(“Biraz para kazan ve uyu”)

} else if paranVarMi == false && uykunVarMi == false {

    print(“Biraz para kazan”)

}

paranVarMi ve uykunVarMi isminde boolean türündeki değişkenlerimizi oluşturduk . Önceki örneklere göre bu örneğimizde farklı olan şey koşul olarak iki tane farklı koşul yazmamızdır.Koşul kısmına mantık çerçevesi içinde koşullar yazılabilir. Buradaki örnekte iki koşulumuzu Ve(And) bağlacı ile bağladık bu demek oluyor ki ilk koşulumuzun sonucu true olacak ve ikinci koşulumuzun sonucuda true olacak ki if koşulumuz sağlansın ve bloğun içerisine girsin. And bağlacı ile bağladığımız için iki koşulunda true olması gerekmektedir.Aynı And bağlacının kullanıldığı gibi or , küçük mü ? , büyük mü ? gibi koşullarıda birden fazla şekilde koşulları yazabilirsiniz.

Swift Guard

Guard yapıları if yapılarına çok benzer. Aynı if yapılarındaki gibi ardından gelen bir ifade(koşul) bulunur ve o koşula göre true veya false değeri döner ve dönen ifadeye göre işlem yapılır. Ayrıldıkları noktalardan biri ise guard hatayı başta yakalar .Koşul sağlanmıyor ise hemen else bloğuna girer if yapısında sağlanıyor ise hemen if bloğuna girer ve else bloğuna girmez.  Guard kullanmak yazdığınız kodun okunabilirliğini arttırır. Guard yapısını fonksiyonların içinde kullanabiliriz. Fonksiyonlar ilerleyen derslerimizde detaylı olarak anlatılacaktır. Aşağıda basit bir fonksiyon vardır ve bu fonksiyon parametre olarak integer türünde bir değer alır ve o değeri fonksiyonun içinde işlemlere tabi tutar (biz ne yapmasını istediysek tabi 🙂 ).

func sifirdanBuyukMu(x: Int) {
guard x > 0 else {
print(“(x) , Sıfırdan küçük”)
return
}
print(“(x) , Sıfırdan büyük”)
}
sifirdanBuyukMu(x: -1)

func sifirdanBuyukMu(x: Int) {

    guard x > 0 else {

        print((x) , Sıfırdan küçük”)

        return

    }

    print((x) , Sıfırdan büyük”)

}

sifirdanBuyukMu(x: 1)

Yukarıda fonksiyonumuzun tanımlanmış ve paremetre olarak gelen değişkenimizin 0’dan büyük olup olmamasını değerlendirmiş ve büyükse print(“(x) , Sıfırdan büyük”) komutunu , küçük ise print(“(x) , Sıfırdan küçük”) komutunu çalıştırmasını söylemiştir. if yapılarının aksine guard yapılarında mutlaka else bloğu olmak zorundadır. Guard keywordunun arkasından koşulumuz gelmektedir eğer bu yazdığımız koşulumuz sağlanmıyor ise else bloğuna girip orda hangi işlemleri yaptırdıysak sadece o işlemleri yapar. Eğer sağlanmış ise else bloğuna hiç girmez ve else bloğunun bittiği yerden devam eder. Fonksiyonumuz çağırılırken x değerine -1 değeri verilmiş ve  x>0 koşulumuzu sağlamadığı için else bloğuna girip “-1 , Sıfırdan küçük” yazısını ekrana bastırır. Eğer x değişkenimizi 1 olarak yazsaydık else bloğuna girmeyip “1 , Sıfırdan büyük” yazısını ekrana bastıracaktı. Aynı if yapısında olduğu gibi guard ilede koşulların arasına virgül(,) koyarak birden fazla koşulu kontrol edebiliriz(Tabiki bütün koşulların sağlanması(true) gerekmektedir.)

Peki guard’ı sadece fonksiyon içerisinde mi kullanırız ? Yaygın olarak fonksiyonların içerisinde kullanılmasına karşın fonksiyonların dışındada aşağıdaki şekilde kullanabiliriz,

var yas = 80
guard yas > 200 else {
print(“Yaşadığınıza emin misiniz ??”)
throw NSError()
}
print(“(yas) yaşındasınız”)

    var yas = 80

    guard yas > 200 else {

        print(“Yaşadığınıza emin misiniz ??”)

        throw NSError()

    }

    print((yas) yaşındasınız”)

yas isminde integer türünde bir değişken tanımladık ve bu değişkenimizin değerini 80 olarak belirledik.Yukarıda 200 yaşından büyük bir insanın yaşamadığını varsaydım ve eğer yas değişkeni 200 veya daha büyük ise ekrana “Yaşadığınıza emin misiniz ??” yazısını bastırma komutunu yazdım.Eğer yas değişkeni 200 den küçükse “(yas) yaşındasınız” yazısını bastırdım ((yas) yerine girilen yaş bastırılır). Guard konusu ilerleyen zamanlarda Optionals dersimizde anlatılacaktır.

Neden Return ve Throw Kullanıyoruz ?

if yapısının aksine guard‘da else kısmından normal akışsal çıkış yapılamamaktadır ve bu yüzden return, throw, break, continue gibi keywordler ile programın akışını kendimiz başka yere yönlendiriyoruz bu komutlar daha sonraki derslerimizde detaylı olarak anlatılacaktır.

Konuyla ilgili yorumlarınızı konu altından yapabilir, sorularınızı sorucevap.mobilhanem.com adresinden ve konu altından sorabilirsiniz.

Swift Eğitimleri serimizdeki tüm derslerin listesine buradan ulaşabilirsiniz.

Kaynak: https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html#//apple_ref/doc/uid/TP40014097-CH5-ID309

52

Yorum Yap
0 Yorum yapan