İlginizi Çekebilir
C# Kontrol Yapıları Nedir?
  1. Ana Sayfa
  2. C#
  3. C# Kontrol Yapıları

C# Kontrol Yapıları

C# Kontrol Yapıları, programlarımız içerisinde bazı koşullar belirlemek ve o koşulların sağlandığı durumlarda işlemlerin gerçekleşmesini istediğimiz zamanlarda bizlere yardım eden yapı türleridir. Bir programın olmazsa olmazı ne diye sorarsanız herkes bu konuda farklı cevaplar verebilir. Benim bu konuda cevabım ise kontrol yapılarıdır. Bunun sebebi ise her yazılan program içerisinde kontrol yapısının kendisine yer bulması olabilir. Peki bu kontrol yapıları neler gelin aşağıdaki başlıklarda inceleyelim.

C# Kontrol Yapıları

C# kontrol yapıları başlığını 3’e bölebiliriz. Bu üç adet kontrol yapısı şu şekildedir;

  • if-else kontrol yapısı,
  • if-else-if kontrol yapısı,
  • switch kontrol yapısı.

Gerçekleştireceğimiz işlemlere en uygun kontrol yapısını seçerek temeli oluşturmak programlarımızı daha stabil bir hale getirecektir.

If-Else Kontrol Yapısı

C# Kontrol yapıları üzerinde en çok kullanılan kontrol yapısıdır. If-Else kontrol yapısı içerisinde belirlediğimiz koşulun doğruluğu durumunda if yapısı altındaki kod satırlarını çalıştırır, koşul sağlanmaz ise else yapısı altında bulunan kodları çalıştırır ve sonraki satırdaki işlemlere devam eder. Tabi bu şekilde paylaşılan teorik bilgi anlaşılırlığı düşürebileceğinden if-else kontrol yapısı için hazırladığım akış şeması görseline aşağıda birlikte göz atalım.

C# if-else kontrol yapısı
C# if-else Akış Şeması

Akış şeması üzerindeki şeklimizi kod dizilerine dökelim ve bir örnek oluşturalım. Örnek üzerinde bir sayının çift veya tek olduğunun kontrolünü gerçekleştirecek bir yapı oluşturalım. Bu örnek için yazacağımız kod içeriği şu şekildedir;

// Değişken Tanımlaması:
int deger;
// Kullanıcdan Bir Değer Alalım:
Console.Write(new string('-', 20) + "\n-> Kontrol Edeceğiniz Bir Değer Girin:");
deger = Convert.ToInt32(Console.ReadLine());
Console.Write(new string('-', 20));
// Kontrol Yapısına Sokalım:
if (deger % 2 == 0)
Console.WriteLine("\n-> Girmiş olduğunuz [{0}] değeri çifttir.\n"+ new string('-', 20),deger);
else
Console.WriteLine("\n-> Girmiş olduğunuz [{0}] değeri tekdir.\n" + new string('-', 20),deger);

Kod Çıktısı:

C# Kontrol Yapıları Örnek Kod Çıktısı
C# if-else örnek kod çıktısı

Yazmış olduğum kod içeriğinde int veri tipinde bir adet değişken tanımladım. Kullanıcıdan değişkene veri aktarımı yapabilmek için klavyeden bir veri girmesini istedim ve giriş yaptıktan sonra if-else kontrol yapısında değerin çift mi, tek mi olduğunu kontrol ettirdim. Bu kontrol içerisinde deger%2 == 0 olarak belirlediğim koşul girilen değerin 2’ye bölümünden kalanı 0’a eşit olduğu takdirde sayıyı çift olarak algılayıp ekrana ilgili çıktıyı gösterecektir.

Yazmış olduğum bu kod satırını daha minimal bir hale getirerek bir kaç satır içerisinde kodumuzu yazmak istersek şu şekilde kodumuzu oluşturabiliriz;

// Değişken Tanımlaması:
int deger = 19;
string metin = deger % 2 == 0 ? "Tanımlı Değer Çifttir" : "Tanımlı Değer Tekdir";
// Ekrana Yazdırma İşlemi:
Console.WriteLine(metin);

