C
Bölüm 3: Operatörler ve Koşullu İfadeler
Genel Bakış

Bölüm 3: Operatörler ve Koşullu İfadeler

15 Haziran 2025
5 dk okuma süresi
operatorler-kosullu-ifadeler

Operatörler Nedir?

Operatörler, JavaScript’te değerler ve değişkenler üzerinde işlem yapmamızı sağlayan sembollerdir. Matematiksel hesaplamalardan mantıksal karşılaştırmalara kadar birçok farklı işlem gerçekleştirebiliriz.

Aritmetik Operatörler

Temel Matematiksel İşlemler

let a = 10;
let b = 3;
 
// Toplama
let toplam = a + b;        // 13
console.log(toplam);
 
// Çıkarma
let fark = a - b;          // 7
console.log(fark);
 
// Çarpma
let carpim = a * b;        // 30
console.log(carpim);
 
// Bölme
let bolum = a / b;         // 3.333...
console.log(bolum);
 
// Mod (kalan bulma)
let kalan = a % b;         // 1
console.log(kalan);
 
// Üs alma (ES2016+)
let us = a ** b;           // 1000 (10 üzeri 3)
console.log(us);

Artırma ve Azaltma Operatörleri

let sayac = 5;
 
// Artırma (increment)
sayac++;        // sayac = sayac + 1 (6)
++sayac;        // sayac = sayac + 1 (7)
 
// Azaltma (decrement)
sayac--;        // sayac = sayac - 1 (6)
--sayac;        // sayac = sayac - 1 (5)
 
// Öncesi ve sonrası farkı
let x = 5;
let y = x++;    // y = 5, x = 6 (önce ata, sonra artır)
let z = ++x;    // z = 7, x = 7 (önce artır, sonra ata)
 
console.log('x:', x, 'y:', y, 'z:', z); // x: 7, y: 5, z: 7

Atama Operatörleri

let num = 10;
 
// Temel atama
num = 20;              // 20
 
// Birleşik atama operatörleri
num += 5;              // num = num + 5 (25)
num -= 3;              // num = num - 3 (22)
num *= 2;              // num = num * 2 (44)
num /= 4;              // num = num / 4 (11)
num %= 3;              // num = num % 3 (2)
num **= 2;             // num = num ** 2 (4)
 
console.log(num);      // 4

Karşılaştırma Operatörleri

Eşitlik ve Eşitsizlik

let a = 5;
let b = '5';
let c = 10;
 
// Gevşek eşitlik (tip dönüştürme yapar)
console.log(a == b);   // true (5 == '5')
console.log(a == c);   // false
 
// Kesin eşitlik (tip kontrolü yapar)
console.log(a === b);  // false (5 !== '5')
console.log(a === 5);  // true
 
// Gevşek eşitsizlik
console.log(a != b);   // false
console.log(a != c);   // true
 
// Kesin eşitsizlik
console.log(a !== b);  // true
console.log(a !== 5);  // false
Uyarı

Önemli: Hep === ve !== operatörlerini kullanın. == ve != beklenmedik sonuçlara neden olabilir.

Büyüklük Küçüklük Karşılaştırmaları

let puan1 = 85;
let puan2 = 90;
 
console.log(puan1 > puan2);   // false
console.log(puan1 < puan2);   // true
console.log(puan1 >= 85);     // true
console.log(puan2 <= 90);     // true
 
// String karşılaştırması
let isim1 = 'Ahmet';
let isim2 = 'Mehmet';
console.log(isim1 < isim2);   // true (alfabetik sıra)

Mantıksal Operatörler

AND (VE) Operatörü (&&)

let yas = 25;
let lisans = true;
 
// Her iki koşul da doğru olmalı
if (yas >= 18 && lisans === true) {
    console.log('Araba kullanabilir');
}
 
// Kısa devre değerlendirme
let kullanici = {isim: 'Furkan'};
kullanici.isim && console.log('İsim var'); // İsim var
 
// Falsy değer kontrolü
let veri = null;
veri && console.log('Çalışmaz'); // Çalışmaz

OR (VEYA) Operatörü (||)

let hava = 'yağmurlu';
let semsiye = true;
 
// En az bir koşul doğru olmalı
if (hava === 'güneşli' || semsiye === true) {
    console.log('Dışarı çıkabilir');
}
 
// Varsayılan değer atama
let kullaniciAdi = '' || 'Misafir';
console.log(kullaniciAdi); // 'Misafir'
 
// Nullish coalescing (??) - ES2020
let isim = null ?? 'Varsayılan İsim';
console.log(isim); // 'Varsayılan İsim'

NOT (DEĞİL) Operatörü (!)

let aktif = false;
 
// Değeri tersine çevirme
console.log(!aktif);     // true
console.log(!!aktif);    // false (çift olumsuz = boolean'a çevirme)
 
