Bu Blogda Ara

26 Haziran 2014 Perşembe

Donguler (While)

  En önemli konulardan birine geldik. Döngü (loop) belirli bir koşul altında kodumuzun tekrar tekrar çalışmasını sağlar. C dilinde 3 tane döngü vardır bunlar while, do while ve for.

   3 döngü de temelde aynıdır ve hangisini kullanmak isteyeceğiniz keyfinize kalmıştır. Aralarındaki fark sadece yazım şeklidir.
   Bir döngüde bazı temel unsurlar vardır:
-Döngünün başlangıç değeri,
-Döngünün bitiş değeri,
-Döngünün artış miktarı. 

                                                     While Döngüsü

                        while (koşul){
                                            yapılacaklar
                                            {

    If'e benziyor değil mi?  Döngünün özelliği koşul sağlandığı sürece tekrar tekrar kodu işlemesiydi. While döngüsünde koşulun kontrol edilmesi koddan öncedir. Bu önemli bir ayrıntı, sebebini ileride anlayacaksınız.Şimdi bir örnek yapalım.



    3 tane temel unsur var demiştik bakalım neredeymiş onlar. i bizim döngüyü kontrol eden değişkenimiz ve başlangıç değeri görüldüğü üzere 0. Bitiş değerimiz de while içinde koşul olarak yazıyor. Bizim döngümüz i 3'ten küçük olduğu sürece geçerli. Artış miktarı da i=i+1; den anlaşılacağı üzere 1. Buna birazdan değineceğiz.
    Şimdi programı adım adım işletiyoruz. i diye bir int oluşturduk ve 0 değerini atadık. Sonra alt satırda while gördük, içeride bir koşul var hemen kontrol ettik ve 0< 3 olduğundan döngüye girdik. Printf ile 0 sayısını ekrana yazdık. Buradan sonrasına dikkat. i=i+1 matematiksel olarak anlamsız bir ifadedir ancak programlama açısından çok önemlidir. Programlamada atama işlemi eşittirin sağındakini soldakine ata şeklinde yapılır. Yani bu demek ki i sayısına (şu an 0) 1 ekle (0+1=1 oldu) ve onu i'ye at. Eğer bu işlem olmasaydı sayımız sürekli 0 olarak kalacaktı ve döngü başa döndüğünde her zaman 0< 3 olacağından sonsuza kadar devam ederdi.
   Sayımız artık 1 kodda ilerlemeye devam ediyoruz ve küme parantezine geldik. Küme parantezini görünce döngümüz başa döner ve koşulu kontrol eder. 1< 3 şart hala sağlanıyor bu yüzden tekrar döngüye girer. 1 sayısını ekrana yazdırır, i sayısını 1 arttırır (2 oldu) ve bitiş parantezine gelip başa döner.
   Sayımız artık 2 kodda ilerliyoruz. Parantezden while koşuluna geri döndük. 2< 3 şart sağlanıyor döngüye girdik. 2 sayısı ekrana yazdırıldı ve i sayısı 1 arttırıldı (3 oldu) bitiş parantezine geldik yine ve başa döndük.
   Sayımız artık 3 ve tekrar koşulu kontrol ediyoruz. 3 < 3 ifadesi yanlış bu yüzden döngüye girmiyoruz ve direk while'ın bittiği paranteze geliyoruz. Buradan sonra da normal işleyişe devam. Ekran çıktısı şu şekilde:
  Bunu döngüsüz yapmaya kalksaydık 3 tane printf yazmak zorundaydık. 3 tane printf nedir ki demeyin bu sadece örnek bir uygulama. İlerideki programlarda da sadece printf kullanmayacaksınız, onlarca satırı yüzlerce defa tekrar yazmak isteyen var mı? Bu yüzden döngüler doğru kullanıldığı sürece çok işe yarar. Şimdi 1'den 5'e kadar sayan program yapalım.

  Deminki örnekte i=0'ı i=1 ve while'daki i< 3'ü i<= 5 yapmayı düşündünüz değil mi? Bu da bir yöntem ama ben burada önemli bir detaya değinmek istiyorum. Derleyici kodu yukarıdan aşağıya doğru okur. Bunun anlamı yukarıdaki kodda önce 0'ı 1 yap sonra ekrana yaz demektir. Sayının başlangıç değeri olarak 0 bile yazsak ekrana yazılacak ilk terim 1'dir. Bir diğer fark bitişte. Farkındaysanız <= kullanmadım normalde 5 sayısını görünce döngüye girmeyip 5'i yazmaması gerekirdi ancak biz sayısı önce arttırıp sonra yazdığımız için 5 de ekranda olacak.


  NOT: i=i+1 ile i++ aynı şeylerdir, yazım kolaylığı ve size göstermek için ikinci örnekte i++'yı kullandım. Peki birer birer artırmasak da ikişer ikişer arttırsak? O zaman da i=i+2 veya i+=2 şeklinde kullanılır.
  Ekstra bilgi:   C++, C'nin sınıf yapısını destekleyen bir üst modelidir ve ismindeki ++ buradan gelmektedir.
  
  

Hiç yorum yok:

Yorum Gönder