Ee boşuna demedik programlamanın temeli diye.
Şimdi bu yazımızda önce kısaca nelerden bahsedeceğimizi açıklayayım. İf else ile ilgili bir örnek daha yapacağız ve sonrasında switch, case ve switch expressin nedir ona bakacağız.
Yukarıdaki örnekte 6. satırdaki şart bloğumuz sayının 20den küçük olma durumunu kontrol ediyor girilen sayı 20den küçük ise, ekrana sayı 20den küçük ifadesini verecek, peki sizce yukarıdaki kodda if koşulunun çalışma alanına girecek mi ?
Eğer karşılaştırma operatörlerini net anladıysak yukarıdaki kodun çıktısı aşağıdaki gibi olacağını tahmin edebilmişsinizdir.
Yani if koşulunun içerisine girmiyor çünkü karşılaştırma operatörü bize false değerini döndürdü.
Şimdi şöyle bir senaryo kurgulayalım, eğer bizim sayımız 20den küçük ise 10dan küçük olma durumunu kontrol edelim eğer 10dan küçükse ekrana sayı 10dan küçük yazdıralım değilse sayı 20den küçük fakat 10dan büyük diye belirtelim, isterseniz burayı bir kendiniz yapmayı deneyin cevabı aşağıda.
Öncelikle daha önce 20 olan sayımızı Resim 2’de 15 olarak değiştirdim çünkü 6. satırdaki koşulun doğru olmasını istiyorum, if koşulunun altında koşul yazmaya devam edebilirsiniz örnekte olduğu gibi if koşulunun içerisinde bir if koşulu yazdık. Çıktısını bilgisayarınızda deneyerek görebilirsiniz.
Şimdi şöyle bir senaryo düşünelim, bir öğrenci not sistemi geliştirdiğinizi ve Öğrencinin notuna göre karşılığını yani Pek iyi, iyi orta, kötü,çok kötü durumunu ekrana yazdırmak istediğimizi var sayalım.
Görselde gördüğünüz gibi ben > operatörünü kullanarak Pek iyi sıralaması ile birlikte yaptım ve öğrencinin notunu 75 olarak girdim, farkettiğiniz üzere çıktı İyi oldu. Burada bir şeyi daha pekiştiriyoruz aslında else if. Nasıl diye sorarsanız;
Şöyle düşünün kullanıcının notu 75 eğer ben 13. satırda else if yerine düz bir if koysaydım benim notum 55den de büyük olacağı için hem İyi hem de Orta sonucunu ekrana yazdıracaktı.
Bir sorunun tek bir cevabı yok.
Evet programlamada malesef böyle, çoğu zaman soruların çözümleri için tek bir doğru yoktur. Bu örnekte de karşılaştırma için > ifadesini kullanın sizlerden ricam < ifadesini kullanarak bir örnek de kendiniz oluşturun.
Gelelim switch nedir sorusuna.
Yukarıda gördüğünüz gibi benim sorguladığım tek bir değişken ve birden fazla şart, yani aslında her if içerisinde aynı değişkeni sorguluyorum puan benim için değişen tek şey durumlar.
Bunun için bir yöntem mevcut bunun için de switch case kullanabiliriz, bunu bir çeşit anahtar gibi düşünebilirsiniz ki zaten switch’in kelime anlamı bir nevi anahtar ama kapı anahtarı değil de daha çok ışıkları açıp kapattığımız anahtar gibi.
Tamam felsefeye geçmeden yukarıdaki örneğin aynısını switch ile yapalım ve farklara bakalım.
Yukarıdaki kod şuan için çok karmaşık gelebilir fakat hepsini açıklayacağım, karmaşık gelmesinin sebebi tamamen benim hatam farkındayım. Gelelim switch syntax’ına
öncelikle 5. satırda bir switch key’ini kullanarak bir değeri sorgulayacağımızı belirtiyoruz, sorgulayacağımız durumlar’ı da case ibaresi ile belirtiyoruz,
case ibaresi yanında yazılan var expression aslında bizim puan değişkenimizle aynı değere sahip büyüklük küçüklük sorgusu yaptığımdan dolayı bunu eklemem gerekti. when ifadesi ile hangi koşulda çalışacağını belirtiyorum ve koşulumu yazıyorum puan > x’ x neyse artık işte.
Buraya dikkat Case’ koşullarından sonra iki nokta belirteceğiz iki nokta belirttiğimizde aslında bir label oluşturuyoruz döngüler kısmında label’lara değineceğiz şimdilik bir işaret olduğunu bilelim yeter.
Peki neyin işareti ? Başlangıç işareti, yani koşul doğru olduğunda şuradan itibaren kodları çalıştırmaya başla diyoruz aslında, sonrasında ise kodlarımızı yazıyoruz ve son olarak break; komutunu ekliyoruz.
Break komutunu eklemezsek ne olur ? Normalde switch içerisinde tüm koşullar kontrol edilir fakat çalışan bir koda gelindikten sonra break komutuyla karşılaşılırsa artık diğer koşulları sorgulamayı bırakır, yani bir nevi if else ‘deki else.
Peki bu default ne?
Diye soracak olursanız, cevabım direk else olur. Eğer yukarıdaki koşulların hiç biri çalışmazsa default içerisindeki kod çalıştırılır.
Gelelim düz bir switch case yapısına. Örnek olması için; kullanıcıya bir menü açtınız ve bu menü ile kullanıcıya işlem yaptıracaksınız, bu durumda tamemen eşitlik söz konusu aslında.
Yukarıdaki örnekte gördüğünüz gibi eşitlik karşılaştırması yapmak her zaman daha kolaydır. Kullanıcının seçimine göre case durumlarını yazdım eğer kullanıcı 1,2,3 dışında bir şey seçmiş olsaydı default: scope’u çalışmış olacak ve Bilinmeyen bi seçenek seçtiniz ifadesi ekrana yazdırılacaktı.
Gelelim son konumuz switch expression
switch expression yazım şekli yukarıdaki gibidir soluna ne için switch yaptığımızı yazıyoruz ne için derken neden anlamındaki değil 😀
yukarıda secim değişkeninin değeri için switch kullandık, “1”=> durumunu belirtmek için ise eşittir ve büyüktür işaretlerini kullanıyoruz,
Default için ise _ alt tire ifadesini kullanıyoruz içeridiki durumlardan hangisi eşleşiyor ise bunlardan birini metinCikti değişkeninin içeriğine atıyor ve biz de ekrana yazdırıyoruz.
Normalde direk ekrana yazdıramaz mıydı?
Evet yazdırabilirdik,ama gördüğünüz gibi biraz daha karmaşık bir hal alıyor çok fazla parantez felan. Aslında tamamen tercih meselesi =)
Bu yazıyı burada bitirelim sonraki yazıda görüşmek üzere herkese kolay gelsin.