Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Operatörler

BERK'te çeşitli operatörler matematiksel işlemler, karşılaştırmalar ve mantıksal işlemler için kullanılır.

Aritmetik Operatörler

Temel İşlemler

değişken a = 10
değişken b = 3

yazdır(a + b)   // 13 - Toplama
yazdır(a - b)   // 7  - Çıkarma
yazdır(a * b)   // 30 - Çarpma
yazdır(a / b)   // 3  - Bölme (tamsayı)
yazdır(a % b)   // 1  - Mod (kalan)
yazdır(a ** b)  // 1000 - Üs alma

Ondalık Bölme

değişken x = 10.0
değişken y = 3.0

yazdır(x / y)   // 3.333333 - Ondalık bölme

Unary Operatörler

değişken n = 5

yazdır(+n)  // 5  - Pozitif işareti
yazdır(-n)  // -5 - Negatif işareti
yazdır(++n) // 6  - Ön artırma
yazdır(n++) // 6  - Son artırma (7 olur)
yazdır(--n) // 6  - Ön azaltma
yazdır(n--) // 6  - Son azaltma (5 olur)

Karşılaştırma Operatörleri

değişken a = 10
değişken b = 5

yazdır(a == b)  // yanlış - Eşit mi
yazdır(a != b)  // doğru  - Eşit değil mi
yazdır(a > b)   // doğru  - Büyük mü
yazdır(a < b)   // yanlış - Küçük mü
yazdır(a >= b)  // doğru  - Büyük eşit mi
yazdır(a <= b)  // yanlış - Küçük eşit mi

Mantıksal Operatörler

değişken x = doğru
değişken y = yanlış

yazdır(x && y)  // yanlış - VE (AND)
yazdır(x || y)  // doğru  - VEYA (OR)
yazdır(!x)      // yanlış - DEĞİL (NOT)

Short-Circuit Evaluation

// İkinci ifade değerlendirilmez
eğer (x || çağır_fonksiyon()) {
    // x doğru ise çağır_fonksiyon() çalıştırılmaz
}

// İkinci ifade değerlendirilir
eğer (x && çağır_fonksiyon()) {
    // x yanlış ise çağır_fonksiyon() çalıştırılmaz
}

Atama Operatörleri

Basit Atama

değişken x = 10
x = 20  // Yeni değer atama

Bileşik Atama

değişken n = 10

n += 5   // n = n + 5  (15)
n -= 3   // n = n - 3  (12)
n *= 2   // n = n * 2  (24)
n /= 4   // n = n / 4  (6)
n %= 5   // n = n % 5  (1)
n **= 3  // n = n ** 3 (1)

Çoklu Atama

değişken a, b, c = 1, 2, 3
yazdır(a, b, c)  // 1 2 3

// Değer takası (swap)
a, b = b, a
yazdır(a, b)  // 2 1

Bitwise Operatörler

değişken a = 0b1010  // 10
değişken b = 0b1100  // 12

yazdır(a & b)   // 0b1000 (8)  - AND
yazdır(a | b)   // 0b1110 (14) - OR
yazdır(a ^ b)   // 0b0110 (6)  - XOR
yazdır(~a)      // 0b0101 (-11) - NOT
yazdır(a << 1)  // 0b10100 (20) - Sol kaydırma
yazdır(a >> 1)  // 0b0101 (5)   - Sağ kaydırma

String Operatörleri

Birleştirme

değişken ad = "Ahmet"
değişken soyad = "Yılmaz"

değişken tam_ad = ad + " " + soyad
yazdır(tam_ad)  // Ahmet Yılmaz

// Bileşik atama
değişken mesaj = "Merhaba "
mesaj += "Dünya"
yazdır(mesaj)  // Merhaba Dünya

Tekrarlama

değişken yıldız = "*" * 10
yazdır(yıldız)  // **********

Karşılaştırma

yazdır("abc" == "abc")   // doğru
yazdır("abc" < "abd")    // doğru (leksikografik)
yazdır("a" + "b" == "ab") // doğru

Range Operatörü

// Inclusive range (son dahil)
döngü i 1'den 5'e kadar {
    yazdır(i)  // 1, 2, 3, 4, 5
}

// Exclusive range (son hariç)
döngü i 1'den 5'e {
    yazdır(i)  // 1, 2, 3, 4
}

// Liste oluşturma
değişken sayılar = [1..10]  // [1, 2, 3, ..., 10]
değişken harfler = ['a'..'z']

Elvis Operatörü (Null Coalescing)

değişken değer: Sayı? = null

// Eğer null ise varsayılan değer kullan
değişken sonuç = değer ?: 0
yazdır(sonuç)  // 0

değer = 42
sonuç = değer ?: 0
yazdır(sonuç)  // 42

Safe Navigation Operatörü

değişken kullanıcı: Kullanıcı? = null

// Null kontrolü olmadan güvenli erişim
değişken email = kullanıcı?.email
// Eğer kullanıcı null ise email de null olur

// Zincirleme
değişken şehir = kullanıcı?.adres?.şehir?.ad

