Fonksiyonlar
C’deki fonksiyonlar matematik fonksiyonlarına benzer. Bir sayı alırlar onun üzerinde işlem yaparlar ve bir sayı geri döndürürler. Örnek olarak sin(x) fonksiyonu bir açı alır ve bu açının sinüs değerini geri döndürür. C’de bir fonksiyonu kullanmak için öncelikle onu tanımlarız. Mesela bir sayının karesini döndüren bir fonksiyon:
int square(int x)
{
int y = x*x;
return y;
}
Yine bu fonksiyonun ne yaptığını satır satır inceleyelim. Burada ilk satırda önce int yazıp fonksiyonumuzun bir integer döndüreceğini belirtiyoruz. Daha sonra yazdığımız “square” fonksiyonumuzun adı oluyor. Son olarak bu satırda fonksiyonumuzun alacağı değerleri yazıyoruz. Bizim square fonksiyonumuz x adında bir integer alıyor, daha sonrada bu x in karesini gene integer olarak bize geri verecek.
Sonraki kısımda fonksiyonumuzun ne yapacağını yazacağız. Bu işlemler { … } parantezleri arasında yapılmalıdır. Şu anki örneğimiz de y isminde bir değişken tanımlıyoruz ve buna x*x (x in karesi) ni atıyoruz. Daha sonrada return y; diyerek y değişkenini geri döndürüp fonksiyonumuzu bitirmiş oluyoruz. Bu fonksiyonu içerecek örnek bir program yazalım
#include <stdio.h>
int square(int x)
{
int y = x*x;
return y;
}
int main(void)
{
int a, b, c;
a = 2;
b = square(5);
c = square(a);
printf("b is equal to %d.\n", b);
printf("c is equal to %d.\n", c);
return 0;
}
Yukarıda ki örneğimiz de yine önce stdio.h kütüphane mizi yükledik. Daha sonra square fonksiyonu nu tanımladık. main fonksiyonumuz da a, b, c isminde 3 tane integer tanımladık ve bundan sonra a ya 2 değerini atadık.
Bir sonraki satırda (b = square(5);) daha önceden tanımlamış olduğumuz square fonksiyonuna 5 değerini yollayıp, bu fonksiyonun döndürdüğü değeri (25) b ye eşitlemiş oluyoruz. Burada square(5) dediğimizde square fonksiyonu 5′i alıyor x e eşitliyor, y değerini hesaplıyor ve y değerini geri döndürmüş oluyor. Geri döndürdüğü bu değer de b sayısına eşitleniyor.
Bir sonraki adımda bu sefer direk 5 gibi bir tam sayı yollamıyoruz da bir değişken yolluyoruz. square(a) dediğimiz de a değerinin değişkeni (yani 2) square fonksiyonuna yollanıyor, bu değerin karesi hesaplanıp c ye yazılıyor.
Bir sonraki satırımızda b ve c değerlerini ekrana yazmış oluyoruz. Burada Hello world örneğinden farklı olan %d ifadesini kullanmamız. Eğer ekrana bir integer yazmak istiyorsak tırnak içindeki bölümde, integer ın yazılmasını istediğimiz yere %d yazıyoruz, tırnak işaretlerini kapadıktan sonra da virgül ile ayırıp değişkenimizi yazıyoruz. Tırnak içinde yazdığımız \n ise sayır atlanacağını gösteriyor.
Sonuç olarak bizim programımızın çıktısı:
b is equal to 25.
c is equal to 4.
oluyor.
Bu örnekte dikkat ederseniz main de aynı square gibi bir fonksiyon. Hiç bir değer almıyor (void yazdığımızda bir değer almadığını belirtmiş oluyoruz) ve integer döndürüyor. Döndürdüğü integer ise en sonda return 0; ile döndürdüğümüz 0 değeri oluyor. Fonksiyonumuz hiç bir değer döndürmesini istemiyorsak yine başına int değil de void koyarak belirtebiliriz.
void printHello(void)
{
printf("Hello world!\n");
}
Yukarıdaki örnekte hiç bir şey almayan ve döndürmeyen printHello isminde bir fonksiyon yazdık. Bu fonksiyonu şu şekilde çağırdığımızda
printHello();
ekrana yine Hello world! yazdırmış oluyoruz.
