Bu derse başlamak veya ilerlemenizi kaydetmek için lütfen giriş yapın veya kayıt olun.

Ders İçeriği

Giriş

Gerçek hayatta sürekli kararlar veririz: "Hava yağmurlu mu? O zaman şemsiye almalıyım", "Saat 12'yi geçti mi? O zaman öğle yemeği yeme zamanı", "Bu ürün indirimde mi? O zaman satın alabilirim". Programlamada da benzer şekilde, kodumuzun belirli koşullara göre farklı davranmasını sağlamamız gerekir.

Koşullu ifadeler, programımızın akışını kontrol etmemizi sağlayan yapılardır. Bu ifadeler, belirli koşulların doğru veya yanlış olmasına bağlı olarak farklı kod bloklarının çalıştırılmasını sağlar. JavaScript'te koşullu ifadeler, programlarımızı daha dinamik ve etkileşimli hale getirmemize olanak tanır.

Bu derste, JavaScript'teki koşullu ifadeleri öğreneceğiz. Özellikle ifelse ifelse ifadelerini ve switch deyimini inceleyeceğiz. Ayrıca, koşullu (ternary) operatörün nasıl kullanılacağını da göreceğiz.

if İfadesi

if ifadesi, JavaScript'te en temel koşullu ifadedir. Belirli bir koşul doğru (true) olduğunda bir kod bloğunun çalıştırılmasını sağlar.

Temel sözdizimi şu şekildedir:

if_ifadesi.js
if (koşul) {
    // Koşul doğruysa (true) bu kod bloğu çalıştırılır
}

Burada koşul, bir boolean değer (true veya false) döndüren herhangi bir ifade olabilir. Eğer koşul true olarak değerlendirilirse, süslü parantezler içindeki kod bloğu çalıştırılır. Eğer koşul false olarak değerlendirilirse, kod bloğu atlanır ve program bir sonraki satırdan devam eder.

if_ornegi.js
let yas = 18;

if (yas >= 18) {
    console.log("Oy kullanabilirsiniz!");
}

// Çıktı: "Oy kullanabilirsiniz!"

let sicaklik = 5;

if (sicaklik < 10) {
    console.log("Hava soğuk, kalın giyinmelisiniz.");
}

// Çıktı: "Hava soğuk, kalın giyinmelisiniz."

Not: Eğer koşul doğruysa ve sadece tek bir ifade çalıştırılacaksa, süslü parantezler olmadan da yazabilirsiniz. Ancak, okunabilirlik ve hata yapma olasılığını azaltmak için süslü parantezleri her zaman kullanmanızı öneririz.

if...else İfadesi

if...else ifadesi, bir koşul doğruysa bir kod bloğunu, yanlışsa başka bir kod bloğunu çalıştırmamızı sağlar.

Temel sözdizimi şu şekildedir:

if_else_ifadesi.js
if (koşul) {
    // Koşul doğruysa (true) bu kod bloğu çalıştırılır
} else {
    // Koşul yanlışsa (false) bu kod bloğu çalıştırılır
}
if_else_ornegi.js
let yas = 16;

if (yas >= 18) {
    console.log("Oy kullanabilirsiniz!");
} else {
    console.log("Henüz oy kullanamazsınız.");
}

// Çıktı: "Henüz oy kullanamazsınız."

let saat = 14;

if (saat < 12) {
    console.log("Günaydın!");
} else {
    console.log("İyi günler!");
}

// Çıktı: "İyi günler!"

if...else if...else İfadesi

Bazen ikiden fazla alternatif yol olabilir. Bu durumda, if...else if...else ifadesini kullanabiliriz. Bu yapı, birden fazla koşulu sırayla kontrol etmemizi ve ilk doğru koşula göre bir kod bloğunu çalıştırmamızı sağlar.

Temel sözdizimi şu şekildedir:

