İlginizi Çekebilir
featured
  1. Ana Sayfa
  2. C#
  3. C# Döngüler

C# Döngüler

Döngü yapıları, programlarımız içerisinde bir işlemi belli bir miktarda gerçekleştirmek için yardımımıza koşarlar. C# Döngüler kavramına değinirken aktif olarak projelerimizde nasıl kullanabileceğimizi örnekler halinde gözlemleyeceğiz.

C# Döngüler Nelerdir?

Genel olarak kullandığımız ve çoğu örnek kod içerisinde görebileceğiniz üç adet döngü sistemi mevcuttur. C# döngüler konusunda göreceğimiz bu döngü sistemleri şu şekildedir;

  1. C#’ta While Döngüsü
  2. C#’ta Do-While Döngüsü
  3. C#’ta For Döngüsü

Bilgilendirici uyarımızı yaptığımıza göre artık yavaş yavaş C# döngüler kavramına geçerek C# döngüler üzerinde örnek çözümleri ve tanımlamaları hakkında konuşmaya başlayabiliriz.

C#’ta While Döngüsü

C#’ta While döngüsü kurarken döngümüzün tekrar sayıları genelde belli değildir. Döngüyü kurarken belirttiğimiz koşulumuz boolean türünde true yani sağlandığı sürece döngü devam eder, bu koşulumuzun değeri false olduğu takdirde döngü kırılır ve döngü sonrasında kodlar varsa onlar çalıştırılmaya devam eder. Teorik bilgi göz önüne alınırsa “iken” anlamına gelir. Bu kavramı “x sayısı y sayısından büyük iken aşağıdaki kodları çalıştır” şeklinde örneklendirebiliriz. C#’ta While Döngüsü kavramını ele aldığımız zaman “C# Kontrol Yapıları” konusuna oldukça benzerlik gösterdiğini görebiliriz.

C# Döngüler kavramını görsel olarak gözlemlemek daha yararlı ve akılda kalıcılığı arttırdığını düşündüğümden dolayı C#’ta While Döngüsü kavramını aşağıdaki akış şeması üzerinden birlikte örneklendirerek anlamaya çalışalım.

C#'ta While Akış Şeması
While döngüsünün akış şeması

Akış şeması üzerinde gözlemleyeceğiniz üzerinde yazacağımız kod dizilerinin çalışma prensibini görebilirsiniz. Bu çalışma mantığını daha iyi anlayabilmek için bir örnek oluşturalım.
Oluşturacağımız örnek içerisinde başlangıç, sayaç, bitiş verilerini tutacak üç adet değişken tanımlaması gerçekleştirerek başlangıç ile bitiş değerleri arasında kaç adet çift sayı olduğunu ekrana çıktı olarak gösterilmesini isteyelim. Bunun için yazacağımız kod şu şekildedir;

int start, finish, count = 0;
Console.Write(new string('-', 25) + "\n-> Başlangıç Değerini Girin: ");
start = Convert.ToInt32(Console.ReadLine()); // String olarak aldığımız değeri int türüne dönüştürüyoruz.
Console.Write("-> Bitiş Değerini Girin: ");
finish = Convert.ToInt32(Console.ReadLine()); // String olarak aldığımız değeri int türüne dönüştürüyoruz.
Console.WriteLine(new string('-', 25));
if (finish < start) // Bitiş değeri başlangıç değerinden düşük olup olmadığını kontrol ediyoruz.
Console.WriteLine("-> Bitiş Değeri Başlangıç Değerinden Büyük Olamaz.\n" + new string('-', 25));
else
{
int startTutucu = start; // Kaçıncı değerden bağladığımızı hafızada tutabilmek için değişken tanımlayarak başlangıç değerini atıyoruz.
while (start <= finish)
{
if (start % 2 == 0) // Başlangıç değerinden bitiş değerine kadar sayı '2' ile tam bölündüğü zaman sayaç bir artış gösterecek.
{
count++;
}
start++; // Başlangıç değerini bir arttırıyoruz.
}
Console.WriteLine("-> {0} Başlangıç değerinden {1} Bitiş değerine kadar toplam {2} çift sayı vardır.", startTutucu, finish, count);
Console.WriteLine(new string('-', 25));
}

Kod Çıktısı:

C# Döngüler Örneği
C# While Döngüsü Örnek

While döngüsünü boolean türünden de oluşturabileceğimizi söylemiştim. Bu tür bir tanımlama yaparak döngüyü oluşturacağımız zaman sonsuz döngü yaratmamak ve döngüyü kırmak için değeri false döndürebilir veya break; komutunu kullanabiliriz.

C#’ta Do-While Döngüsü

