Showing posts with label Dart Programlama Dili. Show all posts
Showing posts with label Dart Programlama Dili. Show all posts

Monday, November 7, 2022

Dart Ders Notlarım 25: if – if – if vs if – else if – else Derin Analiz

Dart Ders Notlarım 25: if – if – if vs if – else if – else Derin Analiz

 

Dart Ders Notlarım 25: if – if – if vs if – else if – else Derin Analiz


    int yas = 15;

  if (yas < 1) {

    print("Bebek");

  } else if (yas < 4) {

    print("Çocuk");

  } else if (yas < 12) {

    print("Genç");

  } else if (yas < 18) {

    print("Ergen");

  } else {

    print("Yetişkin");

  }

Şimdi diyebiliriz ki ben sıfır girince bu hepsinde geçerli oluyor. Eğer ben sıfır girersem bu giriş 1,4,12 ve 18 den küçük olmaz mı? Her şart sağlanmaz mı? Aslında her şartı sağlıyor. Ama çalışma mantığını kavradık mı işin pekte öyle olmadığını göreceğiz.

Şöyle ki buradaki sistem yakalama sistemi. Burada program şartlara bizim yazdığımız sıra ile bakıyor. Bu sebeple şartları mantıklı bir şekilde yazmalıyız. Buradaki gibi sayısal ise küçükten büyüğe doğru. Her şart topluluğumuzu girerken mantıklı bir sıralamamız olması gerekiyor.  Yoksa programın yanlış bir bloğa girme ihtimali var.

Sıfır için deneyelim

Program ilk yakaladığı şartın içine giriyor ve ardından diğer şartlara bakmadan kod bloğundan dışarı çıkıyor. Diyelim ben 0 girdim.  İlk sırada 1 den küçük mü diye kontrol sağlandı. Kontrol doğru. Ne olacak. Bu şartın print’i çalışacak. Sonra ne olacak. Daha program diğer şartlara bakmadan kod bloğundan dışarı çıkacak.  //Bebek

yas < 1    

yas < 4

yas < 12

yas < 18

else

 

Üç için deneyelim

Şimdi 3 girdiğimizi düşünelim. İlk satırda 3 1’den küçük mü? Değil. İkinci satırda 3 4’ten küçük mü? Evet. Hemen oradaki bloğa girecek ve oradaki kodu çalıştıracak. Sonra kod bloğundan çıkacak. Yani diğer şartları kontrol etmeyecek. Etseydi zaten 3 girince biz sadece ilk şartı geçip sonraki her şarta girmesi gerekirdi. //Çocuk

yas < 1    

yas < 4

yas < 12

yas < 18

else

 

Dokuz için deneyelim

 

Şimdi de 9 için bakalım. Dokuz 1 den büyük orayı geçti. 4 ten büyük orayı da geçti. 12 den büyük mü? Hayır. Ne olacak o kod bloğu çalışacak ve diğer şartlara bakmadan kod bloğundan çıkacak.//Genç

 

yas < 1    

yas < 4

yas < 12

yas < 18

else

 

On altı için deneyelim

16 için bakalım. Hemen program başlayacak. 16, 1-4-12 den büyük. Yani küçük değil. Ama 18 den küçük. Şart doğrulandı. Gir kodu çalıştır bloktan çık.//Ergen

 

yas < 1    

yas < 4

yas < 12

yas < 18

else

 

Yirmi için deneyelim

 

20 için daha hızlı bakalım. 20 demek else bloğu demek.  Çok daha hızlı bakalım.

20 1-4-12 ve 18 den büyük. Hiçbir şart sağlanmadığı zaman varsa program else bloğuna bakıyor. O blok varsa oradaki kodu çalıştırıp bloktan çıkıyor ki zaten blokta başka bir şey kalmadı. Eğer else yoksa direkt bloğu komple baypas ediyor. 20 her şarttan büyük çıktığı için program else içindeki kodu ekrana yazacak. //Yetşikin

 

yas < 1    

yas < 4

yas < 12

yas < 18

else

 

Yanlış yazılmış şartlarda ne oluyor

Şimdi şartları yanlış yazdığımız bir bloğa bakalım. Diyelim ki şartları aklımıza geldikçe yazdık ve tabi hatalı oldu. Aşağıdaki gibi 18 şartını en başa çaktık diyelim. Bu blok iki durumda çalışır artık. Bir 18 den küçük olduğu durumlarda. Bir de 18 den büyük olduğu durumlarda. Çünkü alttaki hiçbir şart kontrol edilmez else hariç diğer hepsine ölü kod diyebiliriz. İki örnekle bunu görelim. Bir tane 18 den küçük bir tane de büyük örnekle bakalım neler olacak.

yas < 18

yas < 1    

yas < 4

yas < 12

else

Hatalı blok.

 

Yanlış yazımda on değerine bakalım

10 için bakalım. 10 18’den küçük mü? Evet. Hemen birinci şart sağlandı mı? Evet. Program bu şart sağlandığı için diğer şartlara bakacak mı? Hayır. İlk kod bloğuna girdi print’i bastı ve diğer bloklara bakmadan tüm bloktan çıktı mı? Evet. Ne olmuş oldu şimdi peki? Olan şey şartları doğru sırada yazmadığımız için hatalı kontrol sağlandı. Şartlar doğru yazılsaydı 10 değeri kendine en yakın 12 den küçük olduğu için 12’nin else if bloğu çalışacaktı. O bloğa program bakmadı bile. Neden? Çünkü ölü kaldı orası. CanlanamadıJ

yas < 18

yas < 1    

yas < 4

yas < 12

else

Hatalı blok.

Yanlış yazımda otuz beş değerine bakalım

Şimdi de 35 için bakalım. Bu sefer program tüm satırlara bakacak. Çünkü hatalı da yazılmış olsa hiçbir şart else bloğuna kadar sağlanamadığı için hepsine tek tek baktıktan sonra else bloğuna gidip orasını çalıştıracak program. Bu bozuk saat bile günde 2 kez doğruyu gösteriyor gibi bir şey oldu galibaJ

yas < 18

yas < 1    

yas < 4

yas < 12

else