if_else_if_ifadesi.js
if (koşul1) {
    // Koşul1 doğruysa bu kod bloğu çalıştırılır
} else if (koşul2) {
    // Koşul1 yanlış ve Koşul2 doğruysa bu kod bloğu çalıştırılır
} else if (koşul3) {
    // Koşul1 ve Koşul2 yanlış, Koşul3 doğruysa bu kod bloğu çalıştırılır
} else {
    // Hiçbir koşul doğru değilse bu kod bloğu çalıştırılır
}
if_else_if_ornegi.js
let saat = 10;

if (saat < 12) {
    console.log("Günaydın!");
} else if (saat < 18) {
    console.log("İyi günler!");
} else {
    console.log("İyi akşamlar!");
}

// Çıktı: "Günaydın!"

let puan = 75;

if (puan >= 90) {
    console.log("A");
} else if (puan >= 80) {
    console.log("B");
} else if (puan >= 70) {
    console.log("C");
} else if (puan >= 60) {
    console.log("D");
} else {
    console.log("F");
}

// Çıktı: "C"

İpucu: if...else if...else yapısında, koşullar yukarıdan aşağıya doğru değerlendirilir. İlk doğru koşul bulunduğunda, ilgili kod bloğu çalıştırılır ve diğer koşullar kontrol edilmez. Bu nedenle, koşulların sırası önemlidir.

İç İçe if İfadeleri

Bir if ifadesi içinde başka bir if ifadesi kullanabilirsiniz. Buna "iç içe if ifadeleri" denir. Bu, daha karmaşık koşullu mantık oluşturmanıza olanak tanır.

ic_ice_if_ifadeleri.js
let yas = 25;
let ehliyetVar = true;

if (yas >= 18) {
    console.log("Yaş şartını karşılıyorsunuz.");
    
    if (ehliyetVar) {
        console.log("Araba kiralayabilirsiniz.");
    } else {
        console.log("Ehliyetiniz olmadığı için araba kiralayamazsınız.");
    }
} else {
    console.log("18 yaşından küçük olduğunuz için araba kiralayamazsınız.");
}

// Çıktı:
// "Yaş şartını karşılıyorsunuz."
// "Araba kiralayabilirsiniz."

Uyarı: İç içe çok fazla if ifadesi kullanmak, kodunuzu okumayı ve anlamayı zorlaştırabilir. Mümkünse, mantıksal operatörleri (&&||) kullanarak koşulları birleştirmeyi veya fonksiyonlara ayırmayı düşünün.

switch İfadesi

switch ifadesi, bir değişkenin değerine göre farklı kod bloklarını çalıştırmak için kullanılır. Bu, özellikle bir değişkenin birçok olası değeri olduğunda ve her değer için farklı bir işlem yapmanız gerektiğinde kullanışlıdır.

Temel sözdizimi şu şekildedir:

switch_ifadesi.js
switch (ifade) {
    case değer1:
        // ifade değer1'e eşitse bu kod bloğu çalıştırılır
        break;
    case değer2:
        // ifade değer2'ye eşitse bu kod bloğu çalıştırılır
        break;
    case değer3:
        // ifade değer3'e eşitse bu kod bloğu çalıştırılır
        break;
    default:
        // ifade hiçbir değere eşit değilse bu kod bloğu çalıştırılır
}

Burada ifade, değerlendirilecek değişken veya ifadedir. Her caseifade'nin olası bir değerini temsil eder. Eğer ifade bir case değerine eşitse, ilgili kod bloğu çalıştırılır. break ifadesi, kod bloğunun sonunda switch ifadesinden çıkılmasını sağlar. default ise, ifade hiçbir case değerine eşit değilse çalıştırılacak kod bloğunu belirtir.

switch_ornegi.js
let gun = 3;
let gunAdi;