C#’ta Do-While döngüsü ile yukarıda anlatmış olduğum while döngüsü arasında tek fark bulunmaktadır. While döngüsünde kontrol ettikten sonra döngü içerisine girerek işlemi gerçekleştirirken Do-While döngüsü yaptığımız zaman işlem muhakkak bir kez çalıştırılır ve sonra verilen koşulun sağlanıp sağlanmadığı kontrol edilir. C#’ta Do-While döngüsü için hazırlamış olduğum akış şemasına göz atarak bu kavramı daha iyi anlayabiliriz.

C#'ta Do-While Akış Şeması
Do-While döngüsünün akış şeması

Akış şemasını koda dökerek bir örnek oluşturalım. Bu örnek üzerinde bilgisayar tarafından rastgele üretilen bir sayıyı üç deneme hakkı içerisinde tahmin etmeye çalışalım. Bu örnek için yazdım kod üzerinde uyguladığım aşamalar şu şekildedir;

#1 Random değeri üretebilmek için random sınıfının tanımlamasını gerçekleştirdim ve çeşitli işlemler için kullanacağım üç adet değişken tanımlaması gerçekleştirdim.
#2 Tanımladığım üç değişkenden birisi olan randomSayi ismindeki değişkenime 0 ile 10 arasında bir değer ataması gerçekleştirerek kullanıcıya değerin atandığına dair bir bilgi mesajı gösterdim.
#3 Bilgi mesajından sonra do-while döngüsünü başlatarak kullanıcıdan veri girişi yapmasını isteyerek üretilen değer ile eşit olup olmadığını kontrol ettirdim ve işlemin doğruluğunda döngüyü kıracak bir kontrol yapısı oluşturdum.
#4 Oluşturduğum kontrol yapısında eğer kullanıcı tahmin hakkı dolana kadar doğru tahmini gerçekleştiremezse üretilen değeri gösterecek bir yapı daha oluşturarak en sonunda ilk tahminin bittiğini göstermek için tahminHakki değişkenimin değerini bir arttırdım.

using System;

namespace RandomApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Random random = new Random(); // Random bir değer üretilmesini istediğim için random sınıfının tanımlamasını gerçekleştirdim.
            int randomSayi, seninTahminin, tahminHakki = 0;
            randomSayi = random.Next(0,10); // 0 ile 10 Arasında Random Değer Üretildi.
            Console.WriteLine(new string('-', 25)+"\n-> Random Değer Üretildi.\n-> Üretilen Random Değer 0 ile 10 Arasında Olabilir.\n"+new string('-',25));
            do
            {
                Console.Write("-> {0}. Tahminin: ",(tahminHakki+1));
                seninTahminin = Convert.ToInt32(Console.ReadLine());
                if(randomSayi == seninTahminin)
                {
                    Console.WriteLine(new string('-', 25) + "\nTebrik Ederim! {0} Deneme Hakkında Doğru Bildin.", (tahminHakki + 1));
                    Console.WriteLine("-> Bilgisayar Tarafından Üretilen Değer: " + randomSayi+"\n"+new string('-',25));
                    break; // Döngüyü Kırmak İçin
                }
                else if(tahminHakki>=2)
                {
                    Console.WriteLine(new string('-', 25) + "\nÜzgünüm Deneme Hakkın Doldu.");
                    Console.WriteLine("-> Bilgisayar Tarafından Üretilen Değer: " + randomSayi + "\n" + new string('-', 25));
                }
                tahminHakki++;
            } while (tahminHakki <= 2);
        }
    }
}

Kod Çıktısı:

C# Döngüler Örneği
C# Do-While Döngüsü Örnek

Bu vermiş olduğum örnek ile C# Döngüler içerisinde bulunan do-while çalışma prensibini anlayabilirsiniz ama while arasındaki farkı anlayamayacağınız için basit bir örnek kod dizisi daha gerçekleştirerek kod çıktısını sizlere göstermek istiyorum.

// Değişken Tanımlaması:
int whileDurdurucu = 5, baslangicDegeri =7, sayac=1;
do
{
Console.WriteLine(new string('-', 25) + "\n-> Do-While döngümüzün Başlangıç değerini {0} olarak belirledik.\n-> Bitiş değerini ise {1} olarak belirledik.", baslangicDegeri, whileDurdurucu);
Console.WriteLine("-> While içerisinde baslangicDegeri < whileDurdurucu koşulunu belirledik.\n-> Koşulumza rağmen işlem muhakkak {0} kere çalışıyor.", sayac);
Console.WriteLine(new string('-', 25));
sayac++; // İşlem başka devam edecek mi bu şekilde kontrol edebilirsiniz.
} while (baslangicDegeri<whileDurdurucu);

Kod Çıktısı:

C Sharp Do-While Çalışma Mantığı
C# Do-While Çalışma Mantığı

C#’ta For Döngüsü

