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ı.
This commit is contained in:
@@ -0,0 +1,168 @@
|
||||
---
|
||||
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
|
||||
```
|
||||
Reference in New Issue
Block a user