İçeriğe geç

Swift · 5/8

Fonksiyonlar: kodu tekrar kullanmak

Parametre alan ve değer döndüren bir fonksiyonu farklı girdilerle kullanmak.

Önerilen çalışma: 25–45 dakika; örnekleri kendin uygula. Süre kişiye göre değişir.

Bu sayfada · 9 başlık

Başlamadan önce

Önceki dersteki örneği çalıştırmış olman ve dosya/çıktı ayrımını biliyor olman yararlı.

Öğrenme sırası: konuyu oku → çıktıyı tahmin et → örneği değiştir → alıştırmayı çöz → cevabını gerekçelendir.

Swift · Fonksiyonlar: kodu tekrar kullanmak — videolu atölye: açıklamalı kavram şeması
Webino App öğretici şeması · Uygulama ekran görüntüsü değildir.

Videoyla adım adım izle

Türkçe açıklamalı sessiz görsel anlatım. Sesli ders veya kesintisiz ekran kaydı değildir. Duraklatıp kendi ortamında uygula.

Video bölümleri ve tam metin

Fonksiyonlar: kodu tekrar kullanmak

Parametre alan ve değer döndüren bir fonksiyonu farklı girdilerle kullanmak.

Kavramı kur

Fonksiyon bir işi adlandırır ve tekrar kullanılabilir hâle getirir. Parametre, iş yapılırken değişmesini istediğin girdinin adıdır. Fonksiyonu çağırırken gerçek değeri argüman olarak verirsin. Böylece aynı hesap kuralını farklı sayılarda yeniden yazmadan kullanabilirsin; hesap bir yerde tanımlanır, birçok yerde çağrılır.

Neden böyle çalışıyor?

Bir değeri döndürmek ile ekrana yazdırmak farklı işlerdir. return çağıran koda bir sonuç verir; çıktı komutu ise bir bilgiyi görünür kılar. Hesaplayan fonksiyonun sonucunu başka hesaplarda kullanmak istiyorsan değeri döndür. Yazdırmayı çağıran koda bırakmak fonksiyonu denemeyi ve yeniden kullanmayı kolaylaştırır.

Çalışma sırası

İyi bir başlangıç fonksiyonu küçük ve tek amaçlıdır. Adını bir eylem gibi seç, hangi girdileri kabul ettiğini ve hangi sonucu ürettiğini yaz. Bir normal, bir sınır ve mümkünse bir beklenmeyen durum düşün. Her olası sorunu tek fonksiyona doldurmak yerine önce sözleşmesini anlaşılır kıl.

İkinci örnek · 1

Fonksiyonun adı yapılan işi anlatır. Kodun tamamı yazılı derste bulunur.

Kod

func ikiKat(_ sayi: Int) -> Int {
    return sayi * 2
}
print(ikiKat(4))
print(ikiKat(7))

Beklenen sonucu oku

İki çağrı aynı kuralı farklı girdilerle uygular.

Beklenen çıktı: 8 14

Bir değeri sen değiştir

ikiKat fonksiyonunu 4 ve 7 için çağır; 8 ve 14 bekle. Sonucu bir değişkene alıp üzerine 1 ekle; yazdırmadan da kullanılabildiğini göster.

Hata nereden gelir?

Fonksiyonu tanımlamak onu çalıştırmaz; ayrıca çağırman gerekir.

Kendi çözümünü kur

İki sayı alıp toplam döndüren yeni bir fonksiyon yaz; üç farklı girdi çiftiyle kontrol et. Fonksiyonun içinde sadece hesabı döndür. Sonucu görmek için çağrıdan sonra yazdır.

Çözüm varyasyonu · 1

Önce kendi denemeni yap; sonra bu varyasyonun girdileri ile sonucunu karşılaştır.

Kod

func ikiKat(_ sayi: Int) -> Int {
    return sayi * 2
}
print(ikiKat(5))
print(ikiKat(0))

Kendini kontrol et

Bir fonksiyonun sonucu başka hesapta kullanılacaksa neden yalnızca yazdırmak yeterli değildir? Yanıt: Yazdırma ekrana yan etki üretir; çağıran koda kullanılabilir sonuç vermek için uygun bir dönüş değeri gerekir.

Beklenen çıktı: 10 0

Konu anlatımı

Fonksiyon bir işi adlandırır ve tekrar kullanılabilir hâle getirir. Parametre, iş yapılırken değişmesini istediğin girdinin adıdır. Fonksiyonu çağırırken gerçek değeri argüman olarak verirsin. Böylece aynı hesap kuralını farklı sayılarda yeniden yazmadan kullanabilirsin; hesap bir yerde tanımlanır, birçok yerde çağrılır.

Bir değeri döndürmek ile ekrana yazdırmak farklı işlerdir. return çağıran koda bir sonuç verir; çıktı komutu ise bir bilgiyi görünür kılar. Hesaplayan fonksiyonun sonucunu başka hesaplarda kullanmak istiyorsan değeri döndür. Yazdırmayı çağıran koda bırakmak fonksiyonu denemeyi ve yeniden kullanmayı kolaylaştırır.