C#’ta for döngüsü, diğer döngülerin aksine daha kolay bir tanımlanma ve kontrol ayarının bulunduğunu düşündüğüm bir döngü türüdür. C# Döngüler konusunda belki de anlaşılması en kolay ve daha kolay kod satırlarının oluşturulduğu bu yapı içerisinde koşul kontrol edilir doğru ise çalıştırılır ve sağlanmadığı duruma kadar devam eder.

C# Döngüler kavramını akış şemaları ile daha kolay anlaşılacağını düşündüğüm için while döngüsünün akış şemasına biraz düzenleme yaparak C#’ta For Döngüsü için bir akış şeması hazırladım. Bu akış şemasına gelin birlikte göz atalım.

C#'ta For Döngüsü Akış Şeması
For döngüsünün akış şeması

C# Döngüler kavramının temel yapı olarak benzerliğini bu akış şeması ile anlayabilirsiniz. Sonuç olarak hepsinin hizmet amacı aynı olarak gözükse bile kullanım alanları ve şekilleri bakımından farklıdır. C#’ta for döngüsünü kullanırken yazacağımız şablon üzerinde for(int i=1;…;…) kısmında bir başlangıç değerimizin tanımlamasını gerçekleştiririz. Bu tanımlamayı yaptıktan sonra for(…;i<koşul;…) kısmında ise döngümüzün kontrol edilecek koşul yapısını tanımlarız. Son for(…;…;i++) kısmımızda ise başlangıç değerini arttır veya azaltırız.

Bu kavramları kod içerisinde kullanarak basit bir örnek oluşturalım ve kod çıktısına göz atalım.

// Değişken Tanımlaması:
int carpimDegeri = 9, sonuc;
Console.WriteLine(new string('-', 20) + "\n{0}x(1-10) Çarpım Tablosu:\n" + new string('-', 20),carpimDegeri);
for(int i = 1; i <= 10; i++)
{
sonuc = carpimDegeri * i;
Console.WriteLine("-> {0} x {1} Sonucu : {2}", carpimDegeri, i, sonuc);
}
Console.WriteLine(new string('-', 20));

Kod Çıktısı:

C Sharp For Döngüsü Çalışma Mantığı
C# For Döngüsü Çalışma Mantığı

C# Döngüler kavramı içerisinde belki de en çok sevdiğim döngü türü olan C#’ta for döngüsünü iç içe olacak şekilde de tanımlayarak kullanabiliriz. Bu tanımlama için standart bir örnek olmuş üçgen tanımlamasını gerçekleştirerek iç içe for döngüsü kavramının çalışma mantığını anlamış olalım.

// Değişken Tanımlaması:
int ucgenSatiri = 7;
            
// For Döngü Tanımlaması:
for(int i = 0; i < ucgenSatiri; i++)
{
for(int k=1; k < ucgenSatiri - i; k++) // Boşlukları atacağımız for döngüsü.
{
Console.Write(" ");
}
for(int j=0; j <= i*2; j++) // Yıldızları atacağımız for döngüsü.
{
Console.Write("*");
}
Console.Write("    -> {0}. Satır\n",(i+1));
}

 

Kod Çıktısı:

C Sharp iç içe for döngüsü nasıl kullanılır.
C# İç içe for döngüsü

Bu üçgeni oluştururken uyguladığım aşamalar şu şekildedir;
#1 Kaç satıra sahip olacağını belirleyeceğimiz bir değişkene değer tanımlaması gerçekleştirdim. Tanımlama işleminden sonra bu değişkeni kullanarak önce kaç satır olacağını belirleyeceğim ilk for döngüsünün tanımlamasını gerçekleştirdim.
#2 Satırlara ulaştıktan sonra asıl benim için önemli olacak ikinci for döngüsünü tanımlayarak işlemleri gerçekleştireceğim sütunlara erişim sağladım. Bu for döngüsünü kullanarak satır sayımın bir eksiği şeklinde olacak şekilde boşluk bırakmasını istedim.
#3 Boşluğu bıraktıktan sonra üçgen şeklinin oluşması için ekrana ‘*’ bastırmasını istediğim bir for döngüsü daha oluşturdum. Bu oluşturmuş olduğum for döngüsün her zaman i değerinin 2 katından küçük veya eşit olacak şekilde basılmasını istediğim bir yapıda for döngümün inşasını bitiriyorum.

C# Döngüler kavramında belki de aklınızı en çok bu işlemler karıştırabilir o yüzden aklınıza takılan soruları veya konu işleyişi hakkında öneriniz bulunuyorsa aşağıda bulunan yorum yap kısmından benimle iletişime geçebilirsiniz.

Yorum Yap

Yazar Hakkında

Yazmayı, öğrenmeyi, öğrendiklerini paylaşmayı , kodlamayı ve günün birinde Yönetim Bilişim Sistemleri Uzmanı olmanın hayalini kuran birisiyim.

Yorum Yap