Hatalı blok.

Hatalı yazım için kısa analiz

İki adet hatalı giriş denedik. Biri en büyük şarttan küçük diğeri de en büyük şarttan büyük iki sayı. Mantıklı bir şekilde bakınca şu gözüküyor. Şartların içinde en büyük şartı biz en başa koyunca ondan küçük tüm şartlar ölü oluyor ve o sayıdan küçük bütün değerleri kendisi direkt yakalıyor ve diğer şartların kontrol edilmesine bile gerek kalmadan program bloktan çıkıyor.

En büyük şarttan büyük her sayı için ise program bütün şartları kontrol edip else bloğuna gidiyor. Çünkü sayımız en başta bulunan en büyüğe zaten girmediği için alt sıralardaki diğer şartlara da doğal olarak girmeden ama kontrol ederek else bloğuna gidecek. Burada sıralama doğru olsaydı yine de bütün şartlar tek tek kontrol edilecekti. 

Neden her şartı if yapmadık da else if yaptık?

 

if   yas < 1    

if   yas < 4

if   yas < 12

if   yas < 18

else

Neden böyle değil?

 

if   yas < 1    

else if   yas < 4

else if   yas < 12

else if   yas < 18

else

Neden böyle.

 

Aslında ihtiyacımıza göre ikisinin de kullanılmasında bir problem yok. Problem üsttekine ihtiyaç varken alttakinin veya alttakine ihtiyaç varken üstekinin kullanılmasından ortaya çıkıyor genelde. Ama bazen aynı işi ikisi de yapabiliyor. O zaman da tercih size ve tecrübenize kalmış demektir.

Burada önemli olan çalışma felsefelerini bilmek ve ihtiyaca göre gerekli olanı kullanmak. Aslında bu yapılardan biri diğerinin yaptığı işi yapabiliyor ise o zaman kod tasarrufu, zaman tasarrufu, işlemci tasarrufu vb. durumları göz önüne alarak tercihimizi yapmamız gerekiyor.

Şimdi çalışma felsefelerine bakalım. Önce üstten beri açıklaya geldiğimiz else if yapısına bakalım.

else if - else if - else

else if yapısını kullanırken bizim amacımız şartlarımızdan sadece biri doğru olunca onun sonucuna göre bir işlem yapmak. Burada üstteki kodu düşünebiliriz. Biz orada kişinin yaşam dönemini buluyoruz. Bu bizden sadece bir şartın doğru çıkmasını gerektirecek bir kod yapısı ister. Çünkü bir kişi hem bebek hem yetişkin olamaz. En sonunda sadece tek bir şartın geçerli olduğu ve o şarta göre programın yapması gereken bir şey varsa böyle durumlarda else if ile kodlama yapıyoruz. Bu şartları da doğru bir sıralamada yazmamız gerekiyor orasını artık biliyoruz. Tekrar ifade edeyim sadece bir şart gerekli ve o şart sağlandı mı diğer şartlara program bakmadan o bir şartın kod bloğunu çalıştırıp hemen kod bloğundan çıkan bir yapı bu yapımız. Bu ve benzeri durumlarda else if yapısını kullanabiliriz.

if – if – if

Eğer her şartı if ile kodlayacağımız yapıyı kullanacaksak bizim amacımız şartlardan sadece biri değil de birden fazlası doğru olunca doğru olan bu birden fazla şart için bir şeyler yapmak. Burada şöyle bir örnek verebiliriz.

Kurgumuz şu şekilde. Diyelim ki Yükseköğretim Kurumu yurt dışı Üniversitelere Erasmus ile öğrenci yolluyor. Bunun için bir puan değişkeni lazım bize. Düşününki bu puan bir sürü çarpandan oluşuyor orası bizi ilgilendirmez biz direkt puanın son hali bize gelmiş gibi işlem yapacağız. Puan 90 ve üzeri ise tüm Üniversitelere geçiş hakkı oluyor, A-B-C-D-E kalitedeki hepsine. 80 ve üzeri B-C-D-E kalite. 70 ve üzeri C-D-E kalite. 60 ve üzeri D-E kalite. 50 ve üzeri E kalite olsun. Daha aşağı puanlarda ise geçiş hakkı bulunmuyor.

Şimdi aşağıda else if ile sözde koda benzer yazımına bakalım. A-B-C-D-E aynı zamanda fonksiyonlarımızın da isimleri olsun. Her bir harfin içinde onlarca fonksiyon olduğunu unutmayalım. Burada gördüğümüz gibi her şartın yanına fonksiyonlarımızı ekledik. Doksandan büyük olana hepsini ekleyerek alt alta giderek her satırda bir fonksiyonu çıkardık. Mesela E fonksiyonun her şartta çağırdık. Esas mesela her şartta yazmış olmamız. Çalışma mantığına bakalım. Örneğin 55 girdik. Şartlar sağlanmadığı için puan>=50 ye kadar olan şartlar atlandı. Puan>=50’de şart sağlandı sadece E fonksiyonları çalıştı. Diyelim 95 girdik. İlk şart direkt sağlandığı için o bloktaki kodlar çalıştı ve program bloktan dışarı çıktı. Birde 45 girildi diyelim. Hiçbir şart sağlanmadığı için en sona eklediğimiz else bloğu çalışır ve ekrana geçiş hakkınız yoktur yazılır.

if        puan >= 90 A-B-C-D-E

else if   puan >= 80 B-C-D-E

else if   puan >= 70 C-D-E

else if   puan >= 60 D-E

else if   puan >= 50 E

else              Geçiş Hakkınız Yoktur…   

else if yapısı bu şekilde.

 

