Files

131 lines
3.0 KiB
Markdown
Raw Permalink Normal View History

---
baslik: Tür dönüşümleri
bolum: Temeller
ozet: sayi(), ondalik() ve metin() ile türler arasında geçiş
---
Türler kendiliğinden birbirine dönüşmez. Kullanıcıdan ya da bir dosyadan gelen `"42"` bir metindir; onunla hesap yapmak için önce sayıya çevirmen gerekir. Dönüşümü her zaman açıkça yazarsın.
## Üç dönüşüm fonksiyonu
| Fonksiyon | Ne yapar | Örnek | Sonuç |
|---|---|---|---|
| `sayi(x)` | tam sayıya çevirir | `sayi("42")` | `42` |
| `ondalik(x)` | ondalık sayıya çevirir | `ondalik("2.75")` | `2.75` |
| `metin(x)` | metne çevirir | `metin(24)` | `"24"` |
## Metinden sayıya
```kbl
yas_yazi = "17"
yas = sayi(yas_yazi)
yazdir(yas + 1)
fiyat = ondalik("19.90")
yazdir(fiyat * 2)
```
```cikti
18
39.8
```
Baştaki ve sondaki boşluklar sorun olmaz: `sayi(" 42 ")` da `42` verir.
## Sayıdan metne
Bir metni sayıyla `+` ile birleştiremezsin. Önce sayıyı `metin()` ile çevir.
```kbl
ogrenci = 24
yazdir("Sınıfta " + metin(ogrenci) + " öğrenci var.")
```
```cikti
Sınıfta 24 öğrenci var.
```
> **İpucu:** Metinle sayıyı yan yana yazmanın daha kolay bir yolu var: `f"Sınıfta {ogrenci} öğrenci var."`. Bunu *Biçimlendirme* dersinde göreceksin.
## ondalik ile sayi arasında
`sayi()` bir ondalığın küsuratını **atar**, yuvarlamaz. `ondalik()` tam sayıyı ondalığa çevirir.
```kbl
yazdir(sayi(3.99))
yazdir(sayi(-3.99))
yazdir(ondalik(7))
yazdir(ondalik(7) / 2)
```
```cikti
3
-3
7.0
3.5
```
Yuvarlamak istiyorsan `matematik.yuvarla()` kullanırsın; onu *Modüller* dersinde göreceksin.
## Mantık değerini metne çevirmek
```kbl
gecti = dogru
yazdir("Sonuç: " + metin(gecti))
```
```cikti
Sonuç: doğru
```
> **Dikkat:** `sayi()` metni tam sayıya çevirir: `sayi("3.9")` ondalık kısmı atar ve **3** verir. Sayı olmayan bir metin (`sayi("on iki")`) ise programı hata iletisiyle durdurur. Ondalık bir metni önce `ondalik()` ile çevir. Kullanıcıdan gelen sayıyı güvenle okumanın yolunu *Kullanıcıdan girdi* dersinde öğreneceksin.
```kbl
yazdir(sayi(ondalik("3.9")))
```
```cikti
3
```
## Gerçek bir örnek: virgülle ayrılmış veriler
Bir satırdaki verileri metin olarak alıp sayıya çevirerek hesap yapalım. `bol(";")` metni parçalara ayırır (ayrıntısı *Metin işlemleri* dersinde).
```kbl
satir = "Defter;3;24.50"
parca = satir.bol(";")
urun = parca[0]
adet = sayi(parca[1])
fiyat = ondalik(parca[2])
yazdir(urun + ": " + metin(adet * fiyat) + " TL")
```
```cikti
Defter: 73.5 TL
```
## Alıştırma
```alistirma
`a` ve `b` metin olarak verilmiş. İkisini sayıya çevirip toplamını yazdır.
%%%
a = "125"
b = "75"
# buraya yaz
%%%
a = "125"
b = "75"
yazdir(sayi(a) + sayi(b))
%%%
200
```
```alistirma
`metin()` kullanarak `Toplam: 3 ürün, 45.5 TL` satırını yazdır. Sayıları değişkenlerden al, `+` ile birleştir.
%%%
adet = 3
tutar = 45.5
# buraya yaz
%%%
adet = 3
tutar = 45.5
yazdir("Toplam: " + metin(adet) + " ürün, " + metin(tutar) + " TL")
%%%
Toplam: 3 ürün, 45.5 TL
```