--- baslik: Modüller bolum: Hatalar ve dosyalar ozet: kullan ile hazır kütüphaneleri programına katmak --- Karekök almak, bir listeyi toplamak, metnin özetini çıkarmak gibi işleri her seferinde sıfırdan yazmazsın. KabaLang'in standart kütüphanesi bu işleri **modüller** halinde hazır sunar. `kullan` ile bir modülü programına katarsın. ## kullan `kullan kaba.sistem` yazınca `matematik`, `dosya`, `konsol`, `json`, `kripto`, `zaman`, `rastgele` gibi modüller birlikte gelir. Bir modülün fonksiyonu `modul.fonksiyon()` diye çağrılır. ```kbl kullan kaba.sistem yazdir(matematik.karekok(144.0)) yazdir(matematik.mutlak(-17)) yazdir(f"{matematik.pi:.4f}") ``` ```cikti 12.0 17 3.1416 ``` > **İpucu:** `kullan` satırlarını dosyanın en başına yaz. Hangi yetenekleri kullandığını okuyana hemen gösterir. ## matematik | Fonksiyon | Ne yapar | Örnek | Sonuç | |---|---|---|---| | `matematik.karekok(x)` | karekök | `karekok(9.0)` | `3.0` | | `matematik.mutlak(x)` | mutlak değer | `mutlak(-3)` | `3` | | `matematik.yuvarla(x)` | en yakın tam değere yuvarla | `yuvarla(2.5)` | `3.0` | | `matematik.taban(x)` | aşağı yuvarla | `taban(3.7)` | `3.0` | | `matematik.tavan(x)` | yukarı yuvarla | `tavan(3.2)` | `4.0` | | `matematik.us(a, b)` | a üzeri b | `us(2.0, 10.0)` | `1024.0` | | `matematik.pi` | π sayısı | | `3.14159…` | ```kbl kullan kaba.sistem yazdir(matematik.yuvarla(2.5)) yazdir(matematik.taban(3.7)) yazdir(matematik.tavan(3.2)) yazdir(matematik.us(2.0, 10.0)) ``` ```cikti 3.0 3.0 4.0 1024.0 ``` `yuvarla`, `taban` ve `tavan` sonucu `ondalik` olarak verir. Tam sayı gerekiyorsa `sayi(matematik.tavan(x))` yazarsın. Gerçek bir örnek: dairenin alanı ve bir dik üçgenin hipotenüsü. ```kbl kullan kaba.sistem yaricap = 2.5 yazdir(f"Alan: {matematik.pi * yaricap * yaricap:.2f}") a = 3.0 b = 4.0 yazdir(f"Hipotenüs: {matematik.karekok(a * a + b * b)}") ``` ```cikti Alan: 19.63 Hipotenüs: 5.0 ``` ## koleksiyon `kullan kaba.koleksiyon` listelerle çalışan hazır fonksiyonları getirir. Bunları *Liste işlemleri* dersinde görmüştün. ```kbl kullan kaba.koleksiyon satislar = [120, 340, 90, 410, 250] yazdir(koleksiyon.topla(satislar)) yazdir(koleksiyon.en_buyuk(satislar)) yazdir(koleksiyon.sirali(satislar)) ``` ```cikti 1210 410 [90, 120, 250, 340, 410] ``` ## kripto `kripto` metinlerin özetini (hash) çıkarır ve base64 kodlaması yapar. Özet, bir metnin parmak izidir: metin bir harf bile değişse özet tümden değişir. ```kbl kullan kaba.sistem yazdir(kripto.sha256("merhaba").bastan(16)) yazdir(kripto.sha256("Merhaba").bastan(16)) kod = kripto.base64_kodla("KabaLang") yazdir(kod) yazdir(kripto.base64_coz(kod)) ``` ```cikti 4c6bcdd55f3153e1 7fdc9f4717c5fe66 S2FiYUxhbmc= KabaLang ``` ## Diğer modüller | Modül | Ne için | |---|---| | `dosya` | dosya okuma/yazma (*Dosyalar* dersi) | | `konsol` | klavyeden okuma (*Kullanıcıdan girdi* dersi) | | `json` | JSON üretme ve çözme | | `zaman` | saat, tarih, süre ölçümü | | `rastgele` | rastgele sayı ve seçim | `zaman` ve `rastgele` her çalıştırmada farklı sonuç verir. Örneğin `rastgele.sayi(1, 6)` bir zar atar, `zaman.saat()` şu anki saati verir. Kendi bilgisayarında **Dene** ile çalıştırıp her seferinde değiştiğini gör: ```kbl goster kullan kaba.sistem yazdir("Saat: " + zaman.saat()) yazdir(f"Zar: {rastgele.sayi(1, 6)}") ``` > **Dikkat:** Modül adlarını değişken adı olarak kullanma. `dosya = "notlar.txt"` gibi bir atama, `dosya` modülünü gölgeleyip kafa karıştırıcı hatalara yol açar; `dosya_adi` gibi bir ad seç. ## Tebrikler! Temel dersleri bitirdin: değişkenler, koşullar, döngüler, listeler, sözlükler, fonksiyonlar, kendi türlerin, hata yönetimi ve dosyalar. Artık **Örnekler** bölümündeki daha büyük programları okuyabilir, kendi küçük projelerine başlayabilirsin. ## Alıştırma ```alistirma `alanlar` listesindeki her sayı bir karenin alanı. `matematik.karekok` ile her karenin kenar uzunluğunu bulup `Alan 49.0 → kenar 7.0` biçiminde yazdır. %%% kullan kaba.sistem alanlar = [49.0, 2.25, 100.0] # buraya yaz %%% kullan kaba.sistem alanlar = [49.0, 2.25, 100.0] dongu a icinde alanlar: yazdir(f"Alan {a} → kenar {matematik.karekok(a)}") %%% Alan 49.0 → kenar 7.0 Alan 2.25 → kenar 1.5 Alan 100.0 → kenar 10.0 ``` ```alistirma `fiyatlar` listesindeki her fiyatı `matematik.tavan` ile yukarı yuvarla, `sayi()` ile tam sayıya çevirip listeye ekle ve `koleksiyon.topla` ile yuvarlanmış fiyatların toplamını bul. Önce yuvarlanmış listeyi, sonra toplamı yazdır. %%% kullan kaba.sistem kullan kaba.koleksiyon fiyatlar = [12.3, 7.8, 19.01] yuvarlanmis = [] # buraya yaz %%% kullan kaba.sistem kullan kaba.koleksiyon fiyatlar = [12.3, 7.8, 19.01] yuvarlanmis = [] dongu f icinde fiyatlar: yuvarlanmis.ekle(sayi(matematik.tavan(f))) yazdir(yuvarlanmis) yazdir(koleksiyon.topla(yuvarlanmis)) %%% [13, 8, 20] 41 ```