Aradaki farkı daha iyi anlama adına else if halini yukarda yazdık ve açıkladık. Şimdi de aşağıda if ile kodların sözde yazımına ve açıklamasına bakalım. Fonksiyonların mantığı yukarıda dediğimiz gibi olsun. Burada en önemli nokta program bizim girdiğimiz her puan değeri için her satırdaki şartı tek tek kontrol edecek ve uygun olan tüm şartlardaki fonksiyonları çalıştıracak. Şimdi 55 girelim. Şartları kontrole başladı program. Hepsine baktı ve sadece puan >= 50 şartı sağlandığı için sadece E fonksiyonu çalışacak. Şimdi 95 girelim. 95 için ilk if çalıştı, ikinci if çalıştı ve bunun gibi ilk 5 adet if kodumuz çalışacaktır. En sondaki puan < 50 hariç. Bütün if’ler çalıştığı için A-B-C-D-E fonksiyonları hepsi çalışmış olacak. Şimdide 45 girelim ve sadece son if şartı doğru olduğu için sadece o if bloğu çalışır ve geçiş hakkınız yoktur yazar ekrana.

 

if      puan >= 90 A

if      puan >= 80 B

if      puan >= 70 C

if      puan >= 60 D

if      puan >= 50 E

if      puan < 50 Geçiş Hakkınız Yoktur…***

if yapısı bu şekilde.

 

*** bu satırda else olmaz çünkü bütün if’ler ayrı ayrı kontrol ediliyor. Yine burada puan>=0 diyemeyiz. Çünkü o zaman 95 girince bu şartı da sağladığı için kişiye hem her şeyi tercih edebilirsiniz dönecek hem de geçiş hakkınız yoktur diyecek. Bunun için puan < 50 dememiz gerekiyor orada.

if – if – if vs else if – else if – else Sonuç

Şimdi yazılım iki kod bloğunu da çalıştırır. Yazılımın kodlamayı nasıl yaptığımızla bir alıp veremediği olmaz. Gelelim biz neye göre tercih yapacağız.

Şimdi şöyle bir gelenek var. Bir if bloğu else if’lerle birlikte sadece bir ana şartı gündemine alsa daha iyi gibi. Sürekli alt alta if’leri dizeceksek gelenek derki her bir if ayrı bir şartın başlangıcı olsun. Bir if ile başlıyorsak ilgili diğer şartları o if içerisinde tanımlamak daha bir tercih sebebi.

Lakin dediğimiz gibi her şey gelir sizin ihtiyacınızı en verimli şekilde çözen yola dayanır. Bunu tecrübeyle, araştırmayla vb. daha başka yollarla siz kendiniz bulacaksınız.

Hiç olmadı deneme yanılma yoluna gideceksiniz. Zamanla zaten istediğiniz kıvama geleceksiniz. O zaman şu anda ne yapmalıyım daha önemli oldu. Oda sizin zamanla geleceğiniz kıvama şuanda gelmiş olan bir usta bulmak. Araştırmak dediğimiz olay ustalığa gelinince bırakılmıyor. O ömür bitene kadar bitmeyen bir şey. Orası ayrı zaten. Her zaman araştırın. Ama kendisini bu işe vermiş ciddi anlamda ilerlemiş ve insanlara yardım etmekten zevk alan biri bulursanız o zaman bu işler tadından yenmez oluyor.

İstisnaları olmakla birlikte bir kişinin yol göstermesi onun yıllarca edindiği tecrübeyi size bir anda aktarması gibi bir şey zaten. Arının binlerce ağaçtan yüzlerce günde yaptığı balı bir anda yemek gibi bir şey oluyor.

Tabi bu iş böyle gözüküyor diye araştırmayı bırakırsanız olan yine size olur. Hem siz kendiniz faydalandığınız kadar başkalarına da faydalı olmalısınız ilerleyen zamanlarda. Bunu yapmaz iseniz adalet gelir sizi bulur ve emin olun belli bir seviyenin üstüne çıkamazsınız. İnsan olmak insan kalmak güzeldir…

Şimdi de sayı doğrusunda else if şart yakalama sistemine renkli olarak bakalım.

yas < 1   bebek  

yas < 4   Çocuk

yas < 12  Genç

yas < 18  Ergen    

else      Yetişkin

0 1…3 4…11 12…17 18 19…

yas < 1  yas < 4   yas < 12    yas < 18        else

 

https://gist.github.com/metulangu/7a6a9ffe8679296541724bf00ba73ae6

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

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

Friday, October 21, 2022

Dart Ders Notlarım 23:  if  - else if - else

Dart Ders Notlarım 23: if - else if - else

