--- baslik: Fonksiyon tanımlama bolum: Fonksiyonlar ozet: Bir işi adlandırıp istediğin kadar çağırmak --- Aynı kodu programın üç yerinde yazıyorsan, bir yerde hata yaptığında üç yerde düzeltmen gerekir. Fonksiyon, bir işi yapan ve bir adı olan kod bloğudur: bir kez yazarsın, istediğin kadar çağırırsın. ## İlk fonksiyonun Tanım `fonksiyon ad():` ile başlar; gövdesi girintilidir. Fonksiyon tanımlandığında çalışmaz, **çağrıldığında** çalışır. ```kbl fonksiyon ayrac(): yazdir("─".tekrarla(20)) ayrac() yazdir("Günün menüsü") ayrac() ``` ```cikti ──────────────────── Günün menüsü ──────────────────── ``` ## Parametre almak Parantez içine yazdığın ad bir **parametredir**. Çağırırken verdiğin değer onun yerine geçer. ```kbl fonksiyon selamla(ad): yazdir(f"Merhaba {ad}, hoş geldin.") selamla("Zeynep") selamla("Mehmet") ``` ```cikti Merhaba Zeynep, hoş geldin. Merhaba Mehmet, hoş geldin. ``` Birden çok parametre virgülle ayrılır; değerler aynı sırayla verilir. ```kbl fonksiyon fis_satiri(urun, adet, fiyat): yazdir(f"{urun:<10}{adet:>3} x {fiyat:>6.2f}") fis_satiri("Ekmek", 2, 12.5) fis_satiri("Peynir", 1, 149.0) ``` ```cikti Ekmek 2 x 12.50 Peynir 1 x 149.00 ``` ## Değer döndürmek: don `don` sonucu çağıran yere geri verir. Dönen değeri bir değişkene atayabilir ya da doğrudan kullanabilirsin. ```kbl fonksiyon kare(x): don x * x alan = kare(7) yazdir(alan) yazdir(kare(3) + kare(4)) ``` ```cikti 49 25 ``` `don` fonksiyonu orada bitirir; altındaki satırlar çalışmaz. Cevap belli olduğu anda çıkmak kodu sadeleştirir. ```kbl fonksiyon not_harfi(puan): eger puan >= 85: don "AA" eger puan >= 70: don "BA" eger puan >= 50: don "CC" don "FF" yazdir(not_harfi(92)) yazdir(not_harfi(74)) yazdir(not_harfi(31)) ``` ```cikti AA BA FF ``` ## Fonksiyon fonksiyonu çağırabilir ```kbl fonksiyon cift_mi(n): don n % 2 == 0 fonksiyon ciftleri_yaz(son): dongu i icinde 1..son: eger cift_mi(i): konsol.yaz(f"{i} ") yazdir() ciftleri_yaz(12) ``` ```cikti 2 4 6 8 10 12 ``` > **Dikkat:** Fonksiyonun içinde, programın başka bir yerinde kullandığın değişken adlarını kullanmamaya özen göster; her fonksiyonun içinde kendine özgü adlar seç. İyi bir alışkanlık da şudur: fonksiyonlarını dosyanın başına yaz, programın asıl işini altlarına koy. ## Gerçek bir örnek ```kbl fonksiyon kdvli(fiyat): don fiyat * 1.20 fonksiyon fiyat_yaz(urun, fiyat): yazdir(f"{urun}: {fiyat:.2f} TL (KDV dahil {kdvli(fiyat):.2f} TL)") fiyat_yaz("Kulaklık", 850.0) fiyat_yaz("Kılıf", 120.0) ``` ```cikti Kulaklık: 850.00 TL (KDV dahil 1020.00 TL) Kılıf: 120.00 TL (KDV dahil 144.00 TL) ``` ## Alıştırma ```alistirma `cevre(en, boy)` adında, bir dikdörtgenin çevresini döndüren bir fonksiyon yaz. Sonra `cevre(5, 3)` ve `cevre(10, 10)` sonuçlarını ayrı satırlarda yazdır. %%% # buraya yaz yazdir(cevre(5, 3)) yazdir(cevre(10, 10)) %%% fonksiyon cevre(en, boy): don 2 * (en + boy) yazdir(cevre(5, 3)) yazdir(cevre(10, 10)) %%% 16 40 ``` ```alistirma `buyuk_olan(a, b)` adında, iki sayıdan büyük olanı döndüren bir fonksiyon yaz. Sonra onu kullanarak üç sayının en büyüğünü bulup yazdır. %%% # buraya yaz yazdir(buyuk_olan(buyuk_olan(14, 27), 9)) %%% fonksiyon buyuk_olan(a, b): eger a > b: don a don b yazdir(buyuk_olan(buyuk_olan(14, 27), 9)) %%% 27 ```