döngü etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
döngü etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

25 Ocak 2012 Çarşamba

PHP Döngü ve Diziler 2


"For" Donguleri(for loops)


For donguleri belirli bir kod parcasinin sizin istediginiz sayi kadar tekrar edilmesini saglar.Bir baska deyisle sizin istediginiz sayi kadar, dongunun "iteration" yani iterasyon islemine tabii tutulmasini saglar.



for (Sayaci Kur ; Sayaci Test Et ; Sayaca Ekle Veya Sayactan Cikart)


{


Bu parantezin icerisindeki kod grubunu uygula


}





Yukarida sozu gecen "Sayac" kavrami ile dongunun kac kez calistigini hesapliyoruz.Bu "sayac" ile ayni zamanda eger belirledigimiz sayi kadar cevrim gerceklesmis ise dongumuze son veriyoruz.


Aslinda "for" dongusu kurmak sartimiz icerisinde tanimladigimiz bu uc ogenin ucunude kullanmak zorunda degiliz.Bizler PHP ogrenmeye yeni basladigimiz icin orneklerimizde bu uc ogeyide kullanacagiz.


Eger bir satirda kendi ismimizi 10 defa yazdirmak istersek simdiye kadar ogrendigimiz bilgilerle bunu nasil yapariz?


$Sayac = 0
while ($Sayac<10)
{
echo "Benim adim Serkan !";
$Sayac =$Sayac+1


}


Yukaridaki dongunun kac defa calistigini tahmin edebilirimisiniz?Sizce dongu 9 defa mi calisti?Cunku 10'a gelmeden dongu durdumu?Acaba 11 kez mi calisti cunku biz $Sayac'i 0 dan baslattik ?


Evet 10 defa calismasini istedigimiz bir dongu icin cok fazla soru degil mi?Aslinda yukaridaki dongu tam olarak 10 defa calisir.


Iste bu tip sorunlari ortadan kaldirmak icin en guzel yontem "For" donguleri kullanmaktir.




Simdi ayni islemi birde "for" dongusu kullanarak deneyelim,


for ($Sayac =1 ; $Sayac<=10; $Sayac++)
{
echo "Benim adim Serkan!";
}


Gordugunuz gibi dongunun kac defa calisacagi konusunda bir endise duymaniza gerek yok.Hepsi sizin icin $Sayac ile veriginiz sayi kadar isletilecek.


Bu dongu yapisini kullanirken ornek olarak sayacin kendisinide ekrana yazdirabilirdik,


for ($Sayac =1 ; $Sayac<=10; $Sayac++)
{
echo $Sayac;
}


Ciktimiz soyle bir sey olacakti.12345678910


Not :Burada kullanilan "$Sayac++" ifadesi "$Sayac = $Sayac + 1" ifadesi ile aynidir.Yanlizca bir kisayol olarak bu notasyon kullanilmistir.


Simdi de bir uygulama yapalim.


1.Text editorunuzu acin ve asagidakileri yazin.


<HTML>
<HEAD></HEAD>
<BODY>
<FORM METHOD=POST ACTION="dinamik.php">
Kac tane cocugunuz var?
<INPUT NAME="Sayi" TYPE="TEXT">
<BR>
<BR>
<INPUT TYPE=SUBMIT>
<BR>
</FORM>
</BODY>
</HTML>




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


3.Yeni bir text dosyaysi acip asagidakileri yazin.


<HTML>
<HEAD></HEAD>
<BODY>
<FORM METHOD=GET ACTION="dinamik2.php">
<?php
for ($Sayac=0 ; $Sayac<$Sayi ; $Sayac++)
{
$Oteleme = $Sayac + 1;
echo "<BR><BR>Lutfen $Oteleme numarali cocugun adini giriniz : <BR>";
echo "<INPUT NAME=Cocuk [] TYPE=TEXT";
}


if ($Sayac==0) echo"Lutfen bir tusa basarak devam ediniz";
?>
<BR>
<BR>
<INPUT TYPE=SUBMIT>
</FORM>
</BODY>
</HTML>


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


5.Yeni bir text dosyasi acip asagidakileri yazin.


<HTML>
<HEAD></HEAD>
<BODY>
<?php
$Sayac=0;
echo "Cocuklarinizin isimleri :";
do
{
echo "<BR><BR>$Cocuk[$Sayac]";
$Kontrol = "$Cocuk[$Sayac]";
$Sayac = $Sayac + 1;
} while ($Kontrol != "");
if ($Sayac == 1) echo "Cocuk sayisi olarak sifir girdiniz program sonlaniyor";
?>
</BODY>
</HTML>


