• 22-11-2008, 14:22:41
    #1
    For Döngüsü

    Komut yada komutların istenilen sayıda tekrarlanmasını sağlar. Sayaç mantığıyla çalışır. Döngüyü istediğimiz sayıdan başlatır istediğimiz sayıda sonlandırabiliriz. Döngünün değişme değerini her işlemde istediğimiz miktarda artırabilir yada azaltabiliriz. Örneğin döngümüz için başlangıç değerini 1 bitiş değerini 100 olarak belirleyebilir. Artış miktarını ise 2 olarak ayarlayabiliriz. Bu durumda döngü içindeki komutlar 50 defa tekrar tekrar çalıştırılacaktır.

    For döngüsünün formatı:

    for (döngü değişkeni=başlangıç değeri; şart; değişim miktarı)
    {
    yapılacak işlemler
    }

    Basit bir örnekle for döngüsünün yapısını ve çalışmasını inceleyelim.1 den 10 a kadar olan sayıları alt alta yazdıralım.

    <?
    for ($i=1;$i<=10;$i++) //başlangıç değerimizi 1, bitiş //değerimizi 10, ve değişim miktarını +1 olarak belirledik
    {
    echo $i;                // değişken değeri ekrana yazdırılıyor
    echo "<br>";       //bir satır alta geçiliyor
    }
    ?>
    Ekran Çıktısı
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    While döngüsü

    While döngüsü, içerisinde tanımlanan koşul sağlandığı sürece belirli komut ifadesi grubunun çalıştırılmasını sağlar. Şart ifadesinin doğruluğu her döngünün başında kontrol edilir, buna göre döngünün içerisindeki komut ifadeleri çalıştırılmaya devam eder ya da döngü sona erer. Eğer şart sağlanmıyorsa, while döngüsüne hiç girillmez.

    While döngüsünün formatı :


    while(şart)
    {
    Yapılacak işlemler
    }

    Örnek bir program üzerinde while döngüsünü inceleyelim. Daha önce for döngüsü ile yaptığımız 1 den 10 a kadar olan sayıları yazdıran programı while döngüsü ile yazalım. Böylece hem while döngünün kullanımını hem de iki döngü arasındaki farklılıkları göreceksiniz.

    <?
    $i=1;        //başlangıç değerini belirledik
    while ($i<=10)   //10 a kadar olma şartımızı belirledik
    {
    echo $i;    //değişken değerini yazdırdık
    echo "<br>";     //bir alt satıra geçtik
    $i++;         //değişken değerimizi 1 arttırdık
    }
    ?>
    While (True) -->Şart eğer dogru ise döngüye gir
    While (False) -->Şart eğer yanlış ise döngüye girme

    Dikkat edilmesi gereken bir başka nokta ise $i++ ifadesi(bu değer değişikliği komutunu farklı artış ve azalmalar sağlayacak şekilde de yazabilirsiniz.) Döngümüzün sonunda olduğu için döngümüzün son çalıştığı seferde (i=10 durumunda) son bir kez daha 1 arttırılarak 11 e eşit olacaktır. 11<=10 ifadesi false sonucu döndürdüğünden döngü tekrar çalışmayacaktır.



    Çalışma Örnekleri :

    ÖRNEK 1:

    <?php
    for($y=1;$y<=5;$y++)
     { for($x=1;$x<=$y;$x++)
          {echo "*";}
        echo "<br>";
     }
    ?>
    Ekran Çıktısı:

    *
    **
    ***
    ****
    *****

    ÖRNEK 2:

    <?
    $i=10;
    while($i>=0)
      { echo "$i";
        echo "<br>";
        $i--;
      }
    ?>
    Ekran Çıktısı :

    10
    9
    8
    7
    6
    5
    4
    3
    2
    1
    0

    ÖRNEK 3:

    [code]<?php
    for($x=10;$x>0;$x--)
    echo "$x<br>";
    echo "<br>";
    for($x=1;$x<=10;$x++)
    echo "$x<br>";
    ?>[]/code



    Çalışma Soruları :


    SORU 1: Çarpım tablosunu yapan programı yazınız.

    CEVAP 1 :


    <?
           for($i=1;$i<=10;$i++)
              {for($j=1;$j<=10;$j++)
                 { echo $i."*".$j."=".$i*$j."<br>";}
              echo "<br>"; 
              }
    
    ?>
    SORU 2: 1+1/2+1/3+1/4+..... şeklindeki toplama işleminin ilk 50 elemanı için sonuç değerini bulan kodu yazınız.

    CEVAP 2:

     <?
           $toplam=0;
             for($i=1;$i<=50;$i++)
               $toplam=$toplam+(1/$i);
               echo "1+1/2+1/3+1/4+....1/50=".$toplam;
    
    ?>
  • 22-11-2008, 17:33:55
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    2. sorunun 2.cevap ile alakası nedir ? ordan burdan kopyalayıp yapıştırıp da hevesli insanların barini hevesini kırmayın. biliyosanız yazın bilmiyorsanız susun.
  • 23-11-2008, 17:29:32
    #3
    küçük bir hatayı bu kadar buyutmek için kendinizi yormayın...
  • 23-11-2008, 17:41:29
    #4
    cevabınız yine yanlış diziler kullanıcı tanımlamadıkça 1 den başlamaz başlangıç anahtarı 0 dır.

    sorunuzun yanıtı aslında şudur

    $dizi = range(0,50);
    $count = count($dizi);
    for ($i = 0; $i<$count; $i++)
    {
        $toplam += $dizi[$i];
    }
    echo $toplam;
  • 23-11-2008, 17:46:52
    #5
    dikkat edersen sorunun cevabında dizi tanımı yok,bu dizisiz çözüm
    ama illa ki inat ettin soruyu düzeltiriz
  • 23-11-2008, 17:53:19
    #6
    bişey diyim mi ? bana çok bilmiş vs de diyebilirsin önemli değil de yaptığın işlem yine yanlış.

    neden mi ?

    toplamı alırken 1/deger diyorsun ve o sonucu alıyorsun sonuda 4.4.... küsür bişey çıkıyor yani yine yanlış.

    2. sorunun cevabı aşağıdaki olcak.

    for ($i=0; $i<50; $i++)
    {
      $toplam += $i;
    }
    echo $toplam;
    olcak..
  • 23-11-2008, 17:57:44
    #7
    soruya dikkat edersen bölümlerin toplamını istiyorum
    1'den 50'ye kadar olan ardışık sayıların toplamını değil
  • 23-11-2008, 18:00:52
    #8
    yani 1+1/2+1/3+1/4+1/5+..........+1/50

    bu çocuklara for yapısını öğretebilmek için sorduğum bir soru,iki satırlık bir şeyi de netten kopyalacak kadar olmadım yaniii,ayrıca kendi blogumudan kopyalamıştım, sana da ctrl+c ve v'siz günler diliyorum
    ilgine de tesekkur ediyorum

    yazı eklersem ilk sana onaylatıcam
  • 23-11-2008, 18:02:00
    #9
    Arkadaşlar uzatmasak.