C Sharp Programlama Dili/Akış kontrol mekanizmaları – While – do While döngüsü

while döngüsü:

Komut ya da komutların bir koşul sağlandığı sürece çalıştırılmasını sağlar. Kuruluşu:

 while(koşul)
      komut;
veya
 while(koşul)
 {
      komut1;
      komut2;
      .
      .
      .
 }
while döngüsünün çalışma prensibi :
 while(koşul)
 {
      komut1;
      komut2;
      .
      .
      .
 }

1) Koşula bakılır. Eğer koşul sağlanıyorsa;

1.1) küme parantezleri içindeki ya da -küme parantezleri yoksa- kendinden sonra gelen ilk satırdaki komut çalıştırılır.
1.2) 1. adıma dönülür.

2) Eğer koşul sağlanmıyorsa küme parantezleri dışına ya da -küme parantezleri yoksa- kendinden sonra gelen ilk satırdaki komuttan hemen sonraki satıra çıkılır. Dolayısıyla döngüden çıkılmış olur.

  • Aslında while döngüsü for döngüsünün yalnızca koşuldan oluşan hâlidir. Yani for(;i<0;) ile while(i<0) aynı döngüyü başlatır.

do while döngüsü :

Şimdiye kadar gördüğümüz döngülerde önce koşula bakılıyor, eğer koşul sağlanırsa döngü içindeki komutlar çalıştırılıyordu. Ancak bazen döngüdeki komutların koşul sağlanmasa da en az bir kez çalıştırılmasını isteyebiliriz. Bu gibi durumlar için C#’ta do while döngüsü vardır.

Kullanımı:

 do
      komut;
 while(koşul)
veya
 do
 {
      komut1;
      komut2;
      .
      .
      .
 }while(koşul)

do while döngüsünün çalışma prensibi :

 do
 {
      komut1;
      komut2;
      .
      .
      .
 }while(koşul)

1) Döngüdeki komutlar bir kez çalıştırılır.

2) Koşula bakılır.

2.1) Eğer koşul sağlanıyorsa 1. adıma dönülür.
2.2) Eğer koşul sağlanmıyorsa döngüden çıkılır.

Döngülerde kullanılan anahtar sözcükler:

 break:

Hatırlarsanız break komutunu switch’teki case’lerden çıkmak için kullanmıştık. Benzer şekilde break komutu bütün döngülerden çıkmak için kullanılabilir. Örnek:

 using System;
 class AkisKontrolMekanizmalari
 {
      static void Main()
      {
           for(char a;;)
           {
                a=Convert.ToChar(Console.ReadLine());
                if(a=='q')
                     break;
           }
      }
 }

Bu program, kullanıcı “q” harfini girene kadar kapanmamaktadır.

continue:

break sözcüğüne benzer. Ancak break sözcüğünden farklı olarak program continue’u gördüğünde döngüden çıkmaz, sadece döngünün o anki iterasyonu sonlanır. Örnek:

 using System;
 class AkisKontrolMekanizmalari
 {
      static void Main()
      {
           for(int a=0;a<51;a++)
           {
                if(a%2==1)
                     continue;
                Console.WriteLine(a);
           }
      }
 }

Bu program 0’dan 50’ye kadar (0 ve 50 dâhil) olan çift sayıları ekrana alt alta yazmaktadır.

goto:

Nesneye yönelik programlamada pek hoş görülmese de kullanabileceğiniz başka bir komut “goto”dur. Aslında eskiden BASIC gibi dillerde her satırın bir numarası vardı ve bu sözcük satırlar arasında dolaşmayı sağlıyordu. Ancak böyle bir yöntem nesne yönelimli programlamaya terstir. O yüzden çok fazla kullanmamanız tavsiye edilir. Örnek kullanım:

 using System;
 class AkisKontrolMekanizmalari
 {
      static void Main()
      {
                birinci:
                     Console.WriteLine("Birinci bölüm");
                     goto ucuncu;
                ikinci:
                     Console.WriteLine("İkinci bölüm");
                ucuncu:
                     Console.WriteLine("Üçüncü bölüm");
      }
 }

Bu programda ikinci bölüm hiçbir zaman çalıştırılmayacaktır.

örnekler :

  • Girilen pozitif herhangi bir tam sayıyı ikilik düzene çeviren programı yazınız.
 using System;
 class AkisKontrolMekanizmalari
 {
      static void Main()
      {
           string mod="";
           Console.Write("Lütfen ikilik sisteme dönüştürülmesini istediğiniz sayınızı girin: ");
           float a=Convert.ToSingle(Console.ReadLine());
           int b=(int)a;
           if(a<=0||a!=b)
                mod="Bir pozitif tam sayı girmediğiniz için sayınız ikilik sisteme dönüştürülmedi!";
           else
                for(;b>0;b/=2)
                     mod=b%2+mod;
          Console.Write(mod);    
      }
 }
  • Konsol ekranına girilen 0 ile 100 (sınırlar dâhil) arasındaki 10 notun en büyüğünü, en küçüğünü ve ortalamasını yazan programı yazınız.
 using System;
 class AkisKontrolMekanizmalari
 {
      static void Main()
      {
           int bs=0, toplam=0, ks=0;
           for(int a=0, b;a<10;a++)
           {
                Console.Write(a+1+". notu giriniz: ");
                b=Convert.ToInt32(Console.ReadLine());
                if(b>100||b<0)
                {
                     Console.Write("Yanlış not girdiniz. Lütfen tekrar ");
                     a--;
                     continue;
                }
                if(a==0)
                {
                     bs=b;
                     ks=b;
                }
                else
                {
                     if(b>bs)
                          bs=b;
                     if(b<ks)
                          ks=b;
                }
                toplam+=b;
           }
           Console.Write("En büyük: {0}\nEn küçük: {1}\nOrtalama: "+toplam/10,bs,ks); 
      }
 }

About mehmetakifsonmez

Tokat Teknik ve Endüstri Meslek Lisesi - Bilişim Teknolojileri Alanı Şefi
Bu yazı C# Temel Seviye içinde yayınlandı. Kalıcı bağlantıyı yer imlerinize ekleyin.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s