PAYLAŞ

break-continue-goto

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.

Döngülerle ilgili karışık örnekler

  • 1’den 1000’e (sınırlar dâhil) kadar olan sayılar içerisinde 5’e tam bölünen, ancak 7’ye tam bölünemeyen sayıları alt alta listeleyen, bu sayıların kaç tane olduğunu ve toplamını yazan bir program yazınız.
 using System;
 class AkisKontrolMekanizmalari
 {
      static void Main()
      {
           int toplam=0, sayi=0, i=5;
           for(;i<1001;i+=5)
           {
                if(i%35==0)
                     continue;
                sayi++;
                toplam+=i;
                Console.WriteLine(i);
           }
           Console.WriteLine("Sayısı: "+sayi);
           Console.WriteLine("Toplam: "+toplam);
      }
 }
  • 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); 
      }
 }

3 YORUMLAR

BİR CEVAP BIRAK