Dart Ders Notlarım 23:  if  - else if - else


 void main() {

/*

Arkadaşlar şimdiye kadar tek koşul ve iki koşul için işlemler yaptık. Şimdi sıra

geldi ya 2 den fazla koşul varsa sorusuna. Böyle bir durumla karşılaşmamız 

gayet doğal. Bunun için if yapısında şöyle bir durum deniyoruz. 

Burada if deyip parantez içine şartımızı yazıyoruz. Sonra süslü parantez 

içine doğru çıkınca çalışacak kodları yazıyoruz. Bundan sonraki kısmı istediğimiz 

kadar yazabiliriz. En az 3 en fazla gereken kadar şartı kontrol edip sağlandığı 

anda çalıcak kodlarımızı yazabiliriz. Sonra else if diyerek yeni şartımızı

parantez içine yazıyoruz ve hemen devamında süslü parantez içine çalışması gereken

kodlarımızı yazıyoruz. Sonra yine else if diyoruz ve parantezler içine şartımızı

yazıyoruz ve ardından süslü parantez içine çalışması geerekn kodlarımızı yazıyoruz. 

Sonra bu işlemi yukarda belirttiğim gibi ihtiyacımız kadar çoğaltıyoruz. En 

sonunda ise else diyerek bütün yazdığımız şartların dışında bir durum gerçekleşmiş

ise o zaman da bu kodları çalıştır diyerek o kodları yazıyoruz. Burada ikinci

if else'den sonra else diyoruz. Else deyince şart yazmıyoruz artık. Sadece 

süslü parantezlerin içine belirttiğimiz hiç bir şart sağlanmadığında çalışacak

kodları yazıyoruz. Ve işlemi bitiriyoruz. 


if () {


} else if () {


} else if () {


} else {


}


Birde dolu halini görelim.


if (şart) {

Kodlar

} else if (şart) {

Kodlar  

} else if (şart) {

Kodlar

} else {

Kodlar  

}


Bu arada else'i kullanmak tamamen bize kalmış. İster kullanırız ister kullanmayız.


Şöyle bir şey oluyor else ile ilgili eğer kullanırsak ekrana her türlü bir çıktı

vermiş oluyoruz veya şöyle de diyebiliriz her halükarda bir işlem yapmış oluyoruz

çünkü o blokta kodlar var. Bizim belirlediğimiz şartların dışında bir durum ile 

karşılaştık ve bunun içinde bir planımız var demektir. Her zaman bu blok çalışır

ya if veya else if'lerden biri çalışır ya da else çalışır.


Şayet kullanmazsak şartlarımızın dışında bir durum olduğunda ekrana bir çıktı 

vermiyoruz veya öyle bir blok olmadığı ve orada çalışacak kodumuz bulunmadığı için

her hangi bir işlem yaptırmıyoruz programa. Bizim belirlediğimiz şartların 

dışında bir durum ile karşılaştık ve bu bizim için önemli değil demiş olduk. 

Bizim için şartlardan hiç biri sağlanmaz ise bu bloğu hiç çalıştırma.

*/


/*

Şimdi örneklere başlayalım. İlk örneğimiz yaşı girilen kişiyi bebek, çocuk, genç,

ergen ve yetişkin şeklinde katogorize edip sonucu ekrana yazan program olsun.

Görüldüğü üzere burada beş adet şartımız var. Eğer bu kodları if ile yazacaksak

if else if mantığını kullanmalıyız.


Kodu açıklayalım şimdi. Artık parantezleri falan uzun uzun yazmayacağım 

açıklamalarda haberiniz olsun. Öğrendik artık diye düşünüyorum.


Önce yas adında int tipinde bir değişken tanımlayıp değer olarak 15 attık içine.


Sonra if deyip yas<1 sorgusunu yaptık. Bu doğru ise ekrana bebek yaz dedik.


Sonra else if ile yas<4 sorgusunu yaptık. Bu doğru ise ekrana çocuk yaz dedik.

yas<4 demek 1 ve 4 arasında demek oluyor.


Sonra else if ile yas<12 sorgusunu yaptık. Bu doğru ise ekrana genç yaz dedik.

Buda 4 ile 12 arasında demek oluyor.


Sonra else if ile yas<18 sorgusunu yaptık. Bu arada bir değer gelirse Ergen 

çıktısını ver diyoruz. Bu değer 12 ile 18 arasını kapsıyor.


Sonra else yaptık. Buda demek oluyor ki 18 den büyük bir değer gelirse 

o zaman ekrana yetişkin yaz. Çünkü en büyük değerimiz 18 den küçük 12 den 

büyük sayıyı yakalıyor. Girilen değer 18 den büyükse doğal olarak else

bloğu devreye giriyor.

*/


  int yas = 15;


  if (yas < 1) {

    print("Bebek");

  } else if (yas < 4) {

    print("Çocuk");

  } else if (yas < 12) {

    print("Genç");

  } else if (yas < 18) {

    print("Ergen"); //True

  } else {

    print("Yetişkin");

  }


/*

Şimdi üstteki blokta yazdığımız şartların okunaklığnı daha da düzeltebiliriz. 

Kontrol hangi aralıkta ise direkt olarak ona bakabiliriz. Bu bir şeyi değiştirmez

kodun çalışmasında. Ama kodun okunurluluğunda büyük kolaylık sağlar. Birlikte 

görelim. Üstteki örneği direk aşağıya alıyorum bir farkla şartları daha 

okunaklı yazarak. Yani yine tercih sizin diyebiliriz.

*/


  yas = 35;


  if (yas > 0 && yas < 1) {

    print("Bebek");

  } else if (yas >= 1 && yas < 4) {

    print("Çocuk");

  } else if (yas >= 4 && yas < 12) {

    print("Genç");

  } else if (yas >= 12 && yas < 18) {

    print("Ergen");

  } else {

    print("Yetişkin"); //True

  }


/*

Şimdi bir örnek daha yapalım. Sıcaklığı girilen suyun hangi madde halinde 

olduğunu ekrana basalım. Sıfıdan küçükse katı 0 ve 99 arası sıvı 100 ve yukarısı

ise gaz halinde olacak şekilde kodları yazalım.


Aslında buradaki ince nokta şu. if de tek şart vardı. Doğruysa 

ekrana birşeyler bastık, yanlış ise bir şey yapmadık. if else de ise

şart doğruysa bunu yap yanlış ise şunu yap dedik. Bu da iki durumluydu.


Şimdi baktığımız else if ile en az iki şart girip onları kontrol edip a gelince

a işlemini yap, b gelince b işlemini yap dedikten sonra ikisi de gelmez ise

şu işlemi yap diyebiliyoruz. En az iki en çok ise gerektiği kadar.


Şimdi kodu açıklayalım. suDerecesi diye 15 değerini girdiğimiz bir int değişkeni

tanımladık.Sonra if dedik sıfırdan küçükse katı halde yaz. Su sıfırın altında

buz oluyor oda katı madde demek. Sonra else if ile ikinci şartımızı girdik.

su sıfırdan büyük veya eşit ve yüzden küçük ise. Burada ve köprüsünü kullandık.

hem sıfır yada büyük ve 100 den de küçük olacak. Bu halde ise sıvı halde olacağından

Sıvı haldedir diye çıktı verdik. Şimdi bir tane daha else if yazmaya gerek yok.

Bu durumların dışında girilecek sayılar sadece 100 den büyük sayılar. Belirlediğimiz

durumların dışında gelecek her durum için else diyoruz. Çünkü belirlediğimiz 

şartların dışında sadece 100 den büyük sayılar gelebilir. Aynı zamanda şu demek daha 

kısa ifade edersek. else diyerek şunu demiş oluyoruz. Diğer her durum için Gaz halde

yaz. Diğer her durum zaten bizim şartlarımızn dışında kalan tek bir durum. O da 100

den büyük durum. Su 100 derecenin üzerinde gaz halinde olacağından sonuç olarak

zaten bu durumu yazdırıyoruz.

*/


  int suDerecesi = 15;


  if (suDerecesi < 0) {

    print("Su Katı Halde");

  } else if (suDerecesi >= 0 && suDerecesi < 100) {

    print("Su Sıvı Halde"); //True

  } else {

    print("Su Gaz Halde");

  }


/*

Yeni bir örneğe bakalım. Girilen bir sayının negatif, pozitif yada sıfır 

olup olmadığını bulup bunu ekrana yazan program. Görüldüğü gibi burada da

en az 3 durum söz konusu. Yani else if sistemini kullanmak gerekecek.

Kodu açıklayalım. sayi değişkeni int tanımlandı ve sıfıra eşitlendi. Sonra

sayi küçük sıfır ise negatif yaz, sayı eşittir 0 ise sıfır yaz ve sayı büyük 

sıfır ise pozitif yaz. Bu kadar.

*/


  int sayi = 0;


  if (sayi < 0) {

    print("$sayi'sayısı Negatiftir");

  } else if (sayi == 0) {

    print("$sayi'sayısı sıfırdır"); //True

  } else if (sayi > 0) {

    print("$sayi'sayısı pozitiftir");

  }

/*

Bu sefer mevsimin adı girilince o mevsimdeki

ayların isimlerini ekrana yazan programı kodlayalım.

mevsim isminde string bir değişken tanımlayıp değerini tırnak içinde yaz

olarak girdik aynı satırda. Sonra koşullar geliyor zaten. Burada sıralamanın

bir önemi yok. İstediğimiz sırada kontrollerimizi sağlayabiliriz. Ben ilkbahar

ile başladım mesela. mevsim ilkbahar ise ilkbahar aylarını, yaz ise yaz aylarını,

sonbahar ise sonbahar aylarını ve kış ise kış aylarını ekrana yaz diye kodlarımızı

yazdık. En sona else koyduk ki kişi yanlış herhangi bişi girince mesaj olarak

ona ne girmesi gerektiğini söyleyelim.

*/


  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");

  }