switch (gun) {
    case 1:
        gunAdi = "Pazartesi";
        break;
    case 2:
        gunAdi = "Salı";
        break;
    case 3:
        gunAdi = "Çarşamba";
        break;
    case 4:
        gunAdi = "Perşembe";
        break;
    case 5:
        gunAdi = "Cuma";
        break;
    case 6:
        gunAdi = "Cumartesi";
        break;
    case 7:
        gunAdi = "Pazar";
        break;
    default:
        gunAdi = "Geçersiz gün";
}

console.log("Bugün " + gunAdi);
// Çıktı: "Bugün Çarşamba"

Uyarı: break ifadesini unutursanız, JavaScript bir sonraki case'e geçer ve o kod bloğunu da çalıştırır. Bu, bazen istediğiniz bir davranış olabilir, ancak genellikle bir hatadır.

Birden Fazla Case için Aynı Kod Bloğu

Bazen farklı case'ler için aynı kod bloğunu çalıştırmak isteyebilirsiniz. Bu durumda, break ifadesini kullanmadan case'leri art arda yazabilirsiniz:

switch_coklu_case.js
let gun = 6;
let gunTuru;

switch (gun) {
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
        gunTuru = "Hafta içi";
        break;
    case 6:
    case 7:
        gunTuru = "Hafta sonu";
        break;
    default:
        gunTuru = "Geçersiz gün";
}

console.log(gunTuru);
// Çıktı: "Hafta sonu"

Koşullu (Ternary) Operatör

Koşullu operatör (ternary operator), if...else ifadesinin kısa bir versiyonudur. Özellikle basit koşullu atamalar için kullanışlıdır.

Temel sözdizimi şu şekildedir:

ternary_operator.js
koşul ? ifade1 : ifade2

Burada koşul, değerlendirilecek boolean ifadedir. Eğer koşul true olarak değerlendirilirse, ifade1 döndürülür. Eğer koşul false olarak değerlendirilirse, ifade2 döndürülür.

ternary_ornegi.js
let yas = 20;
let durum = (yas >= 18) ? "Yetişkin" : "Çocuk";
console.log(durum);
// Çıktı: "Yetişkin"

let puan = 75;
let sonuc = (puan >= 50) ? "Geçti" : "Kaldı";
console.log(sonuc);
// Çıktı: "Geçti"

İpucu: Koşullu operatör, özellikle bir değişkene değer atarken veya bir fonksiyondan değer döndürürken kullanışlıdır. Ancak, karmaşık koşullar için if...else ifadesi daha okunabilir olabilir.

İç İçe Koşullu Operatörler

Koşullu operatörleri iç içe kullanabilirsiniz, ancak bu kodunuzu okumayı zorlaştırabilir:

ic_ice_ternary.js
let puan = 85;
let not = (puan >= 90) ? "A" : (puan >= 80) ? "B" : (puan >= 70) ? "C" : (puan >= 60) ? "D" : "F";
console.log(not);
// Çıktı: "B"

Uyarı: İç içe çok fazla koşullu operatör kullanmak, kodunuzu okumayı ve anlamayı zorlaştırabilir. Bu durumda, if...else if...else ifadesi daha uygun olabilir.

Truthy ve Falsy Değerler

JavaScript'te, koşullu ifadelerde kullanılan değerler otomatik olarak boolean değerlere dönüştürülür. Bazı değerler false olarak değerlendirilirken (falsy), diğerleri true olarak değerlendirilir (truthy).

Falsy Değerler

JavaScript'te aşağıdaki değerler "falsy" olarak kabul edilir (yani, bir koşulda kullanıldığında false olarak değerlendirilir):

  • false
  • 0 (sıfır)
  • "" veya '' veya `` (boş string)
  • null
  • undefined
  • NaN (Not a Number)

Truthy Değerler

Yukarıdaki falsy değerler dışındaki tüm değerler "truthy" olarak kabul edilir (yani, bir koşulda kullanıldığında true olarak değerlendirilir). Örneğin:

  • true
  • Sıfır olmayan herhangi bir sayı (hem pozitif hem negatif)
  • Boş olmayan herhangi bir string
  • Tüm nesneler ve diziler (boş olsalar bile)
