Anasayfa > Programlama > PHP > Zekice Kod Yazmak - BOLUM 5
Makaleye verilen puanlar Makaleye verilen puanlar

Zekice Kod Yazmak - BOLUM 5




Ice Dogru Egilmek veya Fonksiyonun Kendi Kendisini Cagirmasi(Recursion)

Fonksiyon'un kendi kendisini cagirmasi islemi programcilik literaturunde "dikenli bir konu" olarak
tanimlanir.Bu cogu zaman programlamayi yeni ogrenen insanlarin basinin donmesine sebep olur.En cok
kullanildigi alan matematik islemlerdir ve islem sayisini azaltmak icin oldukca faydalidir.

Sonsuz bir dongu yaratmamak icin,ayni "while" dongulerinde oldugu gibi bir degiskeni devamli test
etmelisiniz.Bu degisken verdigimiz sinir sartlarina fonksiyon her calistiginda biraz daha
yaklasmali ve asla bu degiskenin degisim sureci kontrol disina cikmamalidir.

Simdi derin bir nefes ve mutfaktan bir kahve alip gelin.Yazinin bundan sonraki kisiminda biraz
basinizi dondurecegiz :)

Yapacagimiz islem bir sayinin "faktoryelini" hesaplamak icin ,fonksiyonun kendi kendisini cagiracak
sekilde yapilandirip sonuca ulasmak.Bu islem dongulerle de yapilir ama o zamanda size bu konuyu
ogretemeyiz :)

Baslayalim,

Faktoryel islemi asagidaki formulle tanimlanir :

n! = n * (n-1) * (n-2) * ........(n-(n-2))*1

Yani eger "10" sayisinin "faktoryelini bulmak isiyorsak yapacagimiz islem,

10! = 10*9*8*7*6*5*4*3*2*1

sayilarini carpmaktir.

Isterseniz ornegimize hemen gecelim ve size uygulamali olarak programi yazip ardindan nasil
calistigini anlatayim.

1.Text editorunuzu acin ve asagidakileri yazin.

<HTML> <HEAD></HEAD> <BODY> <FORM METHOD=GET ACTION="faktoryel.php">
Hangi sayinin faktoryelini hesaplamak istiyorsunuz?

<INPUT NAME="Sayi" TYPE="Text"> <BR> <BR> <INPUT TYPE=SUBMIT> </FORM>
</BODY> </HTML>

2.Bu dosyayi "faktoryel.html" olarak kayit edin.

3.Yeni bir text dosyasi acin ve asagidakileri yazin.

<?php function faktoryel ($Sayi) { if ($Sayi <= 1) return 1; else return $Sayi* faktoryel
($Sayi-1); }
echo "Girdiginiz sayi: " . $Sayi . " icin faktoryelimiz" . (faktoryel($Sayi)); ?>

4.Bu dosyayi "faktoryel.php" olarak kayit edin.

5."faktoryel.html" dosyaysini acip bir kac deneme yapin.

Ornek Dosyalar

http://www.turk-php.com/ornekler/faktoryel.html

http://www.turk-php.com/ornekler/faktoryel.php
Program nasil calisiyor?

Bu matematiksel islem cok basit oldugu icin programimiz kisa oldu.Eger daha ayrintili bir ornek
yapmak isteseydik tum zamanimizi ve kaynaklarimizi buna ayirmamiz gerekirdi.Bizler burada yanlizca
boyle bir konunun varligindan sizi haberdar etmek ve basitce bu yapiyi gostermek icin bu yaziyi
yaziyoruz.

Daha profosyonel matematiksel islemler icin sizin kaynkalara goz atmaniz gereklidir.

Programin baslangicinda "fonksiyonu" tanimlayip, $Sayi ile "argument"in ne olacagini belirledik.
<?php function faktoryel ($Sayi) {

Daha sonra kullanicin girdigi sayi degerinin sifir veya 1 olup olmadigina baktik.
if ($Sayi <= 1) return 1;

Eger girilen sayidan memnun olduysak program calismaya devam ediyor.
else return $Sayi* faktoryel ($Sayi-1);

Diyelimki kullanici web sayfasindan "3" degerini girdi.
3 * faktoryel(2) satiri uygulanacaktir.

Ardindan ,

3 * 2 * faktoryel(1) satiri uygulanacaktir.

Bu islem $Sayi degiskenin degeri "1" oluncaya kadar devam edecektir.Zaten bu noktada fonksiyonun
disina cikilip basit bir bilgi mesaji ekrana yazilmaktadir.

Tabii ki boyle bir programi yazip calisir hale getirmek oldukca basittir.Diger matematiksel
islemler icin sorunun cozumu her zaman bu kadar basit olmayacaktir.

Bir Dosyayi "Include" Etmek

Fonksiyonlar konusunda anlatacaklarimizi tamamladik.Simdi sira cok onemli baska bir konuyu
"include" komutunun kullanimi ve ana amaclarini anlatmaya geldi.

Cok ayrintili olarak aciklayacagimiz bu konuyu iyi ogrenmenizi tavsiye adiyoruz.Zira PHP
programciliginin temel taslarindan bir tanesi bu komutun duzgun kullanilmasidir.

"Include" komutu ingilizce "icermek" anlamina gelir.PHP icerisinde kullanim amaci bir dosyayinin
icerigini bir baska dosyaya eklemektir.

Text,HTML,Kod ve PHP scriptlerini bir baska dosya icerisine "include" komutunu kullanarak
ekleyebilirsiniz.Kullanim formati su sekildedir :

include ("DosyaAdi");

ornek vermek istersek,

include ("test.txt");

Eger "test.txt" dosyasi "Merhaba" kelimesini iceriyorsa, artik bu kelime HTML'nin bir parcasi
olarak web sayfasi icinde goruntulenecektir.

Text dosyamizin icerigi asagidaki gibi bir makalede olabilir.
Define problem : ETI sells cookies, biscuits and crackers throughout Turkey. Company has a big
distribution network all of the country. There are a lot of little stores which sell ETI product.
They have seven main region and seven region managers. Every region has district managers who has
several salesman. Some areas are not convenient for travelling.

Yukaridaki yaziyi kolay olsun diye bir odevimden aldim.Ne yazik ki Turkce bir dosyam yok :)

