Friday, October 7, 2022

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.

*/

}


Share This

0 comments:

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