truthy_falsy.js
// Falsy değerler
if (false) {
    console.log("Bu satır çalışmaz");
}

if (0) {
    console.log("Bu satır çalışmaz");
}

if ("") {
    console.log("Bu satır çalışmaz");
}

if (null) {
    console.log("Bu satır çalışmaz");
}

if (undefined) {
    console.log("Bu satır çalışmaz");
}

if (NaN) {
    console.log("Bu satır çalışmaz");
}

// Truthy değerler
if (true) {
    console.log("Bu satır çalışır");
}

if (42) {
    console.log("Bu satır çalışır");
}

if ("merhaba") {
    console.log("Bu satır çalışır");
}

if ({}) {
    console.log("Bu satır çalışır");
}

if ([]) {
    console.log("Bu satır çalışır");
}

// Çıktı:
// "Bu satır çalışır"
// "Bu satır çalışır"
// "Bu satır çalışır"
// "Bu satır çalışır"
// "Bu satır çalışır"

İpucu: Truthy ve falsy değerleri anlamak, özellikle değişkenlerin varlığını veya geçerliliğini kontrol ederken çok kullanışlıdır. Örneğin, if (değişken) ifadesi, değişken'in nullundefined0"" veya false olmadığını kontrol eder.

Alıştırmalar

  1. Bir değişken tanımlayın (örneğin, saat = 14) ve günün hangi zamanı olduğunu kontrol eden bir koşullu ifade yazın. Saat 5-12 arasındaysa "Günaydın", 12-18 arasındaysa "İyi günler", 18-22 arasındaysa "İyi akşamlar", diğer durumlarda "İyi geceler" mesajını konsola yazdırın.
  2. Bir öğrencinin notunu (0-100 arası) temsil eden bir değişken tanımlayın ve bu nota göre harf notunu belirleyen bir switch ifadesi yazın. 90-100 arası "A", 80-89 arası "B", 70-79 arası "C", 60-69 arası "D", 0-59 arası "F" olsun.
  3. Bir kullanıcının yaşını ve ehliyeti olup olmadığını temsil eden iki değişken tanımlayın. Kullanıcının araba kiralayıp kiralayamayacağını kontrol eden bir koşullu ifade yazın. Araba kiralamak için en az 21 yaşında olmak ve ehliyete sahip olmak gerekiyor.
  4. Koşullu operatörü kullanarak, bir sayının pozitif, negatif veya sıfır olduğunu kontrol eden ve uygun mesajı döndüren bir ifade yazın.

Bu derste JavaScript'teki koşullu ifadeleri öğrendik:

  • if İfadesi: Belirli bir koşul doğruysa bir kod bloğunu çalıştırır.
  • if...else İfadesi: Bir koşul doğruysa bir kod bloğunu, yanlışsa başka bir kod bloğunu çalıştırır.
  • if...else if...else İfadesi: Birden fazla koşulu sırayla kontrol eder ve ilk doğru koşula göre bir kod bloğunu çalıştırır.
  • İç İçe if İfadeleri: Bir if ifadesi içinde başka bir if ifadesi kullanılabilir.
  • switch İfadesi: Bir değişkenin değerine göre farklı kod bloklarını çalıştırır.
  • Koşullu (Ternary) Operatör: if...else ifadesinin kısa bir versiyonudur.
  • Truthy ve Falsy Değerler: JavaScript'te, koşullu ifadelerde kullanılan değerler otomatik olarak boolean değerlere dönüştürülür.

Koşullu ifadeler, programlarımızın akışını kontrol etmemizi ve farklı durumlara göre farklı davranışlar sergilememizi sağlar. Bu, dinamik ve etkileşimli web uygulamaları geliştirmek için temel bir yapı taşıdır.

Bir sonraki derste, programlarımızda tekrarlayan işlemleri gerçekleştirmemizi sağlayan döngüleri öğreneceğiz.