C# Döngüler

Şart bloklarından sonra döngüler konusuna giriş yapacağız. Döngüler, programlamada belli satırların tekrar tekrar çalıştırılmasını sağlayan ve programlamada en çok ihtiyaç duyulan yapılardan biridir. C# dilinde 4 farklı döngü vardır.

  • For Döngüsü
  • While Döngüsü
  • Do While Döngüsü
  • Foreach Döngüsü

C# Döngüler – 1.For Döngüsü

for(ifade1;kosul;ifade2)
{
   komut;
}

For döngüsünde genellikle 3 ifade kullanılır. İlk olarak, döngüde kullanılacak değişken oluşturulur ve bir başlangıç değeri verilir. int i = 0 gibi. Daha sonra bu değişkenin sınırı yani döngüyü hangi koşula kadar döndürmesi gerektiği yazılır. i<10 şeklinde bir ifade yazıldığında bu şu anlama gelmektedir; döngü 0’dan başlasın ve 10’a kadar devam etsin. Üçüncü ifade de ise değişkenin yapması gereken matematiksel ifadeye yer verilir. Örneğin i++ yazdığımızda, döngü 0’dan başlayıp 10’a kadar birer birer artarak devam etsin anlamına gelmektedir.

for(int i=0; i<10; i++)
{
    //komut
}

Başlangıç değeri kontrol değişkeni olarak adlandırılır ve bir nevi sayaç görevi görür. Koşul içinde kontrol edilecek değerdir. Burada i değişkeni en son 9’a geldiğinde döngü sonlanması gerektiğini bilir. Çünkü ikinci ifade olarak yazdığımız sınırlamaya göre i’nin alabileceği son değer 9’dur. Koşul burada, her seferinde döngünün sonlanıp sonlanmayacağını kontrol eder. Eğer koşul döngüyü sonlandırmazsa, sonsuz döngüye girer.

C# Döngüler – 2.While Döngüsü

While döngüsünün kullanımı da oldukça basittir. Döngüye vereceğimiz koşul doğru (true) olduğu sürece döngü çalışmaya devam eder. Koşul yanlış (false) olduğunda döngü kırılır.

while(koşul)
{
    //komutlar
}

Örneğin ekrana 10 kere “Hello World” yazdıralım.

int i = 1;
while (i<=10)
{
    Console.WriteLine("Hello World");
    i++;
}
Console.ReadLine();

For döngüsünde, döngü içinde tanımladığımız sayaç yani i değişkenini burada en üstte tanımladık. Koşul olarak ise i’nin 10’dan küçük eşit olmasını belirledik. Döngü her çalıştığında i’yi arttırması için i++ komut satırını ekledik. Bunu eklemediğimizde program sonsuz döngüye girer. Çünkü i, 1’e eşit olduğu için ve koşulda i<=10 olduğu için bu her seferinde doğru çıkacaktır.

C# Döngüler – 3.Do-While Döngüsü

Şu ana kadar işlediğimiz döngülerde ilk olarak koşula bakılıyor ve koşul sağlanırsa döngü çalıştırılıyordu. Do-while döngüsünün farkı, koşul sağlanmasa bile en az bir kere döngünün çalıştırılıyor olmasıdır.

do
    komut;

while(koşul)

veya

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

Örneğin 10’dan 1’e kadar sayıları yazdırma işlemini do-while döngüsü ile yapalım.

int sayac = 10;
do
{
    Console.WriteLine(sayac);
    sayac--;
} 
while (sayac > 1);

Burada koşulu 11 verseydik yine döngü bir kere çalışarak 10 çıktısı verecek ve sonlanacaktı. Özetle döngü koşul doğru olsa da olmasa da en az bir kere çalışır.

int sayac = 10;
do
{
    Console.WriteLine(sayac);
    sayac--;
} while (sayac > 11);

C# Döngüler – 4.foreach Döngüsü

Son döngümüz foreach döngüsü de for döngüsü gibi en yaygın kullanılan döngülerden biridir. Listeler ve diziler üzerinde işlem yapmak için kullanılan döngü yapısıdır. Özellikle eleman sayısının bilinmediği durumlarda büyük kolaylık sağlamaktadır. Henüz konu olarak listeler ve dizileri görmedik. Dolayısıyla ilerleyen zamanda daha iyi anlaşılacaktır.

int[] sayilar = { 1, 2, 3, 4, 5, 6 };
int carpim = 1;

foreach (int x in sayilar)
{
    carpim = carpim*x;
}

“sayilar” dizisinin elemanlarını çarparak carpim değişkenine atadık.

“break” Anahtar Kelimesi

break anahtar kelimesi döngüyü kırmak için kullanılır. Döngü içinde break anahtar kelimesine gelindiğinde döngü sonlanır ve kod akışı döngü sonrasından devam eder.

for (char a; ;)// Sonsuz döngü…
{
  a = Convert.ToChar(Console.ReadLine());
  if (a == 'q')
      break;
}

Aşağıda döngülerle ilgili örnekler bulunmaktadır. Aynı işlemi farklı döngüleri kullanarak kurabilirsiniz.

C# For Döngüsü Örnekleri

1’den 10’a kadar olan sayıları alt alta ekrana yazdıran C# kodunu yazınız.

for (int i = 1; i<=10; i++)
{
    Console.WriteLine(i);
}
Console.ReadLine();

0 ile 20 arasındaki çift sayıları toplayarak sonucu ekranda gösterelim.

int toplam = 0;
for (int i = 0; i<=20; i+=2)
{
    toplam += i;
}
Console.WriteLine(toplam);
Console.ReadLine();

