131 lines
3.0 KiB
Markdown
131 lines
3.0 KiB
Markdown
---
|
|
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
|
|
```
|