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

Değişkenler ve Sabitler

BERK'te değerler saklamak için değişkenler (variables) ve sabitler (constants) kullanılır.

Değişken Tanımlama

Türkçe Syntax

değişken x = 10
değişken isim = "Ahmet"
değişken pi = 3.14159

İngilizce Syntax

var x = 10
var name = "John"
var pi = 3.14159

Tip Belirtme

BERK statik tipli bir dildir. Tip çıkarımı (type inference) desteklenir:

// Tip çıkarımı (önerilen)
değişken sayı = 42          // Sayı tipi
değişken metin = "Hello"    // Yazı tipi
değişken gerçek = 3.14      // Sayı tipi (float)

// Açık tip belirtimi
değişken sayı: Sayı = 42
değişken metin: Yazı = "Hello"
değişken liste: Liste<Sayı> = [1, 2, 3]

Değişken Değiştirme

Değişkenler tanımlandıktan sonra değerleri değiştirilebilir:

değişken sayaç = 0
yazdır(sayaç)  // 0

sayaç = sayaç + 1
yazdır(sayaç)  // 1

sayaç += 5
yazdır(sayaç)  // 6

Sabitler (Constants)

Sabitler bir kez atandıktan sonra değiştirilemez:

sabit PI = 3.14159
sabit MAX_KULLANICI = 100
sabit UYGULAMA_ADI = "BERK App"

// Hata! Sabit değiştirilemez
// PI = 3.14  // Derleme hatası

İngilizce Syntax

const PI = 3.14159
const MAX_USERS = 100

İsimlendirme Kuralları

Değişkenler

  • snake_case kullanın (önerilen)
  • Türkçe karakterler desteklenir
  • Sayı ile başlayamaz
  • Anahtar kelime olamaz
// Geçerli değişken isimleri
değişken kullanıcı_adı = "Ayşe"
değişken toplam_fiyat = 99.99
değişken öğrenci_numarası = 12345
değişken değer1 = 10
değişken _private = "gizli"

// Geçersiz değişken isimleri
// değişken 1değer = 10      // Sayı ile başlıyor
// değişken işlev = 5        // Anahtar kelime
// değişken user-name = ""   // Tire kullanılamaz

Sabitler

  • SCREAMING_SNAKE_CASE kullanın
  • Tümü büyük harf
  • Kelimeler alt çizgi ile ayrılır
sabit MAX_DEĞER = 1000
sabit VERSİYON_NUMARASI = "0.8.0"
sabit HATA_MESAJI = "Geçersiz giriş"

Kapsam (Scope)

Global Değişkenler

Fonksiyon dışında tanımlanan değişkenler global'dir:

değişken global_sayaç = 0  // Global

işlev artır() {
    global_sayaç += 1
}

işlev ana() {
    yazdır(global_sayaç)  // 0
    artır()
    yazdır(global_sayaç)  // 1
}

Yerel Değişkenler

Fonksiyon içinde tanımlanan değişkenler yerel'dir:

işlev hesapla() {
    değişken yerel = 10  // Sadece bu fonksiyonda erişilebilir
    yazdır(yerel)
}

işlev ana() {
    hesapla()
    // yazdır(yerel)  // Hata! yerel burada tanımlı değil
}

Blok Kapsamı

Her blok kendi kapsamını oluşturur:

işlev ana() {
    değişken x = 10
    
    eğer x > 5 {
        değişken y = 20  // Bu blokta geçerli
        yazdır(x, y)     // 10, 20
    }
    
    yazdır(x)     // 10
    // yazdır(y)  // Hata! y bu kapsamda yok
}

Shadowing

İç kapsamda aynı isimli değişken tanımlanabilir:

işlev ana() {
    değişken x = 5
    yazdır(x)  // 5
    
    {
        değişken x = 10  // Farklı değişken
        yazdır(x)        // 10
    }
    
    yazdır(x)  // 5 (dış kapsam)
}

Destructuring

Tuple ve listelerden değer çıkarma:

// Tuple destructuring
değişken (x, y) = (10, 20)
yazdır(x)  // 10
yazdır(y)  // 20

// Liste destructuring
değişken [ilk, ikinci, ...geri_kalan] = [1, 2, 3, 4, 5]
yazdır(ilk)         // 1
yazdır(ikinci)      // 2
yazdır(geri_kalan)  // [3, 4, 5]

Çoklu Atama

Birden fazla değişkeni aynı anda tanımlama:

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

// Değer takası (swap)
değişken x = 10
değişken y = 20
x, y = y, x
yazdır(x, y)  // 20 10

Nullable Değişkenler

Değişkenler null olabilir:

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

eğer değer != null {
    yazdır("Değer: ", değer)
} değilse {
    yazdır("Değer yok")
}

// Varsayılan değer ile
değişken sonuç = değer ?: 0  // Eğer null ise 0 kullan

Type Aliasing

Tip takma adları:

tip KullanıcıID = Sayı
tip Eposta = Yazı

değişken id: KullanıcıID = 12345
değişken email: Eposta = "user@example.com"

Best Practices

✅ Yapılması Gerekenler

// Anlamlı isimler kullanın
değişken öğrenci_sayısı = 30
değişken toplam_fiyat = 199.99

// Sabitler için büyük harf
sabit MAX_RETRY = 3
sabit API_URL = "https://api.example.com"

// Tip belirtimi gerektiğinde
değişken liste: Liste<Yazı> = []
değişken harita: Harita<Yazı, Sayı> = {}

❌ Kaçınılması Gerekenler

// Çok kısa veya anlamsız isimler
değişken x = 30
değişken tmp = 199.99
değişken a1, a2, a3 = 1, 2, 3

// Tutarsız isimlendirme
değişken UserName = ""    // PascalCase değişkende kullanılmaz
değişken user-name = ""   // Tire kullanılamaz

// Gereksiz tip belirtimi (tip çıkarımı yeterli)
değişken sayı: Sayı = 10  // Gereksiz, "değişken sayı = 10" yeter

Örnek Program

import math

// Global sabitler
sabit YERÇEKIMI = 9.81  // m/s²
sabit PI = 3.14159

işlev dairesel_hareket(yarıçap: Sayı, hız: Sayı) -> Sayı {
    // Merkezcil ivme hesaplama
    değişken ivme = (hız * hız) / yarıçap
    geri dön ivme
}

işlev serbest_düşüş(yükseklik: Sayı) -> Sayı {
    // v = sqrt(2 * g * h)
    değişken hız = math.sqrt(2.0 * YERÇEKIMI * yükseklik)
    geri dön hız
}

işlev ana() {
    // Değişkenler
    değişken yarıçap = 5.0   // metre
    değişken hız = 10.0      // m/s
    
    değişken ivme = dairesel_hareket(yarıçap, hız)
    yazdır("Merkezcil ivme: ", ivme, " m/s²")
    
    // Sabit değer
    sabit YÜKSEKLİK = 50.0  // metre
    değişken düşüş_hızı = serbest_düşüş(YÜKSEKLİK)
    yazdır("Düşüş hızı: ", düşüş_hızı, " m/s")
}

Bir Sonraki