Bu yazımızda PHP programlama dilinde fonksiyon yazımı, fonksiyon çeşitleri ve kullanımını öğreneceğiz.
PHP kodlarınızı http://www.compileonline.com/execute_php_online.php adresinde deneyebilirsiniz.
Öncelikle fonksiyon çeşitleri ile işe başlayalım. Programlamada fonksiyonlar 3 kategoride incelenebilir:
Bir fonksiyon aynı anda birden fazla kategoriye dahil olabilmektedir.
Fonksiyonlar özette belirttiğimiz gibi, istenilen işlemlerin belirli bir isim altında kaydedilip, daha sonra kullanılmasına imkan tanıyan yapılardır.
Yapı:
function fonksiyon_adi([parametreler])
{
//yapilacak işlem(ler);
//return sonuc;
}
Bu tür fonksiyonlar verilen / önceden tanımlanan değerler üzerinde bazı işlemler yapıp, işlemler sürecinde bazı değişkenlerin değerlerini değiştirme, ekrana çıktı verme gibi işlemler yaparlar. Değer gönderme gibi bir durumları olmadığından değişkenlere atanamazlar.
Örnek 1:
function merhabadunya()
{
echo “Merhaba Dünya”;
}
Bu örnekteki fonksiyonumuz, Hizmet Döndüren, Parametre Almayan bir fonksiyondur (Function with no arguments and no return value).
Bir PHP sayfasında;
… önceki kodlar …
merhabadunya();
… sonraki kodlar …
şeklinde kullanılır.
Bu fonksiyonların amacı; verilen / daha önceden tanımlanan değerler ışığında bazı işlemleri gerçekleştirip, bu işlemlerin sonucunu başka bir değişkene göndermektir. ECHO deyimi ile birlikte ekrana çıktı almak için kullanılabileceği gibi, doğrudan bir değişkene değer olarak da atanabilir.
Örnek 2:
function topla($a,$b)
{
$c=$a+$b;
return $c;
}
Bu fonksiyonumuz da Değer Döndüren Parametre Alan bir fonksiyondur (Function with arguments and return value).
Bir PHP sayfasında;
… önceki kodlar …
echo topla(3,5);
… sonraki kodlar …
yada
… önceki kodlar …
$c=topla(3,5);
echo $c;
… sonraki kodlar …
şeklinde kullanılır.
Bu tip fonksiyonlar, programın özelliğine göre kendi kendini tekrar çağırarak bir nevi döngü oluşturan fonksiyonlardır. Faktöryel, Fibaonacci Saydırma, Asal Sayı Bulma, Bölme, Çarpma, Üs Alma bu türe örnek verilebilir.
Örnek 3:
function usal($sayi,$us)
{
if($us>=1) return $sayi*usal($sayi,$us-1);
else if($us<0) return “undefined”;
else return 1;
}
Bu örnekteki fonksiyonumuz, $sayi değerini, $us değeri bir azaltılmış fonksiyonun sonucu ile çarpıyor. Burada dikkat edilmesi gereken noktalardan bir tanesi IF yapılarıdır. Bu yapılar, fonksiyonun ne zaman ne yapacağını belirlemektedirler. İkinci nokta ise return deyimidir. Fonksiyon return deyimini çalıştırdığı anda sona erer. Bu nedenle return deyiminin nerede kullanılacağına dikkat edilmesi gerekmektedir.
else if($us<0) return “undefined”; satırında; $us değerinin 0’dan küçük olması durumunda tanımsız bir değer gönderiyoruz.
else return 1; satırında üssü 0 olan sayının değeri 1 olduğu için 1 değerini gönderiyoruz.
Fonksiyonun çalışmasını tabloda gösterecek olursak;
Fonksiyon | Sayı | Üs | Return | Açıklama |
usal(3,3) | 3 | 3 | 3*usal(3,2); | //usal(3,2)=9 olduğunu alt satırda görüyoruz. Bu nedenle Return=27 olur. |
usal(3,2) | 3 | 2 | 3*usal(3,1); | //usal(3,1)=3 olduğunu alt satırda görüyoruz. Bu nedenle Return=9 olur. |
usal(3,1) | 3 | 1 | 3*usal(3,0); | //usal(3,0)=1 olduğunu alt satırda görüyoruz. Bu nedenle Return=3 olur. |
usal(3,0) | 3 | 0 | 1 | //else return 1; satırından dolayı Return=1 olur. |
Başka bir örnekle devam edelim:
Faktöryel: 1’den kendisine kadar olan sayıların çarpımına verilen addır. Ünlem (!) işareti ile tanımlanır.
3!=1*2*3=6
7!=1*2*3*4*5*6*7=5040 şeklindedir.
function faktoryel($sayi)
{
if($sayi<0) return false;
else if($sayi==0) return 1;
else return $sayi*faktoryel($sayi-1);
}
Bir sonraki örneğimiz, 50’den küçük Fibonacci sayılarını ekrana yazalım.
Fibonacci Sayıları: ilk iki sayısı 1 ve 1 olan, her sayının kendisinden önceki iki sayının toplamına eşit olduğu sayı dizisidir.
İlk 6 elemanı: 1, 1, 2, 3, 5, 8
$a=1;
$b=1;
$c=0;
while($a<50)
{
fibo();
}function fibo()
{
global $a,$b,$c; //global deyimi fonksiyon dışındaki değişken üzerinde işlem yapabilme imkanı sağlar.
echo $a.”-“;
$c=$a+$b;
$a=$b;
$b=$c;
}
Bir sonraki örneğimiz, herhangi bir sayının Asal Olup Olmadığını belirleme.
Asal Sayı: Kendisi ve 1 dışında başka herhangi bir sayıya bölünemeyen sayılardır. Asal sayıyı belirlemek için farklı yaklaşımlar mevcuttur. Biz, sayıyı kendisinden küçük tüm sayılara bölerek kontrol edeceğiz.
function asalmi($sayi)
{
if($sayi<1) return false; //FALSE değeri, mantıksal yanlış anlamına gelir.
else if($sayi==1) return true; //TRUE değeri, mantıksal doğru anlamına gelir. Bölen 1 ise
else
{
//1 eksiğinden başlatıyoruz, çünkü kendisine kesinlike bölünür.
for($i=$sayi-1;$i>1;$i–) //1’e bölmüyoruz, çünkü tüm sayılar 1’e bölünür.
{
if($sayi%$i==0) return false; //eğer bölünüyorsa ASAL DEĞİLdir.
}
return true; //eğer döngüden çıkabilmişse hiçbir sayıya bölünmemiş demektir, yani ASALdır.
}
}
$sayi=13;
if(asalmi($sayi)) echo “$sayi sayısı ASALdır”;
else echo “$sayi sayısı ASAL DEĞİLdir”;
]]>