Yazdır 24 Mart 2010 Çarşamba (Hit: 42188)

while Döngüsü

Belirtilen koşul sağlandıkça dönen döngülerdir. Bu döngüye girmek için de koşulun sağlanmış olması gerekmektedir. Kullanımı şu şekildedir.

while(/*koşul*/){
   // koşul sağlanırsa çalışacak kodlar
}

İlk örneğimizde ekrana 1'den 10'a kadar olan sayıları alt alta yazdıralım.

<?php
$sayi=1;
while($sayi<=10){
   echo "Sayı $sayi<br>";
   $sayi++;
}
?>

while için söylenen koşul $sayi değişkeninin 10'a eşit yada 10'dan küçük olma koşuludur. Dolayısıyla döngüye girebilmek için bu koşula uygun bir değeri başlangıçta $sayi=1; diyerek tanımlıyoruz. Daha sonra yapmasını istediğimiz kodu yazıp $sayi değişkenini 1 arttırdık. Döngü koşulu $sayi değişkenine bağlı çalışmaktadır. Eğer $sayi değişkenini 1 arttırmazsak değeri hep 1 olarak kalır ki bu döngünün sonsuz döngüye yani kısır döngüye girmesine sebep olur. Döngü her tekrarında koşulu kontrol eder. Koşul sağlanmadığı anda döngüden çıkar.

 

Örnek: 1 ile 100 arasında rastgele üretilen sayı 45 olana kadar sayı üreten ve kaçıncı denemede bulunduğunu ekrana yazan php kodunu yazalım.

<?php
$sayi=1;
$sayac=0;
while($sayi!=45){
   $sayi=rand(1,100);
   $sayac++;
}
echo "$sayi sayısı $sayac denemede bulundu.";
?>

Buradaki koşulumuz $sayi değişkeninin 45'e eşit olmama koşuludur. Yani $sayi değişkeni 45 olmadığı sürece sayı üretmeye devam et diyoruz. Üretilen her sayıdan sonra sayacı 1 arttırarak deneme sayısını sayıyoruz. Başlangıçta $sayi değişkenine 45'den farklı bir sayı veriyoruz ki döngüye girebilelim.

Not: rand() fonksiyonu verilen aralıkta rastgele bir sayı üretir. rand(min,max)

 

Örnek: 1 ile 100 arasında rastgele üretilen sayıların toplamı 500'den büyük olduğunda duran döngüyü, toplam ile toplanan sayı sayısını ekrana yazan php kodunu yazalım.

<?php
$sayi=rand(1,100);
$sayac=1;
$toplam=$sayi;
while($toplam<=500){
   $sayi=rand(1,100);
   $sayac++;
   $toplam+=$sayi;
}
echo "Toplam=$toplam Toplanan sayı sayısı=$sayac";
?>

Burada $sayi değişeninin ilk değeri rastgele üretilen bir sayı olmalıdır. Dolayısıyla ilk sayı üretildiğinden $sayac değişkeninin ilk değeri de 1, $toplam değişkeni başka sayı olmadığından ilk sayıya eşit olmalıdır. Sonra toplam 500'den küçük olduğu sürece sayı üretmeye devam ediyoruz. Toplam 500'ü geçtiğinde döngüden çıkıp sonucu ekrana yazdırıyoruz.

 

Örnek: Ekrana 1'den 10'a kadar olan sayıların toplamını 1+2+3+4+5+6+7+8+9+10=55 şeklinde yazdıralım.

<?php
$sayi=1;
$toplam=$sayi;
echo $sayi;
while($sayi<10){
   $sayi++;
   $toplam+=$sayi;
   echo "+$sayi";
}
echo "=$toplam";
?>

 

Örnek: Tanımlı olan dizinin tüm değerlerini ekrana yazdıralım.

<?php
$kadro=array("elif","kaan","gözde","emine","hüseyin","emre");
$indis=0;
while(@$kadro[$indis]){
   echo $kadro[$indis]," ";
   $indis++;
}
?>

Buradaki koşul; dizide, belirtilen indise karşılık gelen bir değer varsa anlamına gelmektedir. Yani belirtilen indise karşılık dizide bir değer olduğu sürece bunları ekrana yaz diyoruz.

 

Örnek: 1 ile 100 arasında rastgele üretilen 10 tek sayıyı bir diziye atayıp ekrana yazdıralım.

<?php
$sayac=1;
while($sayac<=10){
   $sayi=rand(1,100);
   if ($sayi%2==1){ // üretilen sayı tek ise
      $sayilar[]=$sayi;
      $sayac++;
   }
}

$indis=0;
while(@$sayilar[$indis]){
   echo $sayilar[$indis]," ";
   $indis++;
}
?>

 

Örnek: 1 ile 100 arasında rastgele üretilen sayı bir önceki sayıya eşit olduğunda duran sonsuz döngüyü yazalım.

<?php
$onceki=rand(1,100);
echo $onceki," ";
while(true){ // while, koşul true olduğu sürece döner
   $yeni=rand(1,100);
   echo $yeni," ";
   if ($onceki==$yeni)
      break;
   $onceki=$yeni;
}
?>

while, yapısı itibariyle koşul sağlandığı sürece yani true olduğu sürece döner. while(true) diyerek döngünün devamlı dönmesi sağlanıyor. Yani sonsuz dön anlamına gelir. Bu tür döngülerden çıkmak için break komutu kullanılır. Aynı zamanda sıfırdan farklı her sayı true kabul edildiğinde ifade; while(1), while(5), while(-6), while("ufuk") şeklinde de yazılarak sonsuz döngüler kurulabilir.

 

Örnek: 1 ile 10 arasında birbirinden farklı üretilen 5 sayıyı bir diziye atayalım.

<?php
$sayi=rand(1,10);
$sayac=1;
$sayilar[]=$sayi;
while($sayac<5){
   $sayi=rand(1,10);
   
   $varmi=false; // her dizi elemanı üretilen sayı ile karşılaştırılacak
   $indis=0;
   while(@$sayilar[$indis]){
      if ($sayilar[$indis]==$sayi) //eğer üretilen sayı dizide varsa
         $varmi=true; // dizide var olarak işaretle
      $indis++;
   }

   if ($varmi==false){ // eğer üretilen sayı dizide yoksa
      $sayilar[]=$sayi; // diziye ekle
      $sayac++;
   }
}

$indis=0;
while(@$sayilar[$indis]){
   echo $sayilar[$indis]," ";
   $indis++;
}
?>

Bu site meslek liselerinde bilişim bölümü web programcılığı dalında okutulan internet programcılığı dersine yardımcı olması için tasarlanmıştır. İletişim için iletisim@phpdefteri.com
Apache PHP MySQL PhpMyAdmin EasyPHP Xampp AppServ Wamp W3School

www.phpdefteri.com © 2010