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")
}