// Truthiness kontrolü
console.log(!0);         // true
console.log(!'');        // true
console.log(!'metin');   // false
console.log(!null);      // true
console.log(!undefined); // true

Koşullu İfadeler (if-else)

Temel if Yapısı

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

Karmaşık Koşullar

let yas = 25;
let gelir = 5000;
let krediNotu = 750;
 
if (yas >= 18 && gelir >= 3000 && krediNotu >= 700) {
    console.log('Kredi onaylandı');
} else if (yas >= 18 && gelir >= 2000) {
    console.log('Kefil gerekli');
} else {
    console.log('Kredi reddedildi');
}

Ternary (Üçlü) Operatör

let yas = 20;
 
// Klasik if-else
let mesaj;
if (yas >= 18) {
    mesaj = 'Yetişkin';
} else {
    mesaj = 'Çocuk';
}
 
// Ternary ile aynı işlem
let mesaj2 = yas >= 18 ? 'Yetişkin' : 'Çocuk';
 
// İç içe ternary (dikkatli kullanın)
let kategori = yas < 13 ? 'Çocuk' : 
               yas < 18 ? 'Genç' : 
               yas < 65 ? 'Yetişkin' : 'Yaşlı';
 
console.log(kategori);

Switch-Case Yapısı

Temel Switch Kullanımı

let gun = 'pazartesi';
 
switch (gun) {
    case 'pazartesi':
        console.log('Haftanın başı');
        break;
    case 'salı':
    case 'çarşamba':
    case 'perşembe':
        console.log('Hafta içi');
        break;
    case 'cuma':
        console.log('Haftanın sonu yaklaşıyor');
        break;
    case 'cumartesi':
    case 'pazar':
        console.log('Hafta sonu');
        break;
    default:
        console.log('Geçersiz gün');
}

Switch ile Hesap Makinesi

function hesapla(sayi1, operator, sayi2) {
    switch (operator) {
        case '+':
            return sayi1 + sayi2;
        case '-':
            return sayi1 - sayi2;
        case '*':
            return sayi1 * sayi2;
        case '/':
            return sayi2 !== 0 ? sayi1 / sayi2 : 'Sıfıra bölünemez';
        case '%':
            return sayi1 % sayi2;
        default:
            return 'Geçersiz operatör';
    }
}
 
console.log(hesapla(10, '+', 5));  // 15
console.log(hesapla(10, '/', 0));  // 'Sıfıra bölünemez'

Pratik Örnekler

Not Hesaplama Sistemi

function notHesapla(vize, final) {
    // Girdi kontrolü
    if (vize < 0 || vize > 100 || final < 0 || final > 100) {
        return 'Geçersiz not değeri!';
    }
    
    let ortalama = (vize * 0.4) + (final * 0.6);
    let harfNotu;
    let durum;
    
    // Harf notu belirleme
    if (ortalama >= 90) {
        harfNotu = 'AA';
    } else if (ortalama >= 85) {
        harfNotu = 'BA';
    } else if (ortalama >= 80) {
        harfNotu = 'BB';
    } else if (ortalama >= 75) {
        harfNotu = 'CB';
    } else if (ortalama >= 70) {
        harfNotu = 'CC';
    } else if (ortalama >= 65) {
        harfNotu = 'DC';
    } else if (ortalama >= 60) {
        harfNotu = 'DD';
    } else {
        harfNotu = 'FF';
    }
    
    // Geçme durumu
    durum = ortalama >= 60 ? 'Geçti' : 'Kaldı';
    
    return {
        vize: vize,
        final: final,
        ortalama: ortalama.toFixed(2),
        harfNotu: harfNotu,
        durum: durum
    };
}
 
// Test
console.log(notHesapla(75, 85)); // {vize: 75, final: 85, ortalama: "81.00", harfNotu: "BB", durum: "Geçti"}

Kullanıcı Yaş Kategorisi

function yasKategorisi(yas) {
    // Girdi doğrulama
    if (typeof yas !== 'number' || yas < 0 || yas > 150) {
        return 'Geçersiz yaş değeri!';
    }
    
    let kategori;
    let ozellikler = [];
    
    // Yaş kategorisi belirleme
    switch (true) {
        case (yas >= 0 && yas <= 2):
            kategori = 'Bebek';
            ozellikler = ['Süt içer', 'Çok uyur', 'Sevimli'];
            break;
        case (yas >= 3 && yas <= 12):
            kategori = 'Çocuk';
            ozellikler = ['Okula gider', 'Oyun oynamayı sever', 'Meraklı'];
            break;
        case (yas >= 13 && yas <= 17):
            kategori = 'Genç';
            ozellikler = ['Liseye gider', 'Arkadaşları önemli', 'Değişken ruh hali'];
            break;
        case (yas >= 18 && yas <= 25):
            kategori = 'Genç Yetişkin';
            ozellikler = ['Üniversite/İş', 'Bağımsızlık', 'Karar verme'];
            break;
        case (yas >= 26 && yas <= 64):
            kategori = 'Yetişkin';
            ozellikler = ['Çalışma hayatı', 'Aile kurmak', 'Sorumluluklar'];
            break;
        default:
            kategori = 'Yaşlı';
            ozellikler = ['Deneyimli', 'Bilge', 'Emekli'];
    }
    
    return {
        yas: yas,
        kategori: kategori,
        ozellikler: ozellikler
    };
}
 
