- Puan
- 28
- Yaş
- 118
╔════════════════════════════════════════════════════════════════════╗
║ C PROGRAMLAMA DİLİ EĞİTİM SERİSİ #6 ║
║ FONKSİYONLAR ║
║ (Mala Anlatır Gibi) ║
╚════════════════════════════════════════════════════════════════════╝
Önceki bölümlerde değişkenleri, operatörleri, karar yapılarını ve döngüleri öğrendik.
Artık program yazabiliyoruz.
Ama program büyüdükçe yeni bir sorun ortaya çıkıyor.
Kod karmaşası.
Örneğin:
Bir hesap makinesi yaptığını düşün.
Toplama işlemini 20 farklı yerde kullanıyorsun.
Her seferinde aynı kodları tekrar tekrar yazarsan:
• Kod uzar
• Hata yapma ihtimalin artar
• Düzenleme yapmak zorlaşır
• Program profesyonellikten uzaklaşır
İşte bu noktada fonksiyonlar devreye girer.
════════════════════════════════════════════════════════════════════
► FONKSİYON NEDİR?
Fonksiyon belirli bir görevi yerine getiren kod bloğudur.
Gerçek hayat örneği:
Kahve makinesi düşün.
Sen düğmeye basıyorsun.
Makine:
• Suyu ısıtıyor
• Kahveyi hazırlıyor
• Bardağa dolduruyor
Sen bunların hiçbirini tek tek yapmıyorsun.
Sadece komut veriyorsun.
Programlamada da durum aynıdır.
Örnek:
selamVer();
Bu satır çalıştığında bilgisayar gidip ilgili işi yapar.
════════════════════════════════════════════════════════════════════
► MAİN DE BİR FONKSİYONDUR
Şimdiye kadar sürekli gördüğümüz:
int main()
{
return 0;
}
aslında bir fonksiyondur.
Program ilk olarak main fonksiyonundan başlar.
Tüm programların giriş noktası burasıdır.
════════════════════════════════════════════════════════════════════
► İLK FONKSİYONUMUZ
#include <stdio.h>
void selamVer()
{
printf("Merhaba Dunya\n");
}
int main()
{
selamVer();
return 0;
}
ÇIKTI
Merhaba Dunya
Fonksiyon çağrıldı.
İçindeki kod çalıştı.
İşlem tamamlandı.
════════════════════════════════════════════════════════════════════
► VOID NEDİR?
Yeni başlayanların gözünü korkutan kelimelerden biridir.
Aslında anlamı çok basittir.
void = hiçbir şey döndürmeyeceğim
Örnek:
void mesaj()
{
printf("Merhaba");
}
Bu fonksiyon sadece ekrana yazı yazıyor.
Bir sonuç geri göndermiyor.
Bu yüzden void kullanılıyor.
════════════════════════════════════════════════════════════════════
► FONKSİYON ÇAĞIRMA
Fonksiyon tanımlamak başka şeydir.
Fonksiyonu çalıştırmak başka şeydir.
Tanımlama:
void selamVer()
{
printf("Merhaba");
}
Çağırma:
selamVer();
Tanımladığın halde çağırmazsan çalışmaz.
Bu yeni başlayanların sık yaptığı hatalardan biridir.
════════════════════════════════════════════════════════════════════
► PARAMETRE NEDİR?
Şimdi fonksiyonları güçlendirelim.
Bir pizza siparişi düşün.
pizzaYap();
yazarsan hangi pizza?
Kaşarlı mı?
Sucuklu mu?
Karışık mı?
Bilgi göndermen gerekir.
İşte fonksiyona gönderilen bilgilere parametre denir.
Örnek:
void selamVer(char isim[])
{
printf("Merhaba %s\n", isim);
}
Kullanım:
selamVer("Ahmet");
selamVer("Mehmet");
selamVer("Ayse");
ÇIKTI
Merhaba Ahmet
Merhaba Mehmet
Merhaba Ayse
Aynı fonksiyon.
Farklı veri.
Farklı sonuç.
════════════════════════════════════════════════════════════════════
► SAYI PARAMETRESİ
void kareAl(int sayi)
{
printf("%d\n", sayi * sayi);
}
kareAl(5);
ÇIKTI
25
Çünkü:
5 x 5 = 25
════════════════════════════════════════════════════════════════════
► BİRDEN FAZLA PARAMETRE
void topla(int a, int b)
{
printf("%d\n", a + b);
}
Kullanım:
topla(10,20);
ÇIKTI
30
Birden fazla bilgi gönderebilirsin.
Bu çok yaygın kullanılır.
════════════════════════════════════════════════════════════════════
► RETURN NEDİR?
Şimdi işin önemli kısmına geldik.
Bazı fonksiyonlar sadece işlem yapmaz.
Sonucu geri de verir.
Örnek:
int topla(int a, int b)
{
return a + b;
}
Buradaki return şunu söyler:
"Hesapladığım sonucu geri gönderiyorum."
════════════════════════════════════════════════════════════════════
► RETURN NASIL ÇALIŞIR?
#include <stdio.h>
int topla(int a, int b)
{
return a + b;
}
int main()
{
int sonuc;
sonuc = topla(5,7);
printf("%d", sonuc);
return 0;
}
ÇIKTI
12
Adım adım:
► RETURN GELDİĞİNDE NE OLUR?
int test()
{
return 5;
printf("Merhaba");
}
Buradaki printf çalışmaz.
Çünkü return fonksiyonu sonlandırır.
Bu çok önemli bir kuraldır.
════════════════════════════════════════════════════════════════════
► YEREL DEĞİŞKENLER
void test()
{
int x = 10;
}
Buradaki x değişkeni sadece bu fonksiyonun içinde yaşar.
Fonksiyon bittiği anda yok olur.
Buna local variable yani yerel değişken denir.
════════════════════════════════════════════════════════════════════
► GLOBAL DEĞİŞKENLER
#include <stdio.h>
int sayi = 100;
void yazdir()
{
printf("%d\n", sayi);
}
int main()
{
yazdir();
return 0;
}
Buradaki sayi değişkeni tüm fonksiyonlardan erişilebilir.
Buna global değişken denir.
Ancak profesyonel projelerde gereksiz global kullanımından kaçınılır.
════════════════════════════════════════════════════════════════════
► MİNİ PROJE - KARE HESAPLAMA
#include <stdio.h>
int kare(int sayi)
{
return sayi * sayi;
}
int main()
{
printf("%d", kare(8));
return 0;
}
ÇIKTI
64
════════════════════════════════════════════════════════════════════
► MİNİ PROJE - EN BÜYÜK SAYI
int buyukBul(int a, int b)
{
if(a > b)
{
return a;
}
return b;
}
Kullanım:
printf("%d", buyukBul(15,20));
ÇIKTI
20
════════════════════════════════════════════════════════════════════
► MİNİ PROJE - ÇİFT SAYI KONTROLÜ
int ciftMi(int sayi)
{
if(sayi % 2 == 0)
{
return 1;
}
return 0;
}
Kullanım:
if(ciftMi(8))
{
printf("Cift");
}
ÇIKTI
Cift
════════════════════════════════════════════════════════════════════
► YENİ BAŞLAYANLARIN HATALARI
HATA 1
int topla()
{
printf("10");
}
int döndürmesi gerekirken hiçbir şey döndürmüyor.
HATA 2
void test()
{
return 5;
}
void fonksiyon değer döndüremez.
HATA 3
topla(5);
Ama fonksiyon:
int topla(int a, int b)
şeklinde tanımlanmış.
Bir parametre eksik gönderilmiş.
════════════════════════════════════════════════════════════════════
► BÖLÜM ÖZETİ
Bu bölümde:
✓ Fonksiyon nedir
✓ main fonksiyonu
✓ void kullanımı
✓ Parametreler
✓ return mantığı
✓ Yerel değişkenler
✓ Global değişkenler
✓ Fonksiyon çağırma
✓ Mini projeler
konularını öğrendik.
Bir sonraki bölümde Diziler (Arrays) konusuna geçeceğiz ve yüzlerce veriyi tek bir yapı altında saklamayı öğreneceğiz.
║ C PROGRAMLAMA DİLİ EĞİTİM SERİSİ #6 ║
║ FONKSİYONLAR ║
║ (Mala Anlatır Gibi) ║
╚════════════════════════════════════════════════════════════════════╝
Önceki bölümlerde değişkenleri, operatörleri, karar yapılarını ve döngüleri öğrendik.
Artık program yazabiliyoruz.
Ama program büyüdükçe yeni bir sorun ortaya çıkıyor.
Kod karmaşası.
Örneğin:
Bir hesap makinesi yaptığını düşün.
Toplama işlemini 20 farklı yerde kullanıyorsun.
Her seferinde aynı kodları tekrar tekrar yazarsan:
• Kod uzar
• Hata yapma ihtimalin artar
• Düzenleme yapmak zorlaşır
• Program profesyonellikten uzaklaşır
İşte bu noktada fonksiyonlar devreye girer.
════════════════════════════════════════════════════════════════════
► FONKSİYON NEDİR?
Fonksiyon belirli bir görevi yerine getiren kod bloğudur.
Gerçek hayat örneği:
Kahve makinesi düşün.
Sen düğmeye basıyorsun.
Makine:
• Suyu ısıtıyor
• Kahveyi hazırlıyor
• Bardağa dolduruyor
Sen bunların hiçbirini tek tek yapmıyorsun.
Sadece komut veriyorsun.
Programlamada da durum aynıdır.
Örnek:
selamVer();
Bu satır çalıştığında bilgisayar gidip ilgili işi yapar.
════════════════════════════════════════════════════════════════════
► MAİN DE BİR FONKSİYONDUR
Şimdiye kadar sürekli gördüğümüz:
int main()
{
return 0;
}
aslında bir fonksiyondur.
Program ilk olarak main fonksiyonundan başlar.
Tüm programların giriş noktası burasıdır.
════════════════════════════════════════════════════════════════════
► İLK FONKSİYONUMUZ
#include <stdio.h>
void selamVer()
{
printf("Merhaba Dunya\n");
}
int main()
{
selamVer();
return 0;
}
ÇIKTI
Merhaba Dunya
Fonksiyon çağrıldı.
İçindeki kod çalıştı.
İşlem tamamlandı.
════════════════════════════════════════════════════════════════════
► VOID NEDİR?
Yeni başlayanların gözünü korkutan kelimelerden biridir.
Aslında anlamı çok basittir.
void = hiçbir şey döndürmeyeceğim
Örnek:
void mesaj()
{
printf("Merhaba");
}
Bu fonksiyon sadece ekrana yazı yazıyor.
Bir sonuç geri göndermiyor.
Bu yüzden void kullanılıyor.
════════════════════════════════════════════════════════════════════
► FONKSİYON ÇAĞIRMA
Fonksiyon tanımlamak başka şeydir.
Fonksiyonu çalıştırmak başka şeydir.
Tanımlama:
void selamVer()
{
printf("Merhaba");
}
Çağırma:
selamVer();
Tanımladığın halde çağırmazsan çalışmaz.
Bu yeni başlayanların sık yaptığı hatalardan biridir.
════════════════════════════════════════════════════════════════════
► PARAMETRE NEDİR?
Şimdi fonksiyonları güçlendirelim.
Bir pizza siparişi düşün.
pizzaYap();
yazarsan hangi pizza?
Kaşarlı mı?
Sucuklu mu?
Karışık mı?
Bilgi göndermen gerekir.
İşte fonksiyona gönderilen bilgilere parametre denir.
Örnek:
void selamVer(char isim[])
{
printf("Merhaba %s\n", isim);
}
Kullanım:
selamVer("Ahmet");
selamVer("Mehmet");
selamVer("Ayse");
ÇIKTI
Merhaba Ahmet
Merhaba Mehmet
Merhaba Ayse
Aynı fonksiyon.
Farklı veri.
Farklı sonuç.
════════════════════════════════════════════════════════════════════
► SAYI PARAMETRESİ
void kareAl(int sayi)
{
printf("%d\n", sayi * sayi);
}
kareAl(5);
ÇIKTI
25
Çünkü:
5 x 5 = 25
════════════════════════════════════════════════════════════════════
► BİRDEN FAZLA PARAMETRE
void topla(int a, int b)
{
printf("%d\n", a + b);
}
Kullanım:
topla(10,20);
ÇIKTI
30
Birden fazla bilgi gönderebilirsin.
Bu çok yaygın kullanılır.
════════════════════════════════════════════════════════════════════
► RETURN NEDİR?
Şimdi işin önemli kısmına geldik.
Bazı fonksiyonlar sadece işlem yapmaz.
Sonucu geri de verir.
Örnek:
int topla(int a, int b)
{
return a + b;
}
Buradaki return şunu söyler:
"Hesapladığım sonucu geri gönderiyorum."
════════════════════════════════════════════════════════════════════
► RETURN NASIL ÇALIŞIR?
#include <stdio.h>
int topla(int a, int b)
{
return a + b;
}
int main()
{
int sonuc;
sonuc = topla(5,7);
printf("%d", sonuc);
return 0;
}
ÇIKTI
12
Adım adım:
- topla(5,7) çağrılır
- Fonksiyon içine girilir
- 5 + 7 hesaplanır
- return 12 çalışır
- Sonuç geri döner
- sonuc değişkenine atanır
- Ekrana yazdırılır
► RETURN GELDİĞİNDE NE OLUR?
int test()
{
return 5;
printf("Merhaba");
}
Buradaki printf çalışmaz.
Çünkü return fonksiyonu sonlandırır.
Bu çok önemli bir kuraldır.
════════════════════════════════════════════════════════════════════
► YEREL DEĞİŞKENLER
void test()
{
int x = 10;
}
Buradaki x değişkeni sadece bu fonksiyonun içinde yaşar.
Fonksiyon bittiği anda yok olur.
Buna local variable yani yerel değişken denir.
════════════════════════════════════════════════════════════════════
► GLOBAL DEĞİŞKENLER
#include <stdio.h>
int sayi = 100;
void yazdir()
{
printf("%d\n", sayi);
}
int main()
{
yazdir();
return 0;
}
Buradaki sayi değişkeni tüm fonksiyonlardan erişilebilir.
Buna global değişken denir.
Ancak profesyonel projelerde gereksiz global kullanımından kaçınılır.
════════════════════════════════════════════════════════════════════
► MİNİ PROJE - KARE HESAPLAMA
#include <stdio.h>
int kare(int sayi)
{
return sayi * sayi;
}
int main()
{
printf("%d", kare(8));
return 0;
}
ÇIKTI
64
════════════════════════════════════════════════════════════════════
► MİNİ PROJE - EN BÜYÜK SAYI
int buyukBul(int a, int b)
{
if(a > b)
{
return a;
}
return b;
}
Kullanım:
printf("%d", buyukBul(15,20));
ÇIKTI
20
════════════════════════════════════════════════════════════════════
► MİNİ PROJE - ÇİFT SAYI KONTROLÜ
int ciftMi(int sayi)
{
if(sayi % 2 == 0)
{
return 1;
}
return 0;
}
Kullanım:
if(ciftMi(8))
{
printf("Cift");
}
ÇIKTI
Cift
════════════════════════════════════════════════════════════════════
► YENİ BAŞLAYANLARIN HATALARI
HATA 1
int topla()
{
printf("10");
}
int döndürmesi gerekirken hiçbir şey döndürmüyor.
HATA 2
void test()
{
return 5;
}
void fonksiyon değer döndüremez.
HATA 3
topla(5);
Ama fonksiyon:
int topla(int a, int b)
şeklinde tanımlanmış.
Bir parametre eksik gönderilmiş.
════════════════════════════════════════════════════════════════════
► BÖLÜM ÖZETİ
Bu bölümde:
✓ Fonksiyon nedir
✓ main fonksiyonu
✓ void kullanımı
✓ Parametreler
✓ return mantığı
✓ Yerel değişkenler
✓ Global değişkenler
✓ Fonksiyon çağırma
✓ Mini projeler
konularını öğrendik.
Bir sonraki bölümde Diziler (Arrays) konusuna geçeceğiz ve yüzlerce veriyi tek bir yapı altında saklamayı öğreneceğiz.