İyi bir başlangıç fonksiyonu küçük ve tek amaçlıdır. Adını bir eylem gibi seç, hangi girdileri kabul ettiğini ve hangi sonucu ürettiğini yaz. Bir normal, bir sınır ve mümkünse bir beklenmeyen durum düşün. Her olası sorunu tek fonksiyona doldurmak yerine önce sözleşmesini anlaşılır kıl.

func tanımında _ işareti bu örnekte dış argüman etiketini kaldırır; ikiKat(4) çağrısı bu yüzden geçerlidir. -> Int dönüş türünü gösterir. Fonksiyon bir sonuç üretir; print ise o sonucu görünür kılar. İkisini ayrı düşünmek test yazarken de işine yarar.

İlk örneği oku ve dene

5

Fonksiyonlar: kodu tekrar kullanmak

Fonksiyon, bir işi yapan ve bir isim verdiğin kod parçasıdır. Bir kere yazarsın, istediğin kadar çağırırsın. Swift'te fonksiyonlar func ile başlar, -> String ise "yazı döndürür" demek.

Swift
func selamla(isim: String) -> String {
    return "Merhaba \(isim)!"
}

print(selamla(isim: "Mehmet"))

▶ Sonuç

Merhaba Mehmet!

Adım adım neden böyle çalışıyor?

  1. Fonksiyonun adı yapılan işi anlatır.
  2. Parametre çağrıdaki değeri yerel olarak adlandırır.
  3. return hesaplanmış sonucu çağıran koda verir.
  4. İki çağrı aynı kuralı farklı girdilerle uygular.
105

İkinci çözümlü örnek

Parametre alan ve değer döndüren bir fonksiyonu farklı girdilerle kullanmak.

Swift
func ikiKat(_ sayi: Int) -> Int {
    return sayi * 2
}
print(ikiKat(4))
print(ikiKat(7))

▶ Sonuç

8
14

Kolaydan zora sen dene

  1. ikiKat fonksiyonunu 4 ve 7 için çağır; 8 ve 14 bekle.
  2. Sonucu bir değişkene alıp üzerine 1 ekle; yazdırmadan da kullanılabildiğini göster.
  3. İki sayı alıp toplam döndüren yeni bir fonksiyon yaz; üç farklı girdi çiftiyle kontrol et.
İpucunu aç

Fonksiyonun içinde sadece hesabı döndür. Sonucu görmek için çağrıdan sonra yazdır.

Üç görevin açıklamalı çözümünü oku
  1. ikiKat(4) sonucu 8, ikiKat(7) sonucu 14 olmalıdır.
  2. Dönen 8 değerini bir değişkende saklayıp 1 eklediğinde 9 elde edilir. Fonksiyon yalnızca yazdırıyor olsaydı bu hesap için açık dönüş değeri bulunmayabilirdi.
  3. Topla işlevi iki parametre alıp onların toplamını döndürür. (2,3) için 5, (0,4) için 4, (-1,1) için 0 bekle; yazdırmayı çağıran yerde yap.
Bir çözüm varyasyonu gör
205

Çözüm varyasyonu

Önce kendi görevlerini dene. Bu varyasyonda girdi ve sonuçları karşılaştır.

Swift
func ikiKat(_ sayi: Int) -> Int {
    return sayi * 2
}
print(ikiKat(5))
print(ikiKat(0))

▶ Sonuç

10
0

Yaygın hata ve çözümü

  1. Fonksiyonu tanımlamak onu çalıştırmaz; ayrıca çağırman gerekir.
  2. Yalnızca yazdıran bir fonksiyonu hesap sonucu gibi kullanmak işe yaramayabilir; return ile çıktı arasındaki farkı izle.

Kendini değerlendir

Fonksiyonda return ne yapar?

Ezberlemeden açıklayabiliyor musun?

Bir fonksiyonun sonucu başka hesapta kullanılacaksa neden yalnızca yazdırmak yeterli değildir?

Açıklamalı yanıt

Yazdırma ekrana yan etki üretir; çağıran koda kullanılabilir sonuç vermek için uygun bir dönüş değeri gerekir.

Kendi çözümünde bir girdiyi değiştir. Çalıştırmadan önce beklenen sonucu yaz; gerçek sonuçla karşılaştır ve fark varsa hangi satırdan kaynaklandığını açıkla.

Kaynak ve çalışma ortamı

Örnekler küçük öğretim senaryolarıdır. Java/C#/PHP/Swift çalışma ortamını kendi cihazında ayrıca doğrula; yazılı sonuçlar beklenen davranışı açıklar.

Resmî dil belgeleri
Bu içerik işine yaradı mı?

Görüşünü aşağıdan işaretleyebilir ve varsa notunu bırakabilirsin.