Pipeline Operatörü

// Fonksiyon zincirleme
değişken sonuç = [1, 2, 3, 4, 5]
    |> filtrele(x => x % 2 == 0)
    |> eşle(x => x * 2)
    |> azalt((a, b) => a + b)

yazdır(sonuç)  // 12 (2*2 + 4*2)

Spread Operatörü

// Liste spread
değişken liste1 = [1, 2, 3]
değişken liste2 = [4, 5, 6]
değişken birleşik = [...liste1, ...liste2]
yazdır(birleşik)  // [1, 2, 3, 4, 5, 6]

// Fonksiyon argümanı
işlev topla(a, b, c) -> Sayı {
    geri dön a + b + c
}

değişken args = [1, 2, 3]
yazdır(topla(...args))  // 6

Ternary Operatörü

değişken yaş = 18
değişken durum = yaş >= 18 ? "Yetişkin" : "Çocuk"
yazdır(durum)  // Yetişkin

// İç içe ternary
değişken not = 85
değişken harf = not >= 90 ? "A" :
                not >= 80 ? "B" :
                not >= 70 ? "C" : "F"
yazdır(harf)  // B

Type Check Operatörü

değişken değer: Any = "Hello"

eğer değer is Yazı {
    yazdır("Bu bir string")
}

eğer değer !is Sayı {
    yazdır("Bu bir sayı değil")
}

// Casting ile
değişken metin = değer as Yazı

In Operatörü

// Liste kontrol
değişken sayılar = [1, 2, 3, 4, 5]
eğer 3 in sayılar {
    yazdır("3 listede var")
}

// String kontrol
değişken metin = "Merhaba Dünya"
eğer "Dünya" in metin {
    yazdır("'Dünya' bulundu")
}

// Range kontrol
eğer 5 in 1..10 {
    yazdır("5 aralıkta")
}

// Map kontrol
değişken sözlük = {"ad": "Ahmet", "yaş": 30}
eğer "ad" in sözlük {
    yazdır("'ad' anahtarı var")
}

Operatör Önceliği

Yüksekten düşüğe:

ÖncelikOperatörlerAçıklama
1(), [], .Parantez, indeks, üye erişim
2++, --, !, ~, +, -Unary operatörler
3**Üs alma
4*, /, %Çarpma, bölme, mod
5+, -Toplama, çıkarma
6<<, >>Bit kaydırma
7<, <=, >, >=Karşılaştırma
8==, !=Eşitlik
9&Bitwise AND
10^Bitwise XOR
11|Bitwise OR
12&&Mantıksal AND
13||Mantıksal OR
14?:, ? :Ternary, Elvis
15=, +=, -=, ...Atama

Parantezle Öncelik Değiştirme

değişken a = 2 + 3 * 4      // 14 (çarpma önce)
değişken b = (2 + 3) * 4    // 20 (toplama önce)

değişken c = 10 / 2 + 3     // 8
değişken d = 10 / (2 + 3)   // 2

Özel Operatörler

Assert Operatörü

değişken x = 10
assert x > 0, "x pozitif olmalı"

// Eğer koşul yanlış ise program durur

Match Operatörü

değişken sayı = 2

değişken sonuç = sayı eş {
    1 => "bir",
    2 => "iki",
    3 => "üç",
    _ => "diğer"
}

yazdır(sonuç)  // iki

Best Practices

✅ Yapılması Gerekenler

// Karmaşık ifadelerde parantez kullan
değişken sonuç = (a + b) * (c - d)

// Short-circuit evaluation'dan faydalanın
eğer kullanıcı != null && kullanıcı.aktif {
    // ...
}

// Null-safe operatörler kullan
değişken email = kullanıcı?.email ?: "Bilinmiyor"

// Operatör etrafında boşluk
değişken toplam = a + b  // İyi
değişken toplam = a+b    // Okunabilir değil

❌ Kaçınılması Gerekenler

// Çok uzun ternary zincirleri
değişken x = a ? b ? c ? d : e : f : g  // Okunması zor

// Gereksiz karmaşık bitwise işlemler
değişken y = (a & b) | (~c ^ d)  // Ne yaptığı belli değil

// Yan etki yaratan operatörler
değişken z = x++ + ++x + x++  // Kafa karıştırıcı

Örnek: Çeşitli Operatörler

işlev ana() {
    // Aritmetik
    değişken toplam = 10 + 20
    değişken fark = 100 - 50
    değişken çarpım = 5 * 6
    değişken bölüm = 20 / 4
    
    // Karşılaştırma
    eğer toplam > fark {
        yazdır("Toplam daha büyük")
    }
    
    // Mantıksal
    değişken a = doğru
    değişken b = yanlış
    eğer a && !b {
        yazdır("Koşul sağlandı")
    }
    
    // String
    değişken mesaj = "Merhaba" + " " + "Dünya"
    
    // Null-safe
    değişken değer: Sayı? = null
    değişken sonuç = değer ?: 0
    
    yazdır("Tüm işlemler tamamlandı")
}

Bir Sonraki