Files
ornekler/temeller/03-girdi/girdi.kbl
T
semih 494781e84f Dersler ve Temeller; web örnekleri PORT ortam değişkenini okur
- 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ı.
2026-10-17 22:07:47 +03:00

86 lines
4.0 KiB
Plaintext

# Girdi: kullanıcıdan satır okumak, sayıya çevirmek ve okunanla hesap yapmak
#
# Bu program beş satır okur: ad, doğum yılı, kilo, boy ve kitap sayısı.
# IDE'de girdiler aynı klasördeki girdi.txt dosyasından gelir; her satır,
# kullanıcının yazıp Enter'a bastığı bir cevap gibidir.
# Uçbirimde çalıştırırsan soruları görür, cevapları kendin yazarsın.
kullan kaba.sistem
# Soruları yalnız karşıda gerçekten bir insan varsa yazdıralım. Girdi bir
# dosyadan geliyorsa sorular kimseye hitap etmez, çıktıyı kalabalıklaştırır.
# etkilesimli_mi() bunu söyler: dogru ise klavyeden, yanlis ise dosyadan okuyoruz.
etkilesimli = konsol.etkilesimli_mi()
# ── 1. Bir satır metin okumak ─────────────────────────────────
# konsol.yaz() yazdir() gibidir ama satırı bitirmez; imleç sorunun yanında kalır.
eger etkilesimli:
konsol.yaz("Adınız: ")
# satir_oku() bir satır okur. Ama girdi bitmiş de olabilir; bu yüzden sonuç
# "ya bir satır ya hiçbir şey" taşıyan bir kutudur. deger_veya("misafir")
# kutuda satır varsa onu, yoksa "misafir"i verir. kirp() baştaki ve sondaki
# boşlukları atar.
ad = konsol.satir_oku().deger_veya("misafir").kirp()
# ── 2. Bir tam sayı okumak ve denetlemek ──────────────────────
eger etkilesimli:
konsol.yaz("Doğum yılınız: ")
# sayi_oku() satırı okur ve tam sayıya çevirmeyi dener. Sonuç iki şeyden biridir:
# başarı (içinde sayı) ya da hata (içinde nedeni). tamam_mi() hangisi olduğunu söyler.
# (Burada soruyu yukarıda kendimiz yazdığımız için sayi_oku'ya boş istem veriyoruz.)
yil_sonucu = konsol.sayi_oku("")
# Başarılıysa sayıyı deger() ile kutudan çıkarırız; değilse 2000 ile devam ederiz.
dogum_yili = 2000
eger yil_sonucu.tamam_mi():
dogum_yili = yil_sonucu.deger()
# ── 3. Ondalık sayı okumak ────────────────────────────────────
eger etkilesimli:
konsol.yaz("Kilonuz (kg): ")
kilo = ondalik(konsol.satir_oku().deger_veya("0").kirp())
eger etkilesimli:
konsol.yaz("Boyunuz (m): ")
boy = ondalik(konsol.satir_oku().deger_veya("0").kirp())
# ── 4. Hatalı bir girdi ───────────────────────────────────────
eger etkilesimli:
konsol.yaz("Bu ay kaç kitap okudunuz? ")
kitap_sonucu = konsol.sayi_oku("")
# ── Okunanlarla hesap ─────────────────────────────────────────
# Bu yılı saatten alıyoruz: zaman.bicimlendir("%Y") "2026" gibi bir metin verir.
bu_yil = sayi(zaman.bicimlendir("%Y"))
yas = bu_yil - dogum_yili
# Vücut kitle indeksi: kilo / (boy * boy)
vki = kilo / (boy * boy)
yazdir(f"Merhaba {ad}!")
yazdir(f"Adınız boşluk dahil {ad.uzunluk()} karakter.")
eger yil_sonucu.tamam_mi():
yazdir(f"{dogum_yili} doğumlusunuz; bu yıl {yas} yaşına giriyorsunuz.")
degilse:
yazdir("Doğum yılı okunamadı: " + yil_sonucu.hata().mesaj())
yazdir(f"Kilo {kilo} kg, boy {boy} m → vücut kitle indeksi {vki:.1f}")
# "on iki" bir sayı değil: sayi_oku bunu hata olarak bildirir, program çökmez.
eger kitap_sonucu.tamam_mi():
yazdir(f"Bu ay {kitap_sonucu.deger()} kitap okumuşsunuz.")
degilse:
yazdir("Kitap sayısı anlaşılamadı: " + kitap_sonucu.hata().mesaj())
yazdir(" (Rakamla yazmayı deneyin, örneğin 12.)")
# ── Girdinin sonu ─────────────────────────────────────────────
# Beş satırın hepsini okuduk. Bir kez daha okumaya kalkarsak kutu boş gelir:
# bos_mu() "okunacak satır kalmadı" demektir. Bu, boş bir satırla aynı şey değildir;
# yalnız Enter'a basılan satır, içi boş bir metin olarak gelir.
fazla = konsol.satir_oku()
eger fazla.bos_mu():
yazdir("Girdi bitti; okunacak başka satır yok.")