/*

Bu çoklu şartlarında az daha kısa bir yolu var. Bir dahaki yazıda ona bakalım.

Ternary gösterimin çoklu şart için kullanılan hali diyebiliriz ona.

*/

}

Friday, October 14, 2022

Dart Ders Notlarım 22: Tek Satır if-else

Dart Ders Notlarım 22: Tek Satır if-else

 

Dart Ders Notlarım 22: Tek Satır if-else


void main() {

/*

Arkadaşlar. if-else yapısına göre ayarlanmış bir kısa yazım şekli var.

 Buna üçlü operatör diyorlar. Bir satır ve 3 kısımdan oluşuyor. 

1. kısım şart. 2.kısım şart doğru olunca çalışacak kod. 3. kısım şart yanlış

olunca çalışacak kısım. Bu yazım şeklinde if sonra blok aç kodları yaz sonra 

else yap sonra blok aç else kodlarını yaz gibi durumlar yok.

Bunun gösterimi tek satırda oluyor.Bir satırda işi bitiriyoruz. Yazı olarak yazalım.

Şartımız ? şartDoğruOluncaBurası : şartYanlışOluncaBurası

Gördüğünüz gibi önce bir şart yazıyoruz. Sonra soru işareti ? bırakıyoruz yanına.

Sonra şart doğru olunca yapılacak işlemi giriyoruz. Sonra iki nokta üstüste : 

koyuyoruz. Ve bundan da sonra şart yanlış çıkınca çalışacak kodu yazıyoruz. En 

sonuna noktalı virgül deyip ; işlemi tamamlıyoruz. Şimdi aşağıdaki 

örneklere bakalım.

*/


/*

Aşağıdaki örnekte önce uzun halini sonra kısa halini yazdık. Aynı anda görelim

daha iyi anlaşılır. Uzun halini zaten biliyoruz. Kısa halini açıklayayım. Direkt

şartımızı girdik. 15>10. Yani sorumuz 15 10'dan büyük mü şeklinde. Sonra ?

soru işaretini koyup şart doğru ise çalışacak printi yazdık. Sonra iki nokta

üstüste koyup : devamında yanlış ise çalışacak printi yazdık. En sona da noktalı

virgül ; bırakıp satırı tamamladık. Önemli bir not. ilk print için noktalı virgül

koymuyoruz. Sadece satır sonuna koyuyoruz ;.


*/


  if (15 > 10) {

    print("Uzun İf Büyük"); //True

  } else {

    print("Uzun İf Küçük");

  }


  15 > 10 ? print("Kısa İf Büyük") : print("Kısa İf Küçük"); //Kısa İf Büyük


/*

Şimdide aşağıda değişkenli bir kullanıma bakalım. Burada durum adında bir değişken

tanımlayıp bu değişkene 9==10 sorugusundan çıkacak sonucu atıyoruz. Değişken

string olabiliyor. Şimdi ifade ifade gidelim. String dedik ve durum isminde bir

değişken tanımladık. Sonra = eşittir dedik. Bu eşittir kendinden sonraki tüm işlemin

sonucunu durum değişkenine ata demek. Kendinden sonraki işlem ne. 9 10'a eşitmi

sorusu. Evet 9==10 sorgusunu yazdıktan sonra ? soru işaretini koyuyoruz. Ve şimdi

eşitse çalışacak kodu yazıyoruz. Tabiki şuanda eşit değil. Bu kod çalışmayacak.

Sonra iki nokta üstüste koyup devamında eşit olmadığı zaman çalışacak kodu 

yazıyoruz. Ve bu kod çalışacak. Yani Eşit Değil String değerini durum isimli

değişkene atayacak.Burada tırnak içinde eşit veya eşit değil yazdık.

Çünkü sonuç olarak string dönecek ve durum değişkenide string tanımlı. Sonra alt

satırda durum değişkenini print ediyoruz.

Aşağıdaki örnekte şartımızı parantez içine alsak da oluyor almasak da. 

*/


  String durum = 9 == 10 ? "Eşit" : "Eşit Değil";

  print(durum); //Eşit Değil


/*

Şimdide iki değişken olarak karşılaştırma yapalım. Burada önce küçük sayıyı 

buluyoruz ama değişkenler yardımıyla. Sonra ise mutlak değere çevirme işlemi var.

Adım adım bakalım. Önce iki adet int değişken tanımlayıp değerlerini girdik.

Sonra int kucukDeger diye bir değişken girdik sonucu tutalım diye. Zaten hemen

altında sonucu print ile ekrana yazıyoruz. Burada interpolasyonuda kullandım.

Çıktılarımız daha güzel gözüksün.

*/


  int a = -11;

  int b = 22;

  int kucukDeger;

  kucukDeger = (a < b) ? a : b;

  print("Küçü sayı $kucukDeger"); //Küçü sayı -11


/*

Şimdi yukardaki örneği aşağıda tekrar yapalım. Bu sefer yazım işlemini de aynı 

satırda yapalım. Değişkenler yine yukardaki a ve b olsun. Değerlerini de olduğu

gibi bırakıyorum. Ancak bu sefer BÜYÜK sayıyı bulalım. Aşağıdaki örneği hem 

interpolasyonlu hemde interpolasyonsuz yapalım. Önce ilk satırdakine bakalım.

interpolasyonsuz olanına. 


Direkt şartımızı giriyoruz. Parantez kullanabilirsiniz aslında. Ama şuanda

karışıklık veya matematiksel bir sıkıntı olmadığı için bu örnekte parantez 

kullanmıyorum. 


Şartımız a b den büyüktür. Hemen soru işareti atıyoruz yanına ?.

Bundan sonra doğru ise çalışacak kodu yani print a yı ekrana bas diyoruz. a b'den

küçük olduğu için ilk print çalışmaz. 


Sonra iki nokta üst üste koyup : şart yanlış ise çalışacak kodu yazıyoruz. 

Burada da print b deyip b yi ekrana basıyoruz. Çünkü b daha büyük.

a=-11

b=22

*/


  a > b ? print(a) : print(b); //22


/*

Hemen üstteki örneği tekrar yazdım aşağıya. İkiside aynı sonucu veriyor ama 

yazımları biraz farklı oldu. Üstte a>b yi kontol ettiğimiz için ilk printe a yı

bastık. 


Altta ise b>a yı kontrol ettiğimiz için ilk printte b yi bastık.


İkisiyle de büyük sayıyı buluyoruz. Mantık şu şekilde. Yazdığımız koşul bizim

isteğimize göre olmalı. Büyük sayıyı bulacak isek büyüktür işareti kullanmamız

gerekiyor. Önce hangi değişkeni yazdığımızın bir önemi yok. Büyüktür işaretini

kullandığımız için ilk print büyük olarak yazdığımız değişkeni girmeliyiz. 

a>b yazarsak ilk print a yada b>a yazarsak ilk print b olmalı.

*/


  b > a ? print(b) : print(a); //22


/*

Bir alttaki satırın tek farkı açıklamalı print yaptık. Ekrana bir çıktı geliyor

ama ne bu. Ne olduğu sadece bir örnek olsa anlaşılır tamam da burda şu anda

dünyanın kodu oldu. Daha anlaşılır işler ortaya çıksın diye açıklamalı print

gördüğünüz gibi oluyor. Bunu daha önceki konularda detaylı olarak ele aldık.

Bakabilirsiniz. Şimdi üşenmeden bu satırımızı da açıklayalım. Bu ifade şekline

ternary yani üçlü operatör diyiliyor demiştik. Bu sefer de öyle açıklayalım.

birin kısım şart kısmı. Soru işaretine kadar olan kısımdır.

İkinci kısım true kısmıdır. Soru işareti ile iki nokta üstüste araıdır.

Üçünçü kısım false kısmıdır. İki nokta üstüste ile noktalı virgül arasıdır.

Birinci kısım   (a > b) ?

İkinci kısım    ? print("Büyük Sayı $a") :

Üçünçü kısım    : print("Büyük Sayı $b");

a=-11

b=22'dir.

Çok kısa şartı giriyoruz. a>b dedik. Soru işareti ve doğru olunca çalıaşcak print

iki nokta üstüste  sonra yanlış olunca çalışacak kısım. Sorgu doğru olduğu için

ilk print çalışacaktır.

*/


  (a > b) ? print("Büyük Sayı $a") : print("Büyük Sayı $b"); //Büyük Sayı 22


/*

Aşağıda bir örneğe daha bakalım. Bu örnekte girilen sayı sıfırın altında bir sayı ise 

onun mutlak değerini alalım. Yok zaten sıfırdan büyükse kendisini alalım.

a değişkeni -11 olarak girilmiş zaten ve bizde yine onu kullanalım.

int mutlakDeger'i direkt aynı satırda sorgumuzun sonucuna eşitliyoruz. Sorgumuz

a<0. Sonra ? deyip -a yapıyoruz. Yani sorgu doğruysa girilen sayı eksi bir sayıdır.

Bizde mutlak değer alacağımız için a'yı eksi ile çarpıyoruz orada. Sonra : koyuyuruz.

Burda da a'yı sonuç olarak dönüyoruz. Bu ihtimal zaten a sıfırdan büyük olduğu zaman

çalışacağı için o zaman a pozitif demektir ve direkt kendisini kullanabiliriz.

Bu satırda mutlakDeger içine 11 değerini atmış olduk. Kısaca a-11 olduğu için

ilk önerme çalışacak. Orda da ayı - ile çarpıyruz. Ve a artı 11 oluyor. Artıyı

yazmaya gerek yok zaten. Ki sistem de çıktıda yazmıyor onu.

a=-11

*/

  int mutlakDeger = (a < 0) ? -a : a;

  print("Girilen sayının Mutlak Değeri $mutlakDeger"); //11


/*

Aşağıda daha önce if else için çözdüğümüz soruları bu yöntemle tek satır if ile

çözelim. İlk kodumuz sayının tek mi yoksa çift mi olduğu bize söylüyor.

sayi adında int tipinde yani tam sayı tipinde bir değişken tanıplayım aynı

satırda değer olarak 15 değerini atadık içine. Sonra alt satırda ternary yöntemi

ile koşulumuzu yazdık. sayi mod 2 eşit sıfır ise ilk kod çalışacak değilse ikinci

kod çalışacak. Ki sayımız tek olduğu için ikinci kodumuz çalışacak.

*/


  int sayi = 15;

  (sayi % 2 == 0) ? print("$sayi çift sayıdır") : print("$sayi tek sayıdır");

  //15 tek sayıdır


/*

Aşağıda direkt not değerini aldık işlem falan yapmadan. Amacımız 44 den büyükse 

Tebrikler küçükse Daha Çok Çalış yazdırmak ekrana. Notumuz 46 verilmiş. Doğru 

olduğu için ilk kodumuz çalışacak. Ekrana Tebrikler yazacak.

Bunu kısımlarına ayıralım. Ternary olarak bakalım. Yani üçlü olarak.

Birinci kısım şartımız.   (not > 44) ?

İkinci kısım true         ? print("Tebrikler") :

Üçüncü kısım false        : print("Daha Çok Çalış");

Ture demek şartımız doğru olunca çalışacak kod, doğal olarak false de şartımız

yanlış çıkınca çalışacak kod.

*/


  int not = 46;

  (not > 44) ? print("Tebrikler") : print("Daha Çok Çalış"); //Tebrikler

}


