101 lines
4.2 KiB
Plaintext
101 lines
4.2 KiB
Plaintext
# 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()
|