6.Bu dosyayi "dinamik2.php" olaraak kayit edin.


7."dinamik.html" dosyasini acip bir kac kez programi farkli degerler vererek deneyin

PHP Döngü ve Diziler 1


"do while" Donguleri


"do while" donguleri bir onceki konuda anlatilan "while" donguleri ile benzer islemleri yapmakla beraber bir onemli fark icermektedirler.Dongunun kontrol deyimi ,dongunun sonunda yer almaktadir.Bu durum dongu yapimizin, verdigimiz kosullar ne olursa olsun en az bir kere calisacagini gostermektedir.



do
{


Bu parentezlerin icindeki kod grubunu uygula


}


while (sartimiz dogrulaniyorsa); -- geriye don ve tekrar uygula





Yukarida acik sekilde goruldugu uzere dongumuz "sartlarimiz" ne olursa olsun "do" komutu ile baslayan dongumuzu bir kez isletecek ve "while" ile verilen satirdaki "sartlara" bakacaktir.Eger sart "dogruysa" (true) geriye donerek donguyu ilk yaptigi sekilde "do" ile basyalayan yerden itibaren bir kez daha isletecektir.


Hemen bir ornek verelim,


do
{


echo ("Kredi limitinizi astiginiz icin son aldiginiz urun sepetnizden cikarildi");
$AlisverisToplami = $AlisverisToplami - $SonAlinanUrun;
$SonAlinanUrun = $SonAlinanUrundenBirOncekiUrun;


}


while ($AlisverisToplami > $KrediLimiti);


Yukaridaki ornekte ozellikle bir hata yapilmistir.Hatamiz kodlarla ilgili degil mantikla ilgilidir.Gordugunuz gibi daha kullanicinin limiti asip asmadigina bakmadan ekrana bir uyari yazisini cikarilmasiydi.Belki musterimiz limiti asti belki asmadi.Ama bu sekilde "do while" dongusu ile yazdigimiz programlarda dikkatinizi cekmek istedigimiz nokta da iste buydu.Dongunun kontrol degiskeni dongu calismaya basladigi ilk seferden sonra kontrol edilir.Dolayisi ile her halukarda musteri ekranda bu uyariyi en az bir kere gorecektir.




Bu dongu yapisini o zaman nerede kullanacagiz?Simdi size bu dongu yapilarinin nasil ve nerede kullanilcagini biraz aciklamaya calisalim.Bir mantiksal ornekle baslayalim,


do
{
Bir sonraki kavsaga kadar arabayi sur;
}
while ($Kavsak != 10);


Ozet olarak eger PHP'nin sizin icin bir islemi kesin olarak yapmasini ve ayni zamanda bir kontrol mekanizmasi ile donatilmasini istiyorsaniz bu dongu tam sizin icin yaratilmis demektir :))


Bir baska ornekle bu dongunun kullanimini pekistirelim.simdi girdigimiz bir sayinin "asal" sayi olup olmadiginin arastirildigi bir uygulama yazalim.


1.Text editorunuzu acin ve asgidakileri yazin.


<HTML>
<HEAD></HEAD>
<BODY>
<FORM METHOD = POST ACTION="asalsayi.php">
Asalsayi olup olmadigini merak ettiginiz rakami giriniz:
<INPUT NAME="Sayi" TYPE="Text">
<BR>
<BR>
<INPUT TYPE=SUBMIT VALUE = "Buraya tiklayarak sayinin asal olup olmadigini ogrenin...">
<BR>
</FORM>
</BODY>
</HTML>


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


3.Yeni bir text dosyasi acip asagidakileri yazin.


<HTML>
<HEAD></HEAD>
<BODY>
<?php
$Bolunen = 2;
do
{


$Kalan = $Sayi%$Bolunen;
$Bolunen = $Bolunen + 1;
} while ($Kalan !=0 AND $Bolunen<$Sayi);


if (($Bolunen<$Sayi) || ($Sayi ==0)){


echo ("Sayiniz asal bir sayi DEGIL");
}


else {
echo ("Sayiniz ASAL bir sayidir.");
}


?>


</BODY>
</HTML>


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


5."asalsayi.html" dosyasini acip bir kez programi deneyin.