Files

101 lines
4.2 KiB
Plaintext
Raw Permalink Normal View History

# Fonksiyonlar: parametre, dönüş değeri, tür belirtme, varsayılan değer ve özyineleme
#
# Fonksiyon, bir işi yapan ve bir adı olan kod bloğudur. Bir kez yazılır,
# istendiği kadar çağrılır. Tanımı "fonksiyon ad(parametreler):" ile başlar.
#
# Fonksiyonları dosyanın başına, değişkenlerden önce yazıyoruz. Bunun bir nedeni
# var: bir fonksiyonun içinde, kendisinden ÖNCE tanımlanmış bir değişkenle aynı
# adı kullanırsan fonksiyon o değişkeni değiştirir. Başta tanımlanan fonksiyonun
# içindeki adlar yalnız ona ait kalır.
# ── En basit fonksiyon: parametresiz, değer döndürmeyen ───────
fonksiyon ayrac():
yazdir("─".tekrarla(44))
# ── Parametre almak ───────────────────────────────────────────
# Çağırırken parantez içine verilen değer, parametrenin (ad) yerine geçer.
fonksiyon selamla(ad):
yazdir(f"Merhaba {ad}, hoş geldin.")
# ── Değer döndürmek: don ──────────────────────────────────────
# don, sonucu çağıran yere geri verir ve fonksiyonu orada bitirir.
# Parametre ve dönüş türünü yazmak zorunlu değil; yazarsan derleyici denetler:
# dikdortgen_alani("üç", 4) yazan biri program çalışmadan uyarılır.
fonksiyon dikdortgen_alani(en: sayi, boy: sayi) -> sayi:
don en * boy
fonksiyon ortalama(a: ondalik, b: ondalik, c: ondalik) -> ondalik:
don (a + b + c) / 3.0
# ── Varsayılan değerli parametre ──────────────────────────────
# Çağıran kdv vermezse 20 kullanılır. Varsayılanlı parametreler en sona yazılır.
fonksiyon kdvli_fiyat(fiyat: ondalik, kdv: sayi = 20) -> ondalik:
don fiyat * (1.0 + ondalik(kdv) / 100.0)
# ── Mantık döndüren fonksiyon ve birden çok don ───────────────
# Cevabı belli olduğu anda don ile çıkmak kodu sadeleştirir.
fonksiyon asal_mi(n: sayi) -> mantik:
eger n < 2:
don yanlis
bolen = 2
iken bolen * bolen <= n:
eger n % bolen == 0:
don yanlis
bolen += 1
don dogru
# ── Fonksiyon başka bir fonksiyonu çağırabilir ────────────────
fonksiyon asallari_yaz(baslangic: sayi, bitis: sayi):
bulunan = ""
dongu sayi_adayi icinde baslangic..bitis:
eger asal_mi(sayi_adayi):
bulunan = bulunan + f" {sayi_adayi}"
yazdir(f"{baslangic}-{bitis} arası asallar:{bulunan}")
# ── Özyineleme: kendini çağıran fonksiyon ─────────────────────
# n! = n × (n-1)! ve 1! = 1. Her çağrı problemi biraz küçültür;
# n <= 1 olunca durur. Bu durma koşulu olmazsa fonksiyon kendini sonsuza dek çağırırdı.
fonksiyon faktoriyel(n: sayi) -> sayi:
eger n <= 1:
don 1
don n * faktoriyel(n - 1)
# Bir sayının basamakları toplamı: 4729 → 4 + 7 + 2 + 9 = 22
# Son basamak n % 10, geri kalanı n // 10.
fonksiyon basamak_toplami(n: sayi) -> sayi:
eger n < 10:
don n
don n % 10 + basamak_toplami(n // 10)
# ════════════════ Program buradan başlıyor ════════════════
ayrac()
selamla("Zeynep")
selamla("Mehmet")
ayrac()
yazdir(f"3 x 4 dikdörtgenin alanı: {dikdortgen_alani(3, 4)}")
# Fonksiyonun sonucu bir değişkene atanabilir ya da doğrudan kullanılabilir.
ort = ortalama(72.0, 85.0, 90.0)
yazdir(f"72, 85 ve 90'ın ortalaması: {ort:.2f}")
yazdir(f"100 TL, KDV %20 ile : {kdvli_fiyat(100.0):.2f} TL")
yazdir(f"100 TL, KDV %10 ile : {kdvli_fiyat(100.0, 10):.2f} TL")
# Parametreyi adıyla vermek, çok parametreli çağrıları okunur yapar.
yazdir(f"100 TL, KDV %1 ile : {kdvli_fiyat(100.0, kdv=1):.2f} TL")
ayrac()
dongu n icinde [1, 2, 17, 21, 97]:
eger asal_mi(n):
yazdir(f"{n} asaldır")
degilse:
yazdir(f"{n} asal değildir")
asallari_yaz(50, 80)
ayrac()
dongu n icinde 1..10:
yazdir(f"{n:2}! = {faktoriyel(n):>9,}")
yazdir(f"4729 sayısının basamakları toplamı: {basamak_toplami(4729)}")
ayrac()