console.log(yasKategorisi(25));

Basit Login Sistemi

const kullanicilar = [
    {kullaniciAdi: 'admin', sifre: '123456', rol: 'admin'},
    {kullaniciAdi: 'furkan', sifre: 'qwerty', rol: 'kullanici'},
    {kullaniciAdi: 'ahmet', sifre: 'password', rol: 'kullanici'}
];
 
function girisYap(kullaniciAdi, sifre) {
    // Boş alan kontrolü
    if (!kullaniciAdi || !sifre) {
        return {
            basarili: false,
            mesaj: 'Kullanıcı adı ve şifre gerekli!'
        };
    }
    
    // Kullanıcı arama
    let bulunanKullanici = null;
    for (let kullanici of kullanicilar) {
        if (kullanici.kullaniciAdi === kullaniciAdi) {
            bulunanKullanici = kullanici;
            break;
        }
    }
    
    // Kullanıcı kontrolü
    if (!bulunanKullanici) {
        return {
            basarili: false,
            mesaj: 'Kullanıcı bulunamadı!'
        };
    }
    
    // Şifre kontrolü
    if (bulunanKullanici.sifre !== sifre) {
        return {
            basarili: false,
            mesaj: 'Yanlış şifre!'
        };
    }
    
    // Başarılı giriş
    return {
        basarili: true,
        mesaj: 'Giriş başarılı!',
        kullanici: {
            kullaniciAdi: bulunanKullanici.kullaniciAdi,
            rol: bulunanKullanici.rol
        }
    };
}
 
// Test
console.log(girisYap('furkan', 'qwerty'));
console.log(girisYap('furkan', 'yanlis'));

Pratik Egzersizler

Egzersiz 1: BMI Hesaplayıcı

// Bu fonksiyonu tamamlayın
function bmiHesapla(kilo, boy) {
    // 1. Girdi doğrulaması yapın
    // 2. BMI hesaplayın (kilo / boy²)
    // 3. BMI kategorisini belirleyin:
    //    - < 18.5: Zayıf
    //    - 18.5-24.9: Normal
    //    - 25-29.9: Fazla kilolu
    //    - >= 30: Obez
    // 4. Sonuç objesi döndürün
}

Egzersiz 2: Sayı Tahmin Oyunu

// Bu oyunu tamamlayın
function tahminOyunu() {
    // 1. 1-100 arası rastgele sayı üretin
    // 2. Kullanıcıdan tahmin isteyin (prompt kullanın)
    // 3. "Daha büyük" veya "Daha küçük" ipucu verin
    // 4. Doğru tahmin edildiğinde tebrik edin
    // 5. Deneme sayısını sayın
}

Egzersiz 3: Kredi Başvuru Sistemi

function krediBaşvurusu(yas, gelir, krediNotu, istenenMiktar) {
    // Kredi onay kriterleri:
    // - 18-65 yaş arası
    // - Minimum 3000 TL gelir
    // - Kredi notu 600+
    // - Maksimum kredi: gelirin 10 katı
    
    // Sonuç objesi döndürün: {onaylandi, miktar, neden}
}
Ipucu

Debug İpucu: Koşullu ifadelerde beklenmedik sonuçlar alıyorsanız, her koşulu console.log ile kontrol edin. typeof operatörünü kullanarak veri türlerini kontrol etmeyi unutmayın!

Sıradaki Bölüm

Bir sonraki bölümde Döngüler (Loops) öğreneceksiniz. for, while, forEach gibi döngü yapıları ile tekrarlayan işlemleri nasıl gerçekleştireceğinizi keşfedeceksiniz.

Öğrendikleriniz:

  • ✅ Tüm JavaScript operatörlerini
  • ✅ Karşılaştırma ve mantıksal operatörleri
  • ✅ if-else koşullu yapılarını
  • ✅ switch-case kullanımını
  • ✅ Ternary operatör ile kısa koşulları
  • ✅ Pratik problemlerde koşullu mantık uygulamayı

Artık JavaScript’te karar verme mekanizmalarını kullanabiliyorsunuz! Sırada bu kararları döngülerle tekrarlamayı öğrenmek var. 🔄