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.
*/
}
0 comments:
Soru, Görüş, Öneri ve Eklemek İstediklerinizi Yazabilirsiniz...