Fonksiyonlar
Fonksiyonlar
Fonksiyonlar, programcının programını modüler hale getirmesini sağlar. Bu sayede, önceden yazılmış fonksiyonlar bloklar halinde birbirleri ardına yerleştirilerek yeni programlar yazılabilir. Yazılımın yeniden kullanılabilmesi, nesneye yönelik programlamanın temel etmenlerindendir. Fonksiyona iyi isim verilir ve fonksiyon iyi tanımlanırsa, programlar belirli işleri yapan standartlaştırılmış fonksiyonları kullanarak yazılabilir.
Fonksiyon Tanımları
Şu ana kadar yazdığımız tüm programlar, standart kütüphane fonksiyonlarını işlerini yaptırmak için çağıran main adında bir fonksiyon içeriyordu. Şimdi ise programcıların kendi fonksiyonlarını nasıl yazdıklarını inceleyeceğiz.
geri dönüş tipi fonksiyonun ismi ( parametre listesi )
{
bildirimler
ifadeler
}
#include <stdio.h> int kare (int ); // fonksiyonun ilk hali (prototipi) int main() { int x; for (x=1;x<=10;x++) printf("%d" ,kare( x )); printf("\n"); return 0; } // Fonksiyon tanımı int kare (int y) { return y*y; }
int main( )
Daha önce bahsetmiş olduğumuz main fonksiyonu tüm diğer alt fonksiyonların çağrıldığı veya ana işlemlerin yapıldığı fonksiyondur.
int kare( int );
kare adında bir alt fonksiyonun prototipidir, yani değişken tanımlama işlemi gibic( int x ) fonksiyon kullanılacağı zaman tanımlanması gerekir. Prototipin ilk başında olan int fonksiyonun tamsayı (decimal) tipinde bir değer döndüreceğini ( int ) ise fonksiyonun içine gönderilen değerin tamsayı olacağı anlamına gelmektedir.
printf ( “ %d ” , kare ( x ) );
Fonksiyon çağırma işlemidir. kare ( x )ifadesi fonksiyonun içine x değişkenini yollamış ve çıkan sonuç kare( x ) ifadesinin içinde depolanmıştır. Depolanan ifade printf (“%d”) ile ekrana yazdırılmıştır.
int kare ( int y ) { }
İfadesi fonksiyonun ne işlem yapacağının yazıldığı yerdir. Çağrıldığı yerden x olarak gönderilen değişken fonksiyonun içinde y olarak değişmiş ve çağrıldığı yere y değişkeni olarak gitmiştir.
return y*y;
Daha önce anlatmış olduğumuz return 0 ifadesi değer döndürmüyordu main fonksiyonu içinde görüleceği gibi, fakat tanımlanan fonksiyonda return y*y fonksiyonun çağrıldığı yere y*y değerini döndürme görevini üstlenir.
Fonksiyon Prototipleri
int maksimum ( int, int, int );
Bu fonksiyon prototipi, maksimum fonksiyonunun int tipinde 3 argüman alacağını ve sonuç olarak int tipinde bir sonuç döndüreceğini belirtir.
void maksimum (int,int,int) ;
Bu fonksiyon prototipi,maksimum fonksiyonunun int tipinde 3 argüman alacağını ve sonuç olarak bir değer döndürmeyeceğini belirtir. void fonksiyonuna geri dönüş değeri ürettirirsek yani retun y*y gibi bir değer döndürmeye çalıştığımızda hata verecektir.
void maksimum ( void );
Bu fonksiyon prototipi, maksimum fonksiyonunun argüman almayacağını ve sonuç olarak bir değer döndürmeyeceğini belirtir.
int maksimum (void);
Bu fonksiyon prototipi, maksimum fonksiyonunun argüman almayacağını ve sonuç olarak tamsayı tipinde bir değer döndüreceğini belirtir.
float maksimum ( char );
Bu fonksiyon prototipi,maksimum fonksiyonunun char tipinde bir argüman alacağını ve sonuç olarak float tipinde bir değer döndüreceğini belirtir. Bu şekilde C programlamada değişkenlerle birçok prototip tanımlanabilir.
#include <stdio.h> int kare( int ); void kare1 (int); void kare2 (void); int kare3 (void); int main( ) { int x=2; printf("int kare (int) %d dir \n", kare(x)); kare1(x); kare2(); printf("int kare3 (void) %d dir \n", kare3()); return 0; } /*Fonksiyon tanımı*/ int kare( int y ) { return y + y; } void kare1(int z) { printf("void kare1 (int) %d dir\n ",z/z); } void kare2 (void) { printf("Deger Donmedi\n"); } int kare3 (void) { int m=5; return m; }