Sonucta bu yazi yukaridaki "Merhaba" orneginde oldugu gibi "test.txt" dosyasi icerisine
yerlestirilirse aynen burada gorundugu sekilde web sayfasinda goruntulenecektir.

"include" komutunu degiskenlerle beraber kullanabilirsiniz.

Ornek vermek istersek,

$DosyaAdi = "1"; include ("test" . $DosyaAdi . ".txt");

sonucta dosya adi "test1.txt" olan text dosyasi web sayfaniz icine eklenmeye calisilacaktir.(Tabii
ki boyle bir dosya varsa)

"include" komutunun kullanimina iliskin bazi detaylar

Text dosyalari web sayfalarina eklenebilir.

Degiskenler,sabitler,ayrintili hata mesajlari "include" edilecek dosya icerisinde tanimlanabilir.

HTTP degiskenlerini bu sekilde sayfaniza ekleyebilirsiniz.

Farkli bir PHP scriptini calistirabilirsiniz.(Execute a seperate PHP script)

Cok genel kullandiginiz fonksiyonlari,her seferinde yazmak yerine bir dosya icerisine yerlestirip
"include" edebilirsiniz.Bu sizi her program sayfasi fonksiyonlari tekrar yazmak derdinden
kurtarir.
Uygulamali bir ornek yapalim ve konuyu daha iyi anlayalim,

1.Text editorunuzu acip asagidakileri yazin "Dosya1 sayfaniza eklendi."

2.Bu dosyayi "dosya1.txt" olarak kayit edin.

3.Yeni bir text dosyasi acip asagidakileri yazin.

"Dosya2 sayfaniza eklendi"

4.Bu dosyayi "dosya2.txt" olarak kayit edin.

5.Yeni bir text dosyaysi acip asagidakileri yazin.

<HTML> <HEAD></HEAD> <BODY> <FORM METHOD=GET ACTION="ekle.php"> Hangi
dosyanin sayfaniza eklenmesini istiyorsunuz?

<SELECT NAME="Secim"> <OPTION VALUE="1">Birinci Dosya</OPTION> <OPTION
VALUE="2">Ikinci Dosya</OPTION>

</SELECT> <BR> <BR> <INPUT TYPE=SUBMIT> </FORM> </BODY>
</HTML>

6.Bu dosyayi "ekle.html" olarak kayit edin.

7.Yeni bir text dosyasi acip asagidakileri yazin.(Merak etmeyin bu son islem) <HTML>
<HEAD></HEAD> <BODY> <?php if ($Secim<>"") //Secim bos degilse demek bu
satir <> isareti esit degil "" isaretleri ise bos anlamindadir.

{ include ("dosya" . $Secim .".txt"); }
?> <BR> Iste size ornek birkac yazi bu yazilarda programa ait </BODY> </HTML>

8.Bu dosyayi "ekle.php" olarak kayit edin.

9."ekle.html" dosyasini acip bir kac deneme yapin.

Ornek Dosyalar

http://www.turk-php.com/ornekler/ekle.html

http://www.turk-php.com/ornekler/ekle.php

http://www.turk-php.com/ornekler/dosya1.txt

http://www.turk-php.com/ornekler/dosya2.txt
Bu yazimiza bir bolum daha sonra eklenecektir.(Include komutunun ayrintili anlatimi ve genel
kullanimi.Yaklasik iki sayfa kadar olacak.Bu yaziyi arada bir kontrol etmeyi unutmayin.Simdilik
konuya bir giris yaptik)
Her turlu gorus ve onerinizi simdi bu sayfanin altinda yer alan bolumde belirtebilirsiniz.

Serkan Hadi Ceylani serkan@turk-php.com
Program: http://www.turk-php.com/ornekler/ekle.html

 




Bu makale hakkında ek bilgi eklemek için buraya tıklayınız

Bu makalenin yazar yada kaynağını bildirmek için tıklayınız.

Digg this Post! Add Post to del.icio.us Bookmark Post in Technorati Furl this Post!
Eklenme tarihi: 3-2-2006  Okunma: 2397

Bu Makaleye Verilen Puan:    Makaleye verilen puanlar Makaleye verilen puanlar
Bu Makaleye Puan Ver  

Bölüm Başlık Kullanıcı Yorumları


Bu makaleye yorum gönderilmemiş, ilk yorumu sen gönder !
Reklam Netinternet
Bazı hakları saklıdır: İçeriğin editör ve yazarlarımız tarafından oluşturulan kısımları ve site tasarımının hakkı saklıdır.  Bu sayfa en iyi 1280x1024 ve 1024x768 çözünürlükte izlenir.
Powered by BilgiPortal v2.2
Emlak Yorumlar Müzik estetik