Phphocasi.com.tr sitemiz üzerinden anlattığımız/yayınladığımız PHP Derslerimizde bu derste For Döngüsü Ve İç İçe Döngüler konusunu anlatacağım. For döngüsü de while döngüsü gibi bizim birden fazla çalıştırmak istediğimiz kod bloğunu tekrarlatmaya yarar. Döngüler teknik olarak aynı işi yaparlar ama kullanım şekilleri farklıdır. Hangi döngüyü kullanacağınız tamamen size bağlı. For döngüsünü öğrendikten sonra İşlerimizi biraz daha ileri seviyeye taşıyıp iç içe döngü kullanımını göreceğiz.
For Döngüsü Yapısı
For döngüsünün yapısı aşağıdaki gibidir.
<?php for($baslangicDegeri;$kosul;$donguDegiskeniIslemi) { // çalışacak kodlar } ?>
While döngüsünde döngü değişkenimize döngüden önce bir değer veriyorduk ve döngü içinde artırma azaltma gibi işlemleri yapıyorduk. For döngüsünde ise for yazdıktan sonra parantezler içine döngü değişkenimizin başlangıç değeri, döngü koşulumuz ve döngü değişkeni işlemi(artır azalt,çarp böl) yapıyoruz. Küçük bir örnek verecek olursak:
Örneğin: 1-10 arasındaki sayıların toplamını ekrana yazdıran bir örnek yapalım.
<?php $toplam = 0; for($i=1;$i<=10;$i++) { $toplam+=$i; } echo "1-10 arasındaki sayıalrın toplamı : $toplam"; ?>
Kod yapımızı açıklayacak olursak:
- Toplamanın etkisiz elemanı olan 0 ı $toplam değişkenine atadık.
- daha sonra $i diye bir döngü değişkeni oluşturup bunun başlangıç değerini 1 olarak tanımladık.
- $i<=10 koşulumuzu yazdık ve döngü değişkenimizi 1er 1er artırdık.
- $toplam değişkenimizle $i değişkenimizin o anki değerini topladık.
- döngü bittikten sonra ekrana bilgi mesajı verdik.
Genel olarak döngü değişkenlerimizi $i,$j,$k gibi değişkenlerle gösteririz. ama bu değişkenlerin kullanılması şart değildir.
İç İçe Döngüler
For döngüsü olsun, while döngüsü olsun tüm döngüleri iç içe kullanmamızda herhangi bir sakınca yoktur. for döngüsü içine while, while içinde for gibi istediğimiz şekilde kullanım kombinasyonu yapabiliriz. İç içe döngüleri ilerleyen derslerimizde göreceğimiz diziler dersimizde ne kadar çok işe yaradığını göreceğiz. İç içe döngülerle örnek yapacak olursak:
1 den 15 e kadar olan sayıların faktoryelini bulan programımızı for ve while döngülerini kullanarak bulalım.
$sayi = 1; while($sayi<=15) { $carpim = 1; for($i=1;$i<=$sayi;$i++) { $carpim*=$i; } echo "$sayi sayısının faktoryeli: $carpim <br/>"; $sayi++; }
Kodumuzu açıklayacak olursak :
- Sayı Değişken tanımladık ve 1 değerini verdik.
- while döngüsü içine $sayi değişkenimiz 15 ten küçük yada eşit oluncaya kadar çalıştırdık.
- Daha sonra $carpim değişkeni oluşturduk ve değerini çarpmanın etkisiz elemanı olan 1 yaptık.
-
$carpim değişkenini while den önce tanımlasaydık bir önceki sayımızın faktoryelinin üzerine çarparak eklemeye devam ederdi yani $carpim degişkenimizi her eerinde sıfırlamamız gerekiyor ki sonularımız doğru çıksın.
- Daha sonra for döngümüz içinde faktoryel işlemini yapıyoruz. ve sonuç olarak hangi sayının faktoryelini bulduğumuzu ekrana yazdırıyoruz.
rand(mindeger,maxdeger) fonksiyonu ile php de rastgele sayı üretiriz.
Değeri 10 olan bir değişken oluşturalım ve aralığı 0-15 aralığında bir rastgele sayı oluşturalım. Rastgele sayımız oluşturduğumuz sayıya eşit olana kadar ürettiğimiz rastgele sayıların faktoryelini bulalım.
$sayi = 10; // sayımızı oluşturduk $rondomSayi = rand(0,15); // 1-15 arasında astgele değişken oluşturduk while($sayi!=$rondomSayi) { $carpim = 1; for($i=1;$i<=$rondomSayi;$i++) { $carpim*=$i; } // faktoryel aldık echo "Bizim Sayimiz $sayi Rastegele üretilen Sayi: $rondomSayi eşit olmadığı için döngü devam ediyor. <br/>"; // ekrana rastgele üretilen sayının bilgisini verdik echo "$rondomSayi sayısının faktoryeli: $carpim <br/>"; // rastgele sayının faktoryelini yazdırdık. $rondomSayi = rand(0,15); // yeni rastgele sayımızı oluşturup ona göre işlemler yaptık. }
Kodla ilgili açıklamaları kod içerisinde açıklama satırı olarak yazdım. Ürettiğimiz rastgele değişken belkide hiçbir zaman bizim belirlediğimiz 10 sayısına eşit olmayabilir. Bu durumda döngü sona ermediği için sayfamız yanıt vermez. Bu duruma programlama dillerinde Sonsuz Döngüler denir. Sonsuz döngüler bazen bizim hatamızdan oluşabileceği gibi bazende bizim sonsuz döngü oluşturup kullanmamız gerekebilir.
Sonsuz Döngülerin Kullanım Şekli
Sonsuz döngü oluşturmanın en basit şekli while döngüsünde koşul yerine 1(true ) yazarak, for döngüsünde ise koşul ve değişken yerleri boş bırakılarak yani sadece iki tane noktalı virgül(;;) kullanılarak yapılır. örneğin:
while(1) { // sonsuz döngüdeyiz. } for(;;) { // sonsuz döngüdeyiz }
Peki iyi güzel sonsuz döngüye girdikte nasıl çıkacağız biz bu sonsuz döngüden ?
break ve continue deyimleri
Php Dersleri – Switch case deyimi dersimizde break deyimini kullanmıştık ve ilerleyen derslerimizde anlatacağız demiştik.
break deyimi: girilen kod bloğunun bir dışına çıkmamızı sağlar. en basit anlama yöntemi hangi döngüye ait süslü parantezin içine break yazarsak o süslü parantezin bir dışına çıkar.
if lere ait süslü parantezlerle döngüye ait süslü parantezi karıştırmamaya dikkat etmemiz gerekir.
continue deyimi: Döngü içinde continue yazdığımız kısımdan sonraki kodlar çalıştırılmaz ve döngü başa dönerek bir sonraki adıma geçer.
break ve continue ile ilgili örnekler
1-1000 arasında rastgele üretilen sayımızın 5 ile bölümünden kalan 0 oluncaya kadar devam eden programı hem for hemde while döngüsü ile yazalım.
While ile:
while(1) { $sayi = rand(1,1000); if($sayi % 5 == 0) { echo "$sayi değişkeni 5 e bölünüyor döngü burda biter. <br/>"; break; }else { echo "$sayi değişkeni 5 e bölünmediği için döngü devam ediyor.<br/>"; } }
For ile :
for(;;) { $sayi = rand(1,1000); if($sayi % 5 == 0) { echo "$sayi değişkeni 5 e bölünüyor döngü burda biter. <br/>"; break; }else { echo "$sayi değişkeni 5 e bölünmediği için döngü devam ediyor.<br/>"; } }
break deyimi ile döngüyü nasıl sonlandırırız. görmüş olduk.
Şimdide 1-10 aralığındaki çift sayıları ekrana yazdıralım.
for($i=1;$i<=10;$i++) { if($i % 2 ==1) continue; // eğer sayı eksa aşağıdaki kodları çalıştırma döngünün bir sonraki adımından devam et echo "$i-"; }
Bu günlük dersimizinde sonuna geldik arkadaşlar bir sonraki dersimiz olan Php Dersleri – Diziler dersimizde görüşmek üzere ?
Konuyla ilgili yorumlarınızı konu altından yapabilirsiniz, ayrıca sorularınızı yine konu altından ve Mobilhanem Soru&Cevap bölümünden sorabilirsiniz.
Tüm Php Dersleri için tıklayınız..
23