12 Nisan 2015 Pazar

Php’de While Döngüsü

For döngüsü yazısında belirttiğim gibi çoğu zaman yaptığımız işler tekrar eder ve bu tekrar eden işlemler için döngü yapılarını kullanırız. Eğer işlemin kaç defa tekrar edeceğini biliyorsanız for döngüsü kullanmak çoğu zaman daha kolaydır.

Bazı durumlarda ise tekrar sayısı önceden bilinmez. Örneğin bir dersi alan öğrencilerin dönem sonu notlarını hesaplatmanız gerek ama o dersi kaç öğrencinin aldığı belirsiz; bir dosyadaki değerleri okutup toplamını bulmalısınız ama dosyada kaç sayı olduğu bilinmiyor!

Bu ve benzeri durumlar ile çoğu zaman karşılaşırız, döngümüz önceden belirli olan bir değerde değil belirli bir koşul sağlandığı sürece tekrar eder. While döngüsü bu durumlarda bizim kurtarıcımızdır çünkü yapısı gereği belirli bir koşul sağlandığı sürece tekrar eder.

Genel Kullanımı;

While (Koşul) {
// Tekrarlanacak kodlar
}

Belirttiğimiz koşul sağlandığı yani true(olumlu) sonucunu ürettiği sürece döngümüz işlemlerimizi yapmaya devam edecektir. Bu koşul bazen 3 defa sağlanır bazen 30000 defa tekrar eder.

While döngüsü ile for döngüsünün en önemli farkı artışı belirtilen bir değerin olmamasıdır, döngü değişkeninin artması veya azalmasını siz kontrol edersiniz. Eğer bu duruma dikkat etmezseniz Sonsuz Döngü adını verdiğimiz hata oluşur, döngüden hiç çıkılmaz ve yazdığınız program kilitlenir!


Örnek: 1’den 10’a kadar olan sayıların toplamını bulup görüntüleyelim.

Yukarıda görülen örnekte döngü koşulumuz $sayi değişkeninin 10’dan küçük veya eşit olması, $sayi değişkeninin ilk değeri olan 1 bu koşulu sağladığı için koşulumuz true sonucunu verir ve döngü işlemeye başlar.

Döngü içinde önce $sayi değişkeninin o anki değerini yazdırıyoruz.

İf ile yaptığımız kontrolde amacımız şudur; eğer $sayi değişkeninin değeri 10’dan küçük bir değer ise değeri yazdıktan sonra toplama işlemi için + operatörünü yazdıracağız. Eğer $sayi nin değeri 10 ise zaten toplayacağımız sayılarımız bitmiştir = operatörünü yazdırıp toplam değerinin görüntüleyeceğiz bu nedenle bu kontrol gösterim için önemlidir.

$sayi değişkeninin son değeri ile $toplam değişkeninin değerini toplayıp sonucu $toplam değişkeninde topluyoruz. Aslında $toplam+=$sayi; ile $toplam=$toplam+$sayi; aynı anlama gelir ama daha kısa olan yazımı tercih edelim.

$sayi++; ile $sayi değişkeninin değerine +1 ekliyoruz. İşte bu kod önemli çünkü bu kodu unutursak $sayi değişkenin değeri teorik olarak sonsuza kadar aynı kalacak ve döngümüzden hiç çıkılamayacaktır! Bu kod aynı zamanda döngümüzün tekrar sayısını da kontrol etmemizi sağlar.

Döngüden çıktıktan sonra = operatörünü ve toplam değerini yazdırıyoruz.
Örnek: Değerleri 1 – 250 arasında değişen 25 rastgele sayı üretip görüntüleyelim.

Yukarıda görülen örnekte döngü koşulumuz $sayac değişkeninin 25’den küçük olması, $sayac değişkeninin ilk değeri olan 0 bu koşulu sağladığı için koşulumuz true sonucunu verir ve döngü işlemeye başlar.

$sayi=rand(1,250); ile değeri 1 ile 250 arasında değişen rastgele bir sayı üretip bu sayıyı $sayi değişkenine aktarıyoruz.

$sayac++; ile değişkenin değerini 1 artırıyoruz böylece kaç sayı ürettiğimizi kontrol edebileceğiz.


While döngüsünün önemli bir özelliği vardır, bu döngü koşula bağlı olduğu için bazen bu koşul HİÇ sağlanmaz ve bu nedenle while döngüsü hiç işletilmez. Yukarıda belirtilen örnekte döngü koşulu $x değişkenin değerinin 5’ten küçük olmasıdır oysa $x değişkeninin başlangıç değeri 8’dir ve 8>5 olduğu için bu koşul sağlanmaz ve program akışı 10. Satırdan devam eder. Bu örnekte tarayıcı ekranında hiçbir şey görmeyeceğiz.

Bu bilgi dikkate alınarak while döngüsü yazılmalıdır.

While döngüsünün farklı bir türevi olan do – while döngüsü ile ilgili olarak bir noktayı vurgulamak istiyorum.

Do {
// Tekrarlanacak kodlar
} While (Koşul);

Do – while döngü yapısını incelediğinizde koşul kontrolünün döngünün sonunda yapıldığı dikkatinizi çekmiştir. While döngüsünde daha döngüye girmeden yapılan kontrol do – while döngüsünde sonda yapılmaktadır ve bu durum basit bir yer değişimi değildir! Vurgulamak istediğim nokta şu; program akışı yukarıdan aşağıya satır satır işletilir do – while döngüsünde tekrarlanacak kodlar EN AZ 1 defa çalıştırılır ve sonra koşul kontrolü yapılır eğer koşul sağlanırsa tekrar edilmeye devam eder.

Önceki örneği do – while ile tekrar yazıp sayfayı görüntülediğimizde ise ekranda

Değerini görürüz. $x değişkeninin başlangıç değeri olan 8 koşulu sağlamasa da kodlar 1 defa çalıştırılır 8 değeri ekranda görüntülenir; $x++ ile değeri +1 artırılıp 9 olur sonra koşul kontrolü yapılır ve program akışı 10. Satırdan devam eder!

Bu nedenle do – while döngüsü yazılırken daha dikkatli olunmalıdır!
Kolay gelsin…

Hiç yorum yok:

Yorum Gönder