Friday, October 7, 2022

Dart Ders Notlarım 21: if else

Dart Ders Notlarım 21: if else

Dart Ders Notlarım 21: Dart Programlama Dilinde if else


 void main() {

/*Arkadaşlar merhabalar.

Bu sefer inceleyeceğimiz konu yine şartlı ifadelerin devamı olan konumuz

if else yapısı. Bu yapının tek if şartımızdan farkı iki adet durum için 

kodlarımızı yazabiliyoruz. hatırlarsınız if şartımızda dedik ki bir şart 

giriyoruz bu doğru yada yanlış olunca çalış diyoruz programa. Yani tek bir 

durumda sistem çalışıyor ama diğer durumda programa bir aksiyon aldırmıyorduk.

bir örneği hatırlarsak eğer hız radar ceza uygulaması yapmıştık. tek şartımız

vardı ve o dopru olunca ilgili kod bloğu çalşıyordu. eğer doğru değilse birşey

yapmıyorduk. şimdi ise şart doğru ise bunu yap eğer şart doğru değilse o zaman

da bunu yap diyeceğiz programa. şartın hem doğru olduğu zamanda bir kod bloğu

tetiklenecek hemde yanlış olduğu zaman bir kod bloğunu tetiklenecek.

sytaxına bakalım.

if (şart) {

şart doğru olunca

çalıcak kod veya kodlar

} else {

şart yanlış olunca

çalıcak kod veya kodlar

}

syntax bu şekilde. Açıklayalım basitçe.

if diyoruz ilgili şartımızı parantezin içine yazıyoruz. Sonra köşeli 

parantezlerin içerisine true gelince çalışacak kodları yazıyoruz. 

Sonra else kelimesini yazıyoruz. Ve köşeli parantezlerin içine bu 

sefer false gelince çalışacak kodlarımızı yazıyoruz.


Şimdi bir örnekle başlayalım. En popüler sorulardan birini bizde çözelim.

Girilen sayının tek mi yoksa çift mi olduğunu bulalım. Bu soruyu 2 şekilde

çözeceğiz. 


İlk yolumuz mod ile çözme olsun. Mod 2 sıfıra eşitse çift sayı

değilse tek sayı çıkacaktır.


İkici yolumuz biraz daha eğlenceli farklı bir yol olsun. Orda da şunu yapacağız.

Sayımızı 2 ye bölüp bir double değişkene attık mı sonucu. Bu elimizde dursun. 

Sonra bu sonucu int e çevirip başka bir değişkene atacağız. 

Elimizde 2 adet sonuç oldu. Birisi double ondalık çıkma ihtimali var. 

Diğeri ise her türlü int çevirdiğimiz sonucumuz. 

Bundan sonra if else yapısını kurmamız gerekiyor. İki sonuç değişkenini

birbirine eşit mi diye kontrol etmemiz gerekiyor. Eğer eşitse sayımız çift yok

eşit değilse sayımız tek sayıdır. Arkadaşlar merak etmeyin aşağıda 

örneğin açıklamsında daha detaylı olarak anlatacağım. Süper bir şekilde 

anlayacağınıza eminim.

*/

  int sayi = 16;

  if (sayi % 2 == 0) {

    print("$sayi çift bir sayıdır."); //True

  } else {

    print("$sayi tek bir sayıdır.");

  }

/*

Yukardaki kodları adım adım inceleyelim. önce int veri tipinde

yani tamsayı tutacak sayi isminde bir değişken tanımladık ve içine 16 değerini

atadık. Sonra if deyip parantez içinde şartımızı koşulumuzu girdik.

koşulda % işaretini kullandık. Operatörlerde görmüştük. bu işaret mod alma 

işlemi yapıyordu. Oda şöyle solundaki değeri sağındaki değere bölüp kalanını

dönüyordu. Burda da aynı şekilde sayi % 2 den sonra eşit eişt == 2 diyoruz. 

Yani sayi değişkeninin ikiye bölümünden kalan 0'a sıfıra eşit diyoruz.

Bu eşitlik sağlanınca ilk köşeli parantezin içindeki kodları çalıştır diyoruz.

Orada da  print("$sayi çift bir sayıdır."); bu değeri ekrana yazdırıyoruz.

Çünkü sayımız çift bir sayı. Şart doğrulandı ve if bloğu kodları çalıştı.

Sonra köşeli parantezden sonra else diyoruz ve yine köşeli parantez açıp

print("$sayi tek bir sayıdır."); ifadesini giriyoruz. Burası çalışmayacak.

Bu else kısmı sayi % 2 == 0 ifadesi false dönünce doğru olmayınca çalışacaktı.

Bu örneğimize göre sayı çift olduğu için çalışmayacak. 


Aslında else çalışsın şeklinde sayı girebilirdik çünkü konumuz else :) Ama olsun

aşağıdaki örnekte de else kısmı çalışacak. Else var diye her zaman

o çalışmaz değil mi? Sonuçta şart false dönerse çalışıyor. Bu seferlik true döndü

diyelim :)


Bir sayının tek mi çift mi olduğunu anlamanın en basit ve kolay yolu % operatörüyle

mod 2 sinin sıfıra eşit olup olmadığını bulmaktır. Çünkü mod 2 sıfıra eşit

çıkarsa bu sayı 2 ye tam bölünmüştür ve dolayısıyla çift sayıdır. ilk if bloğu 

çalışır. Mod2 sıfırdan farklı çıkarsa bu sefer de else bloğu çalışır ve ekrana 

sayı tek sayıdır yazdırmış oluruz.


print("$sayi tek bir sayıdır."); Bu kodu da açıklayalım. Tekrar 

bilgiye güç katar. interpolation türkçesi interpolasyon anlamı ise ekleme yapma

gibi bir terime karşılık geliyor. Print içine çift veya tek tırnakla bir

ifade yazınca bu olduğu gibi ekrana basılır. Dikkat ederseniz burada sayi isimli

değişkeni başına dolar işarti koyduk mu ekrana sayi kelimesi basılmıyor.

Ekrana sayi isimli değişkene atanmış son değer basılıyor. Normalde değişkeni

ekrana basarken tırnak kullanmayız. Değişkeni bu şekilde güzel bir açıklamayla

birlikte ekrana bastırmak istiyorsak kullanım böyle olmalı.

Bu da print için bir istisnadır.

*/


  sayi = 15;

  double dsonuc = sayi / 2;

  int isonuc = dsonuc.toInt();

  if (dsonuc == isonuc) {

    print("$sayi çift bir sayıdır.");

  } else {

    print("$sayi tek bir sayıdır."); //True

  }

/*

Şimdi de modsuz olarak nasıl çözülür onu inceleyelim. Bu işlem sadece beyin

jimnastiği gibi birşey. Tercih edilen yol değildir. Baştan bunu söylemiş

olayım. önce sayi değişkenine 15 değerini atadık. Tanımlama ve ilk değer işlemi

yukardaki örnekte yapılmıştı zaten. Burda sadece değerini yeniledik diyelim.

sonra double sonuç anlamına gelen dsonuc diye bir değişken tanımlaması yaparken

aynı satırda sayi değişkenimizi 2 ye bölüp onun içine atadık.

Sonra int bir değeri çağrıştırsın diye isonuc isminde bir değişken tanımlayıp

yine aynı satırda dsonuc değişkeninin değerini integere to.Int ile çevirip onun 

içine atadık. Sayıyı ikiye bölünce ondalıklı gelirse dsonuc bunu tutacak. Lakin 

int sonuc ondalıklı gelen bu sayının tam kısmını tutacak. Arada tek sayı girilmesi

durumunda böyle bir ilişki var. Çift sayı girdiğimizi düşünürsek 2 ye bölününce

dsonuc double tuttuğu gibi int değerde tutuyor olduğu için dsonuc tam sayı olacak.

isonuc da zaten to.Int le tama çevirip alıyor. O da aynı sayı olacak. Bu zaten if

şartımız bizim. İkisi aynı geldi mi sayımız çift sayı olmuş olacak. Farklı geldi mi

tek sayı girilmişti diyeceğiz.

Şöyle kısa bir izah daha yapıp kodları açıklamaya devam edeceğim.


örneğimizde ki gibi 15 girilmiş diyelim. 15/2 = 7.5 çıkar.

dsonuc=7.5

7.5 toint yaparsak 7 olur mu? evet olur. O zaman 

isonuc=7 dir.

dsonuc==isonuc olmadığı için else bloğu çalışır.

ikisi birbirine eşit oldu mu. Olmadı. Demek ki sayımız tek sayıdır.


Birde çift sayı girelim. Sayımı 16 olsun. 16/2=8 çıkar.

dsonuc=8

8 toint yapsak yine 8 olacak. O zaman

isonuc=8 dir.

dsonuc==isonuc olduğu için if bloğu çalışır.

İkisi birbirine eşit oldu mu? Evet. Demek ki bu sefer sayımız çift sayıdır.


Üç üstten devam ediyorum :) if satırına gelmiştik. if satırında iki değişkenimiz

birbirine eşit mi diye soruyoruz. Sayımız 15 girilmişti. Dolayısıyla iki değişken

birbirine eşit çıkmayacak. Program if bloğunun içine girmeyecek. 

Çünkü şart sağlanmadı. O zaman else bloğundaki kodu ekrana yazdıracak.


Gerçek hayatta mod yöntemiyle çözülmesi daha evladır. Mod ile çözülen 6 satır

bu ise 8 satırdır. Kısa olan her zaman tercih edilir. 

*/


/*

Şimdi kısa bir örnek daha yapalım if-else ile ilgili.

Bir Öğrencinin iki notunun ortalaması 50 den büyük eşitse ekrana 

geçti, değilse ekrana kaldı yazan programı kodlayalım. 

*/

  double not1 = 45, not2 = 43, sonuc = (not1 + not2) / 2;

  if (sonuc > 50) {

    print("Geçtiniz");

  } else {

    print("Kaldınız"); //True

  }

/*

Şimdi kodları yorumlayalım. İlk önce değişkenlerden başladık işe. Değişkenlerin

hepsini double tanımladık. Çünkü sonuç değişkeninde bölme işlemi yapacağımız için

sonucun ondalıklı çıkma ihtimali oluyor. O sebeple onun double olması gerekir.

Bende hazır o olmuşken hepsi öyle olsun dedim. Ve değişkenleri tek bir satırda

halletmek için. Gördüğünüz gibi değişkenleri bir satırda tanımlayıp değerlerini

de atamış olduk. Sonra if satırına geçip parantez içindeki şart çalıştı. sonuç 44

44 olduğu için program baktı ki bu if şartı geçersiz. Yani false dönüyor. if

bloğüna hiç girmeden else bloğundaki kodu çalıştırdı. Ekrana Kaldınız yazdı.

Farklı bir açıklaması da aşağıdaki gibi olsun.

45+43=88

88/2=44

44>50 false döner

else bloğuna program gider.


Bu if else özel olarak tek satırla yazılabiliyor. 

Bir sonraki yazımızda da ona bakalım.

*/

}