Friday, October 28, 2022

Dart Ders Notlarım 24: Kısa Yazım if - else if - else

Dart Ders Notlarım 24: Kısa Yazım if  -  else if - else


void main() {

/*

Şimdi sıra geldi else if ile çoklu sorgulu olarak yazdığımız blokların daha kısa 

bir yazım yoluna. Burada 3 ve daha fazla şartlı kodlarımızı if, else if,

ve else bloklarını hatta kelimelerini bile kullanmadan yazacağız. Bunu daha az 

kod yazarak yapacağımız için tabiki bize kolaylık sağlayacaktır.


Şimdi daha önce yaptığımız bir insanın yaşam dönemini bize veren programı burada

kodlayalım. Programa yaş bilgisini veriyorduk ve bize bebek, çocuk, genç, ergen

ve yetişkin değerlerini dönüyordu.


Bunu ilk defa kullanıyoruz. O sebeple detaylı bir açıklamasını yapalım.

önce int tipinde yani tam sayı bir yas isiminde değişken tanımlayıp hemen

aynı satırda değer olarak 30 değerini girdik.


Sonra String isminde sonuc adında bir değişkene eşittir diyoruz ve sorgularımızı

yazmaya başlıyoruz. Bu şu anlama gelmektedir. Sonuç değişkenine yas<1 ile 

başlayan ve en son satırında noktalı virgül ile biten bütün bu sogulamanın

sonucunu ata. Text olarak atayacak. Bunu nerden biliyoruz. Değerler tırnak 

işareti ile yazılmış. 


Devam edelim. ilk sorgumuz yas<1 yazdıktan sonra alt satıra ? soru işareti ile 

boşluk atıyoruz ve doğru çıktığında ekrana yazıalcak ifadeyi tırnak içinde 

giriyoruz yani bebek. Sonra altsatıra iki nokta üstüste koyup yeni sorguyu yazıyoruz. 

Bu sorgumuz yas<4. Bunu yazdıktan sonra alt satıra soru işareti koyarak 

tırnak içinde sorgu doğru olunca çalışacak texti yazıyoruz yani çocuk. Sonra 

yine iki nokta üstüste koyup yeni sorgumuzu yazıyoruz. yas<12. Alt satıra

soru işareti koyup tırnak içinde genç yazıyoruz. Bu şart doğru çıkarsa

sonuç değişkenine genç değeri atanacak. Sonra alt satıra iki nokta üstüste

koyduktan sonra yeni şartımızı yazıyoruz yas<18. Altsatıra soru işareti koyup 

tırnaklar arasına ergen yazıyoruz. Şartlarımız bitti. Şimdi bu durumlardan 

hiç biri sağlanmaz ise çalışacak kodu yazmalıyım. Yani else işlemi. Bunun için 

alt satıra inip iki nokta üstüste dedikten sonra tırnak içinde yetişkin 

yazıyoruz. Hiç bir şart sağlanmaz ise sonuc değişkenine yetişkin değerini ata

demiş oluyoruz. Ve en sonunda noktalı virgül ile bloğu kapatıyoruz. Bloktan

sonra sonuc değişkenini ekrana yazdırmak için print komutunu kullanıyoruz. Tüm

işlemler bitti. 


Biraz korkutucu gibi durdu koca bir paragraf açıklama ama alakası yok :). 

Çok kolay aslında. Şimdi yukarıdaki açıklamadan daha basit bir açıklama ile

anlatmaya çalışalım. 


Şimdi ilk önce String bir değişken tanımladık ki biz sonucu ona atalım en sonunda

onuda print ile ekrana yazdıralım. Bu sonuc değişkenini ilk sorgumuza eşitliyoruz

gibi duruyor aslında ama asıl olan bütün sorgunun sonucunda gelecek texti biz

o sonuc değişkenine aktarmış oluyoruz. İlk şartımızı bu şekilde yazıyoruz. 

yas<1 dedik. sonra soru işareti ile doğru mu diye soruyoruz şeklinde düşünebiliriz.

Soru işaretinden sonra doğru ise değişkene atayacağımız text değerini yazıyoruz.

Bundan sonrası tam bir döngü aslında.


 

: sorgu 

  ? 'text'

Dikkatli bakarsanız hemen yukardaki gibi devam etmekte kodlama. İlki ve en son

else için bişi kullanacaksak onlar hariç arada ister 3 ister 103 tane şart olsun

hepsi bu şekilde yazılıyor. İki nokta üstüste diyoruz sorguyu yazıp sonra alt

satıra soru işareti koyup textimizi tırnak içine yazıyoruz.


Onu da şöyle okuyabiliriz. :(sorgumuz) yas<4 ? (ise bunu ekrana yaz) 'text'


: bunu "sorgumuz" ve ? bunuda "ise ekrana bunu yaz" şeklinde okuyabilirsiniz.


Şimdi son sorgumuzuda bu şekilde yazdıktan sonra else bloğu için sadece iki nokta

üst üste koyup direkt bütün bu şartların dışında bir şey gelirse o zaman 

bunu değişkene ata der gibi tırnak içinde texti yazacaksınız. Zaten else de şart

olmaz. Çünkü lazım olan şartları kontrol ettik biz. Eğer bu şartlarda bir değer

gelirse onu da bu şekilde cevapla demiş oluyoruz. En son print ile sonuc 

değişkenini ekrana basıyoruz.


Alt satıra diye sürekli belirtiyorum çünkü bir satır şeklinde de yazabilirsiniz

ama kaydet deyince bunu bu şekle sokuyor editör. Bende bu şekilde anlattım daha

kolay alışırız diye.

*/


  int yas = 30;

  String sonuc = yas < 1

      ? 'Bebek'

      : yas < 4

          ? 'Çocuk'

          : yas < 12

              ? 'Genç'

              : yas < 18

                  ? 'Ergen'

                  : 'Yetişkin'; //True

  print(sonuc);


/*

Şimdi bir de satır satır sadece nasıl okuyoruz onuda gösterelim. 

*/


  yas = 12;

/*

  Yaş değişkeni 12 oldu.

*/


  sonuc = yas < 1

/*

sonuc değişkenine tüm sorgunun sonucunu atamaya başladığımız satır. Ve 

burada ilk sorgumuzu yazıyoruz.

*/


      ? 'Bebek'

/*

Üstte yazdık yas<1 ise Bebek. Bu şekilde okunabilir.

*/

      : yas < 4

          ? 'Çocuk'

/*

Aradakileri ikili ikili şu şekilde okuyabiliriz. 

yaş küçük 4 ise sonuç Çocuk

*/


          : yas < 12

              ? 'Genç'

/*

yaş küçük 12 ise sonuç Genç

*/


              : yas < 18

                  ? 'Ergen' //True

/*

yaş küçük 18 ise sonuç Ergen

*/


                  : 'Yetişkin';

/*

Üsttekilerden hiç biri gelmezse sonuç Yetişkin olsun.

*/


  print(sonuc);


/*

Sonra sonuç değişkenini ekrana bastırıyoruz.

*/


/*

Şimdi bu örneğin sonucunu bir değişkene atamadan da çözebiliriz.

Bunun için string bir değişkene gerek kalmıyor. Çünkü üstteki örneklerde textleri

yazdığımız yere bu sefer direkt printle sonucu yazdıracağız.


Olan işleme bir kez daha bakalım. Üstte ? işaretinden sonra gelmesini istediğimiz

sonucu yazıp bunu bir sonuc adlı değişkene aktarıp en sonunda sonuc değişkenini

ekrana basıyorduk. 


Burada ise ekrana basma işlemini direkt yerinde yapıyoruz. Belki bu daha da 

anlaşılır olacaktır.


Bu kodu açıklayalım. Önce yas değişkenini sıfıra eşitledik.

Bundan sonra iki satır iki satır açıklama yapalım.

Soru işaretini "ise", iki nokta üstüsteyi de "değilse" olarak okuyabiliriz.

yas<1 ise bebek yaz.

değilse yas<4 ise çoccuk yaz.

değilse yas<12 ise genç yaz.

değilse yas<18 sie ergen yaz.

Son tek satır. Hiç biri değilse yetişkin yaz.


Bu tür kullanımda daha belirgin olarak şunu gördük ikili kullanım olarak

bakınca mantığını daha iyi anlıyoruz.


*/


  yas = 0;


  yas < 1

      ? print('Bebek') //True

      : yas < 4

          ? print('Çocuk')

          : yas < 12

              ? print("Genç")

              : yas < 18

                  ? print("ergen")

                  : print("yetişkin");


/*

Şimdiki örneğimiz daha önce yaptığımız sayının sıfır, pozitif veya negatif

olduğunu bulup ekrana yazan kodun kısa gösterim hali olsun. Uzun gösterimine 

daha önceki yazılardan bakabilirsiniz.


Şimdi kodu açıklayalım.

sayi -33 atandı.

sayi < 0 ise negatif yaz.

değilse sayi == 0 ise sıfır yaz.

hiçbiri değilse pozitif yaz.


Açıklama bile ne kadar kısaldı :)

*/


  int sayi = -33;


  sayi < 0

      ? print("Girdiğiniz sayı negatiftir.") //True

      : sayi == 0

          ? print("Girdiğiniz sayı sıfırdır")

          : print("Girdiğiniz sayı pozitiftir");


/*

Şimdi de mevsimlerin ayları ile ilgili yaptığımız örneğimizi kısa 

gösterimle yapalım. Bu son örneğimiz olsun. HEm uzun haline hemde kısa haline

aynı anda bakalım. Önce eski stildekini görelim.

*/


  String mevsim = "yaz";


  if (mevsim == "ilkbahar") {

    print("Mart,Nisan,Mayıs");

  } else if (mevsim == "yaz") {

    print("Haziran,Temmuz,Ağustos"); //True

  } else if (mevsim == "sonbahar") {

    print("Eylül,Ekim,Kasım");

  } else if (mevsim == "kış") {

    print("Aralık,Ocak,Şubat");

  } else {

    print("küçük harfle ve bitişik bir mevsim ismini girin");

  }

/*

Yukarda else if ile yazılmış halini gördüğünüz kod bloğunun aşağıda 

zincirleme halini görüyorsunuz. Kodları hızlıca açıklayalım. 

mevsimi kış yaptık. 

mevsim ilkbahar ise ayları bas

değilse mevsim yaz ise ayları bas

değilse mevsim sonbahar ise ayları bas

değilse mevsim kıs ise ayları bas

hiçbiri değilse uyarı açıklamasını ekrana bas.

*/

  mevsim = "kış";


  mevsim == "ilkbahar"

      ? print("Mart,Nisan,Mayıs")

      : mevsim == "yaz"

          ? print("Haziran,Temmuz,Ağustos")

          : mevsim == "sonbahar"

              ? print("Eylül,Ekim,Kasım")

              : mevsim == "kış"

                  ? print("Aralık,Ocak,Şubat") //True

                  : print("küçük harfle ve bitişik bir mevsim ismini girin");


/*

Şimdi bu yazım şekli klasik if else if else yazım şeklinin daha kısa bir hali.

zincirleme şartlar gibi bir şey olabilir bunun adı. Bende tam bilmiyorum :)

Şimdi bunları kullanmakta özgürsünüz. Kodlarınızı yazarken istediğinizi 

seçebilirsiniz. Hangisi daha koalyınıza geliyorsa onu tercih edebilirsiniz. 

*/

}



 https://gist.github.com/metulangu/d2d40d9d9036fdc268270954fba4594c


Share This

0 comments:

Soru, Görüş, Öneri ve Eklemek İstediklerinizi Yazabilirsiniz...