- dersler/: 29 kısa ders (açıklama, çalıştırılabilir örnek, alıştırma). Her örneğin ve alıştırma çözümünün çıktısı Online IDE'nin hazırlık adımında gerçekten koşulup dosyadakiyle karşılaştırılır; biçim dersler/BICIM.md. - temeller/: tek konulu 12 başlangıç programı. - web/anket, web/kisalt, web/pano: port PORT ortam değişkeninden okunur (Online IDE önizlemesi 8080 verir), yoksa eski sabit port. - README: öğrenme bölümü, Online IDE bağlantısı.
170 lines
4.9 KiB
Markdown
170 lines
4.9 KiB
Markdown
---
|
|
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
|
|
```
|