1 ve 100 arası 3’e ve 5’e tam bölünebilen sayıları listeleyen C# kodunu yazınız.

for (int i = 1; i<100; i++)
{
    if(i%3==0 && i % 5 == 0)
    {
        Console.WriteLine(i);
    }
}
Console.ReadLine();

C# While Döngüsü Örnekleri

Klavyeden girilen sayının faktöriyelini hesaplayan C# kodunu yazınız.

Console.Write("Faktöriyeli bulunacak sayıyı giriniz:");
int sayi = Convert.ToInt32(Console.ReadLine());
int sonuc = 1;
while (sayi>1)
{
    sonuc *= sayi;
    sayi--;
}
Console.WriteLine("Sonuç:" + sonuc);
Console.ReadKey();

1-100 arasındaki sayıların toplamını bulunuz.

int toplam = 0;
int i = 0;
while (i < 100)
{
    toplam += i;
    i++;
}
Console.WriteLine("1 ile 100 arasındaki sayıların toplamı : " + toplam);

Kullanıcının girmiş olduğu sayının basamak sayısını bulan programı yapınız.

int sayi = Convert.ToInt32(Console.ReadLine());
int basamak = 0;
while (sayi > 0)
{
    basamak++;
    sayi = sayi / 10;
}
Console.WriteLine("Girdiğiniz sayı " + basamak + "basamaklıdır.");

“Aklından Bir Sayı Tut” oyununu C# ile yazalım. Bilgisayar tarafından rasgele tutulan sayıyı tahmin eden ve kaçıncı seferde bildiğini kullanıcıya ileten programı yazınız.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int tahmin=0, tutulan, sayac=0;
            Random rasgele = new Random();
            tutulan = rasgele.Next(1, 100);
            while (tahmin!=tutulan)
            {
                sayac++;
                Console.WriteLine("Sayı giriniz");
                tahmin = Convert.ToInt32(Console.ReadLine());
                if(tahmin > tutulan)
                {
                    Console.WriteLine("Sayıyı küçült");
                }
                else if (tahmin < tutulan)
                {
                    Console.WriteLine("Sayıyı büyüt");
                }
            }
                Console.WriteLine("Tebrikler!");
                Console.WriteLine(sayac + ". hakkınızda bildiniz");
                Console.ReadLine();
        }
    }
}

Kullanıcı çift sayı girdiği sürece sayı değeri alan programı yazınız.

int sayi = 0;
while (sayi % 2 == 0)
{
    Console.WriteLine("sayı girin..:");
    sayi = Convert.ToInt32(Console.ReadLine());
}
Console.WriteLine("tek sayı girdiniz");
Console.ReadLine();

Kullanıcıdan devam etmek istiyor musunuz sorusuna alınan yanıta göre sayı alıp alınan ve sayıların toplamını bulan programı yazınız. (Evet “e” veya Hayır “h”)

int toplam = 0, sayac = 1;
char cevap = 'e';
while(cevap=='e')
{
    Console.WriteLine("{0}. Sayıyı girin.",sayac);
    toplam += Convert.ToInt32(Console.ReadLine());
    
    Console.WriteLine("Devam etmek istiyor musunuz?(e,h)");
    cevap = Convert.ToChar(Console.ReadLine());
    sayac++;
}
Console.WriteLine("Sonuç={0}", toplam);
Console.ReadLine();

Kullanıcı 1 girerse toplama işlemi yapan, 2 girerse çıkarma işlemi yapan, 3 girerse programı sonlandıran C# kodunu yazınız.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp8
{
    class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {
                Console.WriteLine("İşlem yapmak istediğiniz numarayı seçiniz.");
                Console.WriteLine("1.Toplama \n2.Çıkarma\n3.Çıkış");
                int deger = Convert.ToInt16(Console.ReadLine());
                if(deger == 1)
                {
                    Console.Write("1.sayı: ");
                    int sayi1 = Convert.ToInt16(Console.ReadLine());

                    Console.Write("2.sayı: ");
                    int sayi2 = Convert.ToInt16(Console.ReadLine());

                    int toplam = sayi1 + sayi2;
                    Console.WriteLine("Sonuç: " + toplam);
                }
                else if (deger == 2)
                {
                    Console.Write("1.sayı: ");
                    int sayi1 = Convert.ToInt16(Console.ReadLine());

                    Console.Write("2.sayı: ");
                    int sayi2 = Convert.ToInt16(Console.ReadLine());

                    int cikarma  = sayi1 - sayi2;
                    Console.WriteLine("Sonuç: " + cikarma);
                }
                else if(deger == 3)
                {
                    break;
                }
                else
                {
                    Console.WriteLine("Hatalı değer girdiniz!");
                }
            }
            Console.WriteLine("Program sonlanmıştır...");
            Console.ReadLine();
        }
    }
}

C# foreach Döngüsü Örnekleri

{5,12,6,4,14,56,2,125} sayı dizisindeki elemanları toplayıp ekrana yazdıran kodu yazınız.

int[] sayilar = {5,12,6,4,14,56,2,125};
int toplam = 0 ;

foreach(int i in sayilar)
{
    toplam += i ;
}
Console.WriteLine(toplam);

İsimler dizisindeki isimleri sırayla ekrana yazdıran kodu yazınız.

string[] isimler = {"Ebrar","Nisa","Zülal","Zeynep Birgül","Sedef","Galip","Ahsen","Kağan"};

foreach(string eleman in isimler)
{
    Console.WriteLine(eleman);
}
Console.ReadKey();

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bunları da okumak ister misiniz