Fonksiyonun Tan�mlanma Bi�imi Fonksiyonun Prototipi �zyineleme (Recursive) Fonksiyonlar
Problem ��zmenin ilkelerinden biri problemi m�mk�n oldu�u kadar �ok par�aya b�lmektir. Daha sonra bu par�alar ba��ms�z olarak d���n�l�p ��z�mleri elde edilebilir. C'de bu b�lme i�lemi fonksiyon kullanarak yap�l�r.
�rnek
: Bir tamsay�n�n fakt�riyelini hesaplayan fonksiyon
main() { int i; prinf(�Say�y� giriniz �); scanf(�%d�, &i); printf(�%d\n�, fakt(i)); } |
long fakt ( int n) { int j; long f = 1; for ( j = 2; j < =n; j = j + 1), f = f * j; return f; } |
1. Fonksiyonun Tan�mlanma Bi�imi
d�n��_tipi fonksiyon_ad�(parametreler)
{
yerel tan�mlamalar
deyimler
}
d�n��_tipi: E�er fonksiyon bir de�er geri g�nderecek ise de�erin tipini belirtir. Belirtilmez ise int kabul edilir. E�er fonksiyon de�er g�ndermeyecek ise d�n��_tipi yerine void yaz�l�r.
fonksiyon_ad�: Fonksiyon �a��r�l�rken kullan�lacak ad (belirleyici).
parametreler: Fonksiyon i�in gerekli de�erleri i�erir. Her parametre de�i�ken tan�mlar gibi tan�mlan�r. Her birinin aras�nda ',' kullanmak gerekir.
yerel tan�mlamalar: Bu fonksiyonu �zg�(de�i�ken,sabit) tan�mlamalar.
E�er fonksiyon bir de�er g�nderecek ise bu return deyimi ile yap�l�r.
return de�er;
Tan�mlana bir fonksiyonun ana mod�l i�erisinde prototipinin yaz�lmas� gerekir. Prototip ile fonksiyonun d�n�� de�eri ve ald��� parametrelerin tipleri tan�mlan�r. Bu bilgiye g�re C derleyicisi fonksiyon �a��r�ld���nda de�erlerin uygun oldu�unu s�nar.
int kub(int) kub fonksiyonu int bir de�eri al�r ve yine int bir de�er �retir.
�rnek
: �� say�dan en b�y���n� veren fonksiyon.Girdi : �� tane tamsay�
��kt� : girdilerin en b�y���
int max(int s1, int s2, int s3)
{
if (s1>s2 && s1>s2)
return s1;
else
if (s2>s3)
return s2;
else
return s3;
}
Bu fonksiyonu kullanan bir program
#include <stdio.h>
main()
{
int max(int, int, int);
clrscr();
printf("%d \n", max(1,2,3));
printf("%d \n", max(14,8,12));
printf("%d \n", max(1,6123,3123));
}
...
fonksiyonun tan�m blo�u
...
Genel (global) de�i�ken : Her yerde (main ve di�er fonksiyonlar) ge�erlidir, de�erine eri�ilebilir. Program�n en ba��nda, main fonksiyonunun d���nda tan�mlan�r.
Yerel (local) de�i�ken : Sadece tan�mland��� mod�lde ge�erlidir, de�erine eri�ilebilir. Mod�l i�inde tan�mlan�r.
int a; /*t�m fonksiyonlardan de�erine eri�ilebilir, de�eri de�i�tirilebilir. (global) */
main()
{
int b; /* sadece main fonksiyonu i�erisinden eri�ilebilir (local ) */
......
}
3. �zyineleme (Recursive) Fonksiyonlar
Kendini �a��ran fonksiyonlard�r.
�rnek
: Faktoriyel hesab�long fakt(long i) /* fakt = i! */
{
if (i<2)
return 1;
else
return i*fakt(i-1);
}
�rne�in n=4 i�in fonksiyonun kendisini �a��rd��� sat�r ��yledir:
4 * fakt(3), 3 * fakt(2), 2 * Fakt(1)--------------- 24 = 4 * 6 <-- 3 * 2 <-- 2 * 1