PAYLAŞ

for döngüsü

Eğer programda -belli koşulları sağladığı sürece- birden fazla çalıştırılmasını istediğimiz kodlar varsa döngüler kullanılır. C#’ta en çok kullanılan döngü “for”dur. Kullanımı:

 for(ifade1;kosul;ifade2)
        komut;

veya

 for(ifade1;kosul;ifade2)
 {
 	komut1;
 	komut2;
        .
        .
        .
 }

for döngüsünün çalışma prensibi

 for(ifade1;kosul;ifade2)
 {
 	komut1;
 	komut2;
        .
        .
        .
 }

1) ifade1 çalıştırılır.
2) Koşula bakılır. Eğer koşul sağlanıyorsa;

2.1) küme parantezleri içindeki ya da -küme parantezleri yoksa- kendinden sonra gelen ilk satırdaki komut çalıştırılır.
2.2) ifade2 çalıştırılır.
2.3) 2. adıma dönülür.

3) 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.

for döngüsüyle ilgili örnekler

 using System;
 class AkisKontrolMekanizmalari
 {
 	static void Main()
 	{
 		int toplam=0;
 		for(int i=1;i<=3;i++)
 			toplam+=i;
 		Console.Write("toplam={0}",toplam);
 	}
 }

Bu program 1’den 3’e kadar olan tam sayıları (1 ve 3 dâhil) toplayıp toplamı ekrana yazacaktır.

using System;
 class AkisKontrolMekanizmalari
 {
 	static void Main()
 	{
 		float s;
 		int si,f;
 		bool a=true;
 		for(;a;)
 		{
 			Console.Write("Lütfen faktoriyelinin alınmasını istediğiniz sayıyı girin: ");
 			s=Convert.ToSingle(Console.ReadLine());
 			si=(int)s;
 			if(si!=s||s<1) { Console.WriteLine("Lütfen pozitif tam sayı girin."); a=true; } else { a=false; for(f=1;si>1;si--)
 				     f*=si;
 				Console.Write("Faktöriyeli={0}",f);
                        }
 		}
 	}
 }

Bu program girdiğimiz herhangi bir sayının faktöriyelini bulup ekrana yazar. Eğer girdiğimizi sayı tam sayı değilse veya 1’den küçükse “Lütfen pozitif tam sayı girin.” diyerek tekrar veri girişi ister.
UYARI: C# nokta (.) işaretini sayıların ondalık kısımlarını ayırmak için kullanırken, DOS aynı amaç için virgül (,) işaretini kullanır.

for döngüsüyle ilgili kurallar

  • for döngüsünün parantezleri içindeki “for(int i=0;i<5;i++)” iki ifade ve bir koşulun istenirse bir tanesi, istenirse bazıları, istenirse de tamamı boş bırakılabilir; ancak noktalı virgüller mutlaka yazılmalıdır.
  • Tahmin edebileceğiniz gibi for döngüsünün içinde veya “for(int i=0;i<5;i++)” kısmında tanımlanan herhangi bir değişken döngünün dışında kullanılamaz. Bir değişkeni döngünün dışında kullanabilmemiz için o değişkenin döngüden önce tanımlanıp ilk değer verilmesi ve değişkeni kullanacağımız yerde de faaliyet alanının devam etmesi gerekmektedir. Bu bütün döngüler ve koşul yapıları için geçerlidir. Örneğin:
 using System;
 class AkisKontrolMekanizmalari
 {
 	static void Main()
 	{
 	      int a=0;
              for(int i=0;i<1;i++)
                  a=5;
              Console.Write(a);
 	}
 }

Bu program ekrana 5 yazacaktır. Ancak;

 using System;
 class AkisKontrolMekanizmalari
 {
 	static void Main()
 	{
 	     int a;
             for(int i=0;i<1;i++)
                 a=5;
             Console.Write(a);
 	}
 }

Bu program çalışmaz, çünkü a değişkeni döngüden önce tanımlanmasına rağmen ilk değer verilmiyor.
HATIRLATMA: Bir değişkenin faaliyet alanı tanımlandığı en iç bloğun içidir.
NOT: Console.Write(“{0,3}”,i); gibi bir ifadede i değişkeni 3 birimlik bir genişlikte sağa yaslı olarak yazılır. WriteLine ile de kullanılabilir. i; değişken, sabit ya da ifade olabilirken 3 yalnızca sabit olmalıdır. i bir ifade olsa bile parantez içine almaya gerek yoktur.

            Sonsuz döngü..
            for (;;)
            {
                Console.WriteLine("Sonsuza dek FENERBAHÇE!");
            }

            0'dan başlayarak 10'a kadar döngü kurulmasını sağladık.
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine(i + 1);
            }

            0'dan başlayarak ikişer ikişer artarak 100'e kadar döngü kurulmasını sağladık.
            for (int i = 0; i < 100; i = i + 2)
            {
                Console.WriteLine(i);
            }

            İç içe for döngüsü
            for (int i = 1; i <= 10; i++)
                {
                    for (int j = 1; j <= 10; j++)
                    {
                        Console.WriteLine("{0} x {1} = {2}", i, j, i * j);
                    }
                }

ÖRNEKLER -1-

 

            Console.Write("Sınıf Mevcudu: ");
            byte sinifMevcudu = byte.Parse(Console.ReadLine());

            for (int i = 0; i < sinifMevcudu; i++) { Console.Write("{0}. Öğrenci Vize Notu: ", i + 1); byte vize = byte.Parse(Console.ReadLine()); Console.Write("{0}. Öğrenci Final Notu: ", i + 1); byte final = byte.Parse(Console.ReadLine()); double ortalama = (vize * .4) + (final * .6); if (ortalama >= 50)
                {
                    Console.WriteLine("{0}. Öğrenci Ortalaması: {1}. GEÇTİ!", i + 1, ortalama);
                }
                else
                {
                    Console.WriteLine("{0}. Öğrenci Ortalamsı: {1}. KALDI!", i + 1, ortalama);
                }
            }

ÖRNEKLER -2-

// Ürün Girişi
            Console.Write("Giriş Adedi: ");
            byte adet = byte.Parse(Console.ReadLine());

            for (int i = 0; i < adet; i++)
            {
                // Kullanıcıdan ürün adını
                // Kullanıcıdan ürün fiyatını
                // Kullanıcıdan ürün kdv oranını isteyelim

                // Sonuç olarak ürün adı: xx KDV Dahil Fiyat: xx

                Console.Write("{0}. Ürünün Adını Giriniz: ", i + 1);
                string urunAdi = Console.ReadLine();

                Console.Write("{0}. Ürünün Fiyatını Giriniz: ", i + 1);
                double fiyat = double.Parse(Console.ReadLine());

                Console.Write("{0}. Ürünün KDV Oranını Giriniz: ", i + 1);
                byte kdvOrani = byte.Parse(Console.ReadLine());

                double kdvDahilFiyat = fiyat + (fiyat * kdvOrani / 100);

                Console.WriteLine("Ürün Adı: {0} KDV Dahil Fiyatı: {1} ", urunAdi, kdvDahilFiyat);
            }

1 YORUM

BİR CEVAP BIRAK