5 Nisan 2012 Perşembe

C# 'da Döngüler - WHILE ve DO WHILE

WHILE
Merhaba arkadaşlar. Bu yazımda biraz while ve do-while döngüsünden bahsedeceğim. Bunu yaparken de algoritma geliştirici örnekler sunacağım.

Öncellikle while 'ın kelime anlamı iken'dir. Yani while döngüsü koşul sağlandığı sürüce dönecektir. Kullanım şekli ise aşağıdaki gibidir.

            while (koşul)
            {
                //Koşul sağlandığı sürece çalışacak olan kod bloğu
            }

While döngüsünü, For döngüsünden ayıran en büyük özellik ise ne kadar döneceği belli değildir. Yani koşulun kaç kere sağlanacağı öngörülemez. Örneğin aşağıdaki örnekte program, kullanıcıdan bir tuş basmasını istiyor ve basana kadar da  Console.ReadKey() kod satırı ile sayesinde program bekler. (Console.ReadLine () ise sadece enter tuşuna basılmasını bekler.) Daha sonra CapsLock tuşu aktif mi yoksa değil mi kontrol ediyor. Bu kontrolü Console sınıfının geriye bool değer dönen CapsLock özelliği sayesinde yapıyor. While döngüsündeki koşulun başında ! (değil operatörü) olduğu için CapsLock tuşu False yani pasif olduğu sürece dönüyor.

            while (!Console.CapsLock)
            {
                Console.Write("Lütfen bir tuşa basınız..");
                Console.ReadKey();  
                Console.WriteLine("CapsLock: {0}", Console.CapsLock);
                Console.WriteLine();
            }
            Console.ReadKey();

DO-WHİLE
            do
            {
              //koşul uysa da uymasa da bir kez çalışacak olan kod bloğu 
            } while (koşul);

While dögüsünü döngümüz içerisindeki kod bloğunun kaç kere çalışacağını bilmediğimiz durumlar için kullanıyorduk. Eğer while 'daki koşul uymuyorsa program akışı döngüye girmeden devam ediyordu. Do-while döngüsünde ise bi programa "bir kere çalıştır, sonra koşul gerçekleştiği sürece tekrar tekrar çalıştır" diyoruz.  

örnek : Bir örnek verecek olursak: klavyeden 0 değeri girilene dek girilen sayıların en büyük iki rakamı bize gösteren kod bloğunu d--while kullanarak yapalım.

            int birinci = 0, ikinci = 0, girilen = 0;
            Console.WriteLine("Lütfen sayı giriniz.");
            do
            {
                girilen = Convert.ToInt32(Console.ReadLine());
                if (girilen > birinci)
                {
                    ikinci = birinci;
                    birinci = girilen;
                }
                else if (girilen > ikinci)
                {
                    ikinci = girilen;
                }
            } while (girilen != 0);

            Console.WriteLine("birinci büyük {0}, ikinci büyük {1}", birinci, ikinci);

Program kullanıcıdan 0 değeri girilene kadar sayılar ister. 0 girilmediği sürece kod bloğu çalışır. Girilen her sayıyı önceki iki sayı ile ayrı ayrı kıyaslar. Girilen sayı önceki iki sayıdan sayıdan büyükse değerlerini birbirlerine atar. Bunu yaparken de geçici minimum bir tane değişken kullanmalıdır. Bu yönteme "swap" denir. Son olarak birinci ve ikinci değişkenlerinde en büyük iki sayı kalmış olacak.




Hiç yorum yok:

Yorum Gönder