Giris:
Bundan 15 yil once bulabileceginiz programlama dilleri ile
asagidakine benzer kodlar yazabilirdiniz..
10 PRINT "MERHABA DUNYA"
20 GOTO 10
Yukarida kod parcasi bir sonsuz dongu olusturup ekranada arka
arkaya "MERHABA DUNYA" yazisinin goruntulenmesini saglar.
Bu yazimizda size aradan gecen 15 yil icerisinde programlama
tekniklerinin nasil degisitigini anlatacagiz.Amacimiz sizi
"yazilim muhendisi" yapmaktan ziyade organize edilmis kodlari
yazmaniz icin bu yeni gelisen teknikleri daha iyi kullanmanizdir.
Moduler Yapi(Modularization)
Programi yazmaya baslamadan once hangi gorevlerin tam olarak
yerine getirilmesini istediginizi kafanizda canlandirmalisiniz.Ardindan
butun bir yapi icerisinden her kucuk gorev icin birer birer
kucuk gruplar olusturarak bir butunu "moduler" yapilar seklinde
parcalara bolmelisiniz.Zaten modern programlama tekniginde,tum
bu moduller ayri ayri hazirlanarak program taamamlandiginda
beraberce derlenmektedir.
Eger programinizin bir modulu kendine has ozel bir gorevi
yerine getiriyorsa,bu modulu dilediginiz sayida,istediginiz
zaman kullanilmak uzere programin icinden cagirabilirsiniz.Moduller
programin icerisinde yer alan siyah kutular gibidirler.Hangi
degerin girdigi yada sonucunda hangi ciktiyi aldiginiz onemli
degildir.Programin modulu verdiginiz gorevi tam olarak yerine
getiriyorsa arada gecen islemler programin genel yapisi icerisinde
cokda uzerinde durulacak konular degildir.
PHP veya diger programlama dillerinde programin boyle kucuk
yapilarina (modullerine) fonksiyon adi verilmektedir.
Fonksiyonlar(Functions)
Fonksyonlar,programci tarafindan yazilan ve belirli bir gorevi
yerine getirmesi beklenen kucuk kod parcalaridir.(code sections)
Daha onceki konularda gordugumuz gibi fonksiyonlar verilen
gorevi yerine getirmek icin "argument" adi verilen girdilerle
calismaktadir.Bu girdilerin sonunda fonksiyonda bir "cikti"
(output) meydana gelir.Belki bu "cikti" gene ayni fonksiyon
icerisinde bir "girdi" olacaktir.
Fonksiyonlar verilen herhangi bir argument degerini "parametre"
adi verilen yeni bir degiskene cevirebilirler.Daha sonra bu
olusan yeni degisken gene ayni fonksiyon icerisinde kullanilabilir.
Bizler fonksiyona verdigimiz degerlerin,fonksiyon icerisindeki
islemlerden gectikten sonra fonksiyonun cevabi dondurmesini
saglayabiliriz.
Fonksiyonlarin Tanimlanmasi ve Cagrilmasi
Bir fonksiyon tanimlamak icin bir isim vermeniz gereklidir.Bunu
yapmak icin,"function" komutunun arkasindan fonksiyona vermek
istediginiz ismi yazmalisiniz.Parametre isimleri fonksiyon
ismini yazdiktan sonra,parentezler icerisinde yazilmalidir.Fonksiyonun
govdesini olusturan kod parcasi iste bu islemler yapildiktan
sonra yazilmaya baslanmalidir.Asagida bir sekilsel ornek yer
almaktadir,
function fonksiyonunadi (parametreler)
{
fonksiyon icin tanimlanan kod paracasi buraya yazilacak
}
simdi bir orenek yaparak konuyu daha iyi anlayalim.
function vergi ($Geliriniz)
{
$Geliriniz = $Geliriniz - (($Geliriniz/100)*20);
return $Geliriniz
}
fonksiyon icerisinde yapilmasini istediginiz islemler icin
kac tane satir yazacaginiz konusunda herhangi bir sinirlama
yoktur.Burada onemli olan nokta "return" komutunun fonksyionun
sonunda yer almasidir.Zira bu komutla fonksiyona calismayi
bitirdiginizi ve artik ciktiyi kullanmak istediginizi belirtiyorsunuz.Fonksyion
artik "return" komutunun oldugu yerde bitmistir.
Her zaman icin bu sekilde hesaplama yapmaniz gerekmemektedir.ornek
olarak HTML kodlarini progrmda kullanmak ve bunlari fonksiyon
icerisinde tanimlamak itiyor olabiliriz.
function sayfa_baskisim ($Sayfa)
{
print "<HTML><HEAD><TITLE>Web siteme hos
geldiniz " .$Sayfa . "</TITLE></HEAD>";
print "<BODY>";
return;
}
Gordugunuz gibi yukaridaki kod icerisinde "return" komutu
fonksyionu sonlandirmak icin kullanilmistir.
Onemli bir nokta eger fonksyionun dondurdugu degeri (yani
ciktiyi) goruntulemek isterseniz "echo" komutunu kullanabilirsiniz.Zira
"return" ile cikti ekrana gonderilmeyecektir."return" hicbir
zaman bir degeri ekranda gostermez,yanlizca fonksiyonun ciktisini
(eger varsa) dondurur.
Bir fonksiyon icerisinde yer alan kod grubunu calistirmak
bilinen adiyla "fonksiyonu cagirmaktir".PHP icerisinde en
basit olarak bir fonksiyonu direkt olarak bir sayi gondererek
cagirabilirsiniz.
echo (vergi(1600));
veya daha onceden yaratilmis bir degisken adini kullanarak,
$Geliriniz = 1600;
echo (vergi($Geliriniz));
Biraz daha ayrintili yapmak istersek,
$Geliriniz = 1600;
$VergilendirilmisGeliriniz = vergi($Geliriniz);
echo ($VergilendirilmisGeliriniz);
eger fonksiyona birden fazla parametre saglamak isiyorsaniz,butun
parametreleri virgul ile ayrimak zorundasiniz,
function vergi($Geliriniz,$VergiYuzdesi)
{
$Geliriniz = $Geliriniz - (($Geliriniz/100)*$VergiYuzdesi);
return $Geliriniz;
}
Arik fonksiyonu duzgun bir sekilde cagirmak icin iki degeri
de fonksiyona saglamalisiniz.
echo (vergi(1600,30));
veya iki tane degiskeni,
$Geliriniz = 1600;
$VergiYuzdesi = 30;
echo (vergi($Geliriniz,$VergiYuzdesi);
veya bunlarin karisimi olrk bir tane degisken bir tane sayisal
deger,
$VergiYuzdesi = 30;
echo (vergi(1600,$VergiYuzdesi);
veya fonksiyona hic bir deger saglamadan direkt olarak,
function vergi()
{
$Geliriniz = 1600;
$VergiYuzdesi = 30;
$Geliriniz = $Geliriniz - (($Geliriniz/100)*$VergiYuzdesi);
return $Geliriniz;
}
Simdi aklinizda su soru olabilir.Biz gerekli tanimlamalari
nerede hngi sira ile yapacagiz.hemen cevabini verelim,
Eger parametre kullaniyorsak fonksiyonu once veya sonra tanimlamak
bir seyi degistirmez,
<?php <-----------------PHP'ye kodlari yazmaya basladigimizi
soyluyoruz.
$Geliriniz = 1600; <------------------Calistirma islemi
burada basliyor
$VergiYuzdesi = 30;
echo (vergi($Geliriniz,$VergiYuzdesi); <-----Fonksiyonumuzu
burada cagirdik
function vergi($Geliriniz,$VergiYuzdesi) <---------Fonksiyonu
buarada tanimladik
{
$Geliriniz = $Geliriniz - (($Geliriniz/100)*$VergiYuzdesi);
return;
}
?> <------------------PHP ye kodlari yazmayi bitirdigimizi
soyluyoruz
fakat biraz daha duzenli kod yazmak veya isi kolaylastirmak
istiyorsaniz asagidaki sekilde yazmakdaha mantikli gibi gozukuyor,aslinda
aralarinda hicbir fark yok
<?php <-----------------PHP'ye kodlari yazmaya basladigimizi
soyluyoruz.
function vergi($Geliriniz,$VergiYuzdesi) <---------Fonksiyonu
buarada tanimladik
{
$Geliriniz = $Geliriniz - (($Geliriniz/100)*$VergiYuzdesi);
return;
}
$Geliriniz = 1600; <------------------Calistirma islemi
burada basliyor
$VergiYuzdesi = 30;
echo (vergi($Geliriniz,$VergiYuzdesi); <-----Fonksiyonumuzu
burada cagirdik
?> <------------------PHP ye kodlari yazmayi bitirdigimizi
soyluyoruz
Eger yukaridaki programdan son satiri cikarirsaniz fonksyonumuz
hic bir zaman kullanilmayacaktir.Tabii ki bir fonksiyonu siz
cagirmadan PHP'nin sadece orada oldugu icin calistimrasi da
dusunulemezdi.Biz en son satirda,
echo (vergi($Geliriniz,$VergiYuzdesi);
satiri ile fonksiyona ihtiyacimiz oldugunu ve bizim verdigimiz
verilerle calismasini soyledik.
Tabii ki fonksiyonu her zaman bu sekilde bir defa calistirmak
zorunda degilsiniz.Dilediginiz sayida istediginiz fonksiyonu
cagirabilirsiniz,
$Geliriniz = 1600;
$VergiYuzdesi = 30;
echo (vergi(2500,$VergiYuzdesi);
echo (vergi($Geliriniz,30);
echo (vergi(2500,30);
echo (vergi($Geliriniz,$VergiYuzdesi);
seklindede yazabilirdik.
Simdi biraz daha ilginc bir ornek verelim ve nasil oldugunu
aciklamaya calisalim,
$Serkan = 1600;
$Esra = 30;
echo (vergi($Serkan,$Esra));
function vergi($Geliriniz,$VergiYuzdesi)
{
$Geliriniz = $Geliriniz - (($Geliriniz/100)*$VergiYuzdesi);
return $Geliriniz;
}
Yukarida $Serkan ve $Esra olarak iki degisken tanimlayip fonksiyona
bu degiskenleri kullanmasini soyledim.Bu degiskenlerin sakladigi
degerler otomatik olarak hesaplamaya baslanirken sirasiyla
$Geliriniz ve $VergiYuzdesi degerleri olarak alindi.Guzel
degilmi?
Fonksiyonlarin Kullanimi ile Ilgili Kesin Kurallar
Fonksiyon isimleri
programci tarafindan belirlenir
Fonksiyonlar parametreleri,programci
tarafindan belirlenen fonksiyon isminden sonra pazrentezler
icerisinde tanimlanir.
Eger birden fazla
parametreniz var is virgul ile ayirmak zorundasiniz.
Fonkiyoun icindeki
kod grubu,fonksiyon ismi ve paremetrelerden tanimlandiktan
sonra {} parentezleri arasina yazilmalidir.
Mutlaka"return"
komutu fonksiyon icinde,fonksiyonun islemlerden sonra dondurecegi
degeri fonksiyon disinda kullanmak amaciyla yazilmalidir.
Eger hicbir sonuc
dondurulmedi ise "return" komutu yanlizca fonksiyon sonunu
belirtmek icin gorev alir.
Fonksiyonlar ancak
cagrildiklari zaman execute edilirler.Cagrilmazlar ise program
icinde gorev almazlar.
Fonksiyonlari
programin akisi icinde once veya sonra cagirmaniz bir seyi
degistirmez.Yani fonksiyonu once yazip sonra cagirmaniza gerek
yoktur.Once cagirip sonrada fonksiyonu tanimlayabilirsiniz.
Fonksiyonu istediginiz
kadar sayida cagirabilirsiniz.
Simdi bir uygulamali ornek yapalim
1.Text editorunuzu acip asagidaki kodlari yazin.
<HTML>
<HEAD></HEAD>
<BODY>
Seres Otelcilik Online Web Sayfasi'na Hosgeldiniz
<FORM METHOD=GET ACTION="tatil3.php">
Tatil icin nereye gitmeyi dusunuyorsunuz?
<BR>
<BR>
<INPUT NAME="Sehir" TYPE = "Radio" VALUE="Istanbul">
Istanbul
<INPUT NAME="Sehir" TYPE = "Radio" VALUE="Ankara">
Ankara
<INPUT NAME="Sehir" TYPE = "Radio" VALUE="Izmir">
Izmir
<BR>
<BR>
Kac yildizli otelde kalmak istiyorsunuz?
<INPUT NAME="Yildiz" TYPE = "Radio" VALUE="Uc">
Uc Yildizli Otel
<INPUT NAME="Yildiz" TYPE = "Radio" VALUE="Dort">
Dort Yildizli Otel
<BR>
<BR>
<INPUT TYPE=SUBMIT>
</FORM>
</BODY>
</HTML>
2.Bu dosyayi "tatil3.html" olaraak kayit edin.
3.Yeni bir text dosyaysi acarak asagidaki kodlari yazin.
<HTML>
<HEAD></HEAD>
<BODY>
Seres Otelcilik Online Web SONUC Sayfasi
<BR>
<BR>
<?php
function Hesaplama ($Fiyat,$SehirFaktoru,$YildizFaktoru)
{
return $Fiyat = $Fiyat * $SehirFaktoru * $YildizFaktoru;
}
$fiyat = 500;
$YildizFaktoru = 1;
$SehirFaktoru = 1;
$SehirYildiz = $Sehir . $Yildiz;
switch ($SehirYildiz) {
case "IstanbulUc":
$SehirFaktoru = 2;
break;
case "IstanbulDort":
$SehirFaktoru = 2;
$YildizFaktoru = 2;
break;
case "AnkaraUc":
$SehirFaktoru = 3.5;
break;
case "AnkaraDort":
$SehirFaktoru = 3.5;
$YildizFaktoru = 2;
break;
case "IzmirUc":
break;
case "IzmirDort":
$YildizFaktoru = 2;
break;
default:
$SehirFaktoru = 0;
echo "Geriye donup tekrar deneyiniz";
}
if ($SehirFaktoru <> 0)
{
echo "$Sehir sehrinde 1 hftalik tatil ". "$" . Hesaplama($Fiyat,$SehirFaktoru,$YildizFaktoru);
}
?>
</BODY>
</HTML>
4.Bu dosyayi "tatil3.php" olarak kayit edin.
5."tatil3.html" dosyaysini acip bir kac deneme yapin.
Ornek Dosyalar
http://www.turk-php.com/ornekler/tatil3.html
http://www.turk-php.com/ornekler/tatil3.php
Her turlu gorus ve onerinizi lutfen simdi bu sayfanin yayinlanadigi
forumda belirtiniz...
Sagliicakla Kalin
Not : Ilk defa PHPEd'i bu makaleyi yazarken kullandim.Daha
once 4-5 saat arasi suren boyle bir makaleyi yazmak simdi
1-2 saat arasinda bitiyor.Degisken isimlerini kontrol et,sayfalari
server'a upload et ivir zivir'dan kil tuyden kurtuldum.Tessekkurler
Ergin Soysal,ellerine saglik...
http://www.soysal.com/
|