Bu kod satırı içerisinde tanımladığım string veri tipindeki değişken içerisinde kontrol yapısını oluşturarak değişkenimize ilgili metin tanımlamasını gerçekleştirdim. Bu tanımlama içerisinde ‘deger‘ ismindeki değişkenimizin 2’ye bölümünden kalanı 0’a eşit olduğu takdirde ‘metin‘ değişkenimiz “Tanımlı Değer Çifttir” olarak döndürecek ve 0’a eşit olmazsa “Tanımlı Değer Tekdir” olarak geriye değer döndürecektir.

If-Else-If Kontrol Yapısı

C# Kontrol Yapıları oluştururken bir kod satırının bir çok etken koşul sağlandığında farklı kod satırlarının çalışmasını isteyebiliriz. Bu yapıları if-else-if kontrol yapısını kullanarak oluştururuz.

If-Else-If Kontrol yapıları ile özdeşleşmiş not ortalaması sonucunda genel durumu gösterecek harf notunun belirlenmesi örneğini ele alarak devam edelim. Her üniversite içerisinde harf yapıları farklılıklar olsada ortalama 8 adet harf bulunmaktadır. Bu 8 harf yapısını belirli ortalamalar sonucunda elde edildiğini düşünürsek ortalama değerinin birden fazla kontrol yapısına tabi tutulması gerekir. C# üzerinde bu örneğimizi şu şekilde oluştururuz;

// Değişken Tanımlaması:
int vizeNotu, finalNotu;
double ortalama;
// Notları Kullanıcıdan Alma:
Console.Write(new string('-', 20) + "\n-> Vize Notunu Girin: ");
vizeNotu = Convert.ToInt32(Console.ReadLine());
Console.Write("-> Final Notunu Girin: ");
finalNotu = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(new string('-', 20));
ortalama = (vizeNotu * 0.4) + (finalNotu * 0.6);
if (ortalama >=88 && ortalama <= 100)
{
Console.WriteLine("-> Ortalamanız: {0} \n-> Harf Notunuz: AA", ortalama);
Console.WriteLine(new string('-', 20));
}
else if(ortalama>=70 && ortalama <= 87)
{
Console.WriteLine("-> Ortalamanız: {0} \n-> Harf Notunuz: BA", ortalama);
Console.WriteLine(new string('-', 20));
}
else
{
Console.WriteLine("-> Ortalamanız: {0} \n-> Harf Notunuz: BB", ortalama);
Console.WriteLine(new string('-', 20));
}

Kod Çıktısı:

C# Else-if Kontrol Yapıları
C# if-else-if örnek kod çıktısı

Oluşturduğumuz bu örnek üzerinde birden fazla ihtimalimiz ve o ihtimaller sonucunda verilmesi istenilen bir harf notumuz bulunduğu için if-else-if yapısını kullandık. Bu kontrol yapılarını oluştururken dikkat ettiğiniz üzere C# Operatörler konusunda gördüğümüz çeşitli operatör türlerini de kullandım.

C# kontrol yapıları oluştururken öncül ana bir kontrol işlemi gerçekleştirilmesini isteyebiliriz. Bu öncül koşulun sağlanması durumunda farklı kontrollerin gerçekleştirilmesi istediğimiz zaman if yapılarını iç içe oluşturabiliriz. Bu yapı için bir örnek oluşturarak kod çıktısına göz atalım.

// Değişken Tanımlaması:
int hesabimizdakiPara = 6000, cekecegimizPara = 4000;
/* Banka ATM'si üzerinden günlük 5000 TL kadar çekebileceğimiz bir sistem kuralım. */
Console.WriteLine(new string('-', 20) + "\n-> Hesabınızda Bulunan Tutar: {0} TL",hesabimizdakiPara);
if(cekecegimizPara <= 5000 && cekecegimizPara>0)
{
if (cekecegimizPara <= hesabimizdakiPara)
{
hesabimizdakiPara -= cekecegimizPara; // Hesabımızdan parayı çekerek parayı eksiltiyoruz.
Console.WriteLine(new string('-', 20) + "\n-> Hesabınızdan {0} TL Çekildi.\n-> Hesabınızda Kalan Tutar: {1} TL", cekecegimizPara, hesabimizdakiPara);
Console.WriteLine(new string('-', 20));
}
}

Kod Çıktısı:

C# İç İçe İf-Else Yapısı Oluşturma
C# iç içe if konrol yapısı örnek kod çıktısı

Oluşturmuş olduğum kontrol yapısı üzerinde öncelikle çekmek istediğim ücretin “5.000” değerinden küçük veya eşit olması ve çekmek istenilen ücretin de pozitif bir değer olup olmadığını kontrol ettiriyorum. Kontrol işlemi başarılı bir şekilde gerçekleştikten sonra hesabımda bulunan para, çekmek istediğim ücretti karşılayabilecek bir düzeyde olup olmadığını teyit ettikten sonra gerekli işlemleri uygulayarak ekrana çıktı verilmesini sağlıyorum.

Switch Kontrol Yapısı

Switch kontrol yapıları, if-else kontrol yapısının bir alternatifi olarak ele alınabilir. Birden fazla değerin kontrol edilmesi istenildiği ve her değer için farklı işlemlerin yapılması istenildiği programlar için C# switch kontrol yapılarını kullanırız. Switch yapısı için oluşturmuş olduğum akış şemasını inceleyelim.

C# switch-case kontrol yapıları
C# Switch-Case Akış Şeması

C# Kontrol yapıları konusunda diğerlerine göre daha karmaşık bir yapıda olan switch-case kontrol yapısı için bir örnek oluşturalım ve kod çıktısına göz atalım.
Oluşturacağım örnek üzerinde kullanıcıdan kişisel bilgilerini ve doğum yılı verisini alalım. Aldığımız doğum yılı verisini işleyerek ehliyet sınavına girip giremeyeceğini kontrol ettirelim. Bu örnek için uygulayacağım aşamalar şu şekildedir;

#1 Öncelikle kullanıcıdan kişisel bilgilerini alabilmem için gerekli değişkenlerin tanımlamasını gerçekleştirdim ve programın çalıştığında bilgisayar üzerinden güncel yıl verilerini alacak DateTime yapısını kullandım.
#2 Kullanıcıdan aldığım veriler ışığında aldığım doğum yılı ile güncel yıl verisini çıkartarak kullanıcının yaşına erişim sağladım ve switch-case kontrol yapımı oluşturmaya başladım.
#3 Oluşturmuş olduğum kontrol yapısı içerisinde kullanıcının yaş bilgilerine göre hangi ehliyet türlerini alabileceği konusunda ekrana çıktı verilmesini istedim.

using System;

namespace KontrolYapilari
{
    class Program
    {
        static void Main(string[] args)
        {
            // Değişken Tanımlaması:
            string isim, soyad;
            int dogumYili, guncelYilVerisi, kullaniciYasi;
            // DateTime Tanımlaması:
            guncelYilVerisi = DateTime.Now.Year; // Yıl değerini değişkenimize tanımladık.

            // Kullanıcıdan Veri Alma İşlemleri:
            Console.Write(new string('-', 20) + "\n-> Ad: ");
            isim = Console.ReadLine();
            Console.Write("-> Soyad: ");
            soyad = Console.ReadLine();
            Console.Write("-> Doğum Yılınız: ");
            dogumYili = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine(new string('-', 20));
            // Kullanıcı Yaşının Hesaplanması:
            kullaniciYasi = guncelYilVerisi - dogumYili;
            switch (kullaniciYasi)
            {
                case 16:
                    Console.WriteLine("-> {0} Yaşında olduğunuz için alabileceğiniz ehliyetler: [A1 & B1]",kullaniciYasi);
                    break;
                case 17:
                    goto case 16;
                    break;
                case 18:
                    Console.WriteLine("-> {0} Yaşında olduğunuz için alabileceğiniz ehliyetler: [A1-A2-B-BE-C-C1-C1E-F-G]", kullaniciYasi);
                    break;
            }
        }
    }
}

Kod Çıktısı:

C# Switch-Case Kontrol Yapıları Örnek Kod Çıktısı
C# switch-case örnek kod çıktısı

Kod üzerinde case blokları kontrol sonucunda sağlanan değer tanımlı ise uygulanacak kod bloklarını temsil etmektedir. Eğer break; komutunu kullanmamış olsak koşul sağlanmasa bile bir aşağısındaki kod satırlarını da çalıştırmaya devam ederdi.

C# Kontrol yapıları konumuzun sonuna geldik fakat ilerleyen konularımız ve projelerimizde sıklıkla kontrol yapılarını kullanacağız. Bu yüzden aklınıza takılan bir soru veya konu işlenmesi hakkında bir öneriniz var ise 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