C# Karar Yapıları Üzerinden Örnek Uygulamalar

C# Karar Yapıları Üzerinden Örnek Uygulamalar

C# Karar Yapıları Üzerinden Örnek Uygulamalar yazımızda C# programlama dili kullanarak if, else, switch gibi karar yapılarına örnekler ile detaylı bir şekilde anlatıyoruz Daha fazla bilgi için yazımızı okuyabilirsiniz

C# Karar Yapıları Üzerinden Örnek Uygulamalar

Bugün sizlere C# programlama dilinin en temel yapılarından olan karar yapılarına odaklanarak, farklı senaryolardaki kullanım örneklerini aktaracağım. Karar yapıları, programın akışını belli bir koşula göre yönlendirmenizi sağlar ve bu sayede programlarınız daha esnek ve anlaşılır hale gelir.

C# programlama dilinde en sık kullanılan karar yapılarından biri if-else yapısıdır. Bu yapı belirli bir koşulun sağlanıp sağlanmadığını kontrol ederek, programın akışını buna göre yönlendirir. if-else yapısı sayesinde programların belirli bir koşula göre farklı şekillerde çalışması sağlanabilir.

Bunun yanı sıra switch-case yapısı da C# dilinde sıkça kullanılan bir karar yapısıdır. switch-case yapısı, çok sayıda koşulu tek tek kontrol etmek yerine, daha kısa ve anlaşılır kodlar yazmamızı sağlar. Bu sayede programlamada daha az hata yapabilir ve kodlamayı daha hızlı hale getirebiliriz.

Bu makalede ayrıca, nullable değerler ve null-coalescing operatörü gibi konulara da değineceğim. C# programlama dilinde nullable değerlerin önemi son derece büyüktür. Nullable değerler, programlama hatalarını azaltmak ve tip uyumsuzluğunu engellemek için son derece önemlidir.

Tüm bu konulara ilişkin örnek uygulamalar da bu makalede yer alacak. İlk olarak giriş seviyesi örnek uygulamalarından başlayarak, orta seviyeye kadar örnekler sunacağız. Amacımız, bu örnekler sayesinde karar yapılarını daha iyi anlamak ve kullanmak.


if-else Yapısı

C# programlama dilindeki en temel karar yapılarından biri olan if-else yapısı, belirli bir koşulun sağlanıp sağlanmadığını kontrol eder ve buna göre farklı işlemleri gerçekleştirir. Bu yapı, genellikle tek bir koşulu kontrol etmek için kullanılır. İf bloğu içerisinde yer alan koşulun doğru olması durumunda if bloğundaki işlemler gerçekleştirilir. Ancak koşul yanlış ise else bloğundaki işlemler devreye girer.

Örneğin, kullanıcının girdiği bir sayıyı kontrol etmek istediğimizde if-else yapısını kullanabiliriz. Eğer sayı 0'dan büyükse "Sayı Pozitif", sayı 0'dan küçükse "Sayı Negatif", sayı 0 ise "Sayı Sıfır" mesajını ekranda gösteren bir program yazabiliriz. Bu programda if-else yapısı kullanarak koşulu kontrol edebiliriz.

Koşul İşlem
x > 0 "Sayı Pozitif" mesajını ekranda göster
x < 0 "Sayı Negatif" mesajını ekranda göster
x == 0 "Sayı Sıfır" mesajını ekranda göster

Bu örnek uygulamada, if bloğunun içerisinde yer alan koşul doğru olduğunda, yani sayı pozitif olduğunda ekranda "Sayı Pozitif" mesajı görüntülenecektir. Ancak koşul yanlış olduğunda, yani sayı negatif olduğunda veya sıfır olduğunda, else bloğu devreye girerek "Sayı Negatif" veya "Sayı Sıfır" mesajı ekranda görüntülenecektir.


switch-case Yapısı

C# programlama dilindeki karar yapısı olarak if-else yapısının yanı sıra, switch-case yapısı da oldukça kullanışlıdır. Özellikle birden fazla koşulun kontrol edilmesi gereken durumlarda, switch-case yapısı kullanılarak kodları daha kısa ve anlaşılır hale getirmek mümkündür. Bu yapı, var olan koşulların sırasıyla kontrol edildiği ve belirli bir koşulun gerçekleşmesi durumunda ilgili işlemin gerçekleştirildiği bir yapıdır.

Switch-case blokları içindeki koşullar arasında geçiş yapmak için break anahtar kelimesi kullanılır. Ayrıca hiçbir koşulun sağlanmadığı durumlarda default anahtar kelimesi kullanılarak ilgili işlem gerçekleştirilebilir. Bu şekilde, birden fazla koşulun kontrol edildiği durumlarda, kodların daha düzenli ve anlaşılır hale getirilmesi mümkündür.


break ve default Anahtar Kelimeleri

C# programlama dili içindeki switch-case yapısı, birden çok koşulun kontrol edilmesini sağlayan bir karar yapısıdır. switch-case yapısında break anahtar kelimesi, bir koşulun sağlandığı durumda switch-case bloğundan çıkılmasını sağlar. Aksi takdirde, diğer koşullar da işletilir. Yani, break olmadan, hangi koşulun sağlandığına bakılmaksızın tüm koşullar işletilir.

default anahtar kelimesi ise, hiçbir koşulun sağlanmadığı durumlarda kullanılır. Örneğin, bir switch-case yapısında, belirli bir durumun haricindeki tüm durumlar için default bloğu kullanılabilir. Ayrıca, default bloğu, programın beklenmedik bir şekilde sonlanmasını engelleyerek, hata ayıklama işlemlerinde de önemli bir rol oynayabilir.


Giriş Seviyesi Örnek Uygulama

C# programlama dilinin if-else yapısı kullanarak basit koşulların kontrol edilebileceği bir örnek uygulama yazalım. Örnek uygulamamızda, kullanıcının girdiği sayının tek mi yoksa çift mi olduğunu kontrol edeceğiz.

İlk olarak, kullanıcıdan bir sayı girmesini isteyelim ve bu sayıyı bir değişkene atayalım:

int sayi;Console.WriteLine("Bir sayı giriniz: ");sayi = Convert.ToInt32(Console.ReadLine());

Ardından, sayının tek veya çift olduğunu kontrol etmek için if-else yapısını kullanalım. Eğer sayı 2'ye bölündüğünde kalanı sıfırsa, sayı çifttir. Aksi takdirde sayı tek olacaktır:

if(sayi % 2 == 0){    Console.WriteLine("{0} sayısı çifttir.", sayi);}else{    Console.WriteLine("{0} sayısı tektir.", sayi);}

Böylece, C# programlama dilindeki if-else yapısı ile bir sayının tek veya çift olduğunu kontrol eden basit bir örnek uygulama yazmış olduk.


Orta Seviye Örnek Uygulama

Bu örnekte, kullanıcının girdiği karakterin hangi kategoriye ait olduğunu tespit edecek bir program yazacağız. Kullanıcının girdiği karakter harf ise, program karakterin büyük veya küçük harf olup olmadığını kontrol edecek ve sonucu ekrana yazdıracak. Sayı ise "Sayı" yazdıracak, özel karakter ise "Özel Karakter" yazdıracak.

Bunun için, öncelikle kullanıcının girdiği karakteri almalı ve karakteri hangi kategoriye göre kontrol edeceğimizi belirlemeliyiz. Bunun için, if-else yapısını kullanabiliriz.

Kod Açıklama
char ch; Kullanıcının girdiği karakteri saklayacak değişkeni tanımlıyoruz.
Console.Write("Bir karakter giriniz: "); Kullanıcıdan bir karakter girmesini istiyoruz.
ch = Console.Readline()[0]; Kullanıcının girdiği karakteri değişkene atıyoruz.
if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) Eğer girilen karakter bir harf ise, büyük veya küçük harf olup olmadığını kontrol eder.
{
if (ch >= 'a' && ch <= 'z') İf bloğu içinde karakterin küçük harf olup olmadığını kontrol eder.
{
Console.WriteLine("Girilen karakter bir küçük harf."); Harfin küçük harf olduğunu ekrana yazdırır.
}
else İf bloğu içinde karakterin büyük harf olup olmadığını kontrol eder.
{
Console.WriteLine("Girilen karakter bir büyük harf."); Harfin büyük harf olduğunu ekrana yazdırır.
}
} Eğer girilen karakter sayı veya özel karakter ise, else bloğunda ilgili mesajı ekrana yazdıracak.
else if (ch >= '0' && ch <= '9')
{ Console.WriteLine("Girilen karakter bir sayı.");
}
else
{ Console.WriteLine("Girilen karakter bir özel karakter.");
}

Bu program, kullanıcının girdiği herhangi bir karakterin harf, sayı veya özel karakter olup olmadığını tespit eder ve sonucu ekrana yazdırır.


ternary Operatörü

C# içindeki karar yapıları arasında switch-case yapısının dışında da tek satırda karar yapıları yazmak için ternary operatörü kullanılabilir. Ternary operatörü, koşula göre farklı bir değer döndürme durumları için kullanılabilir. Bu operatör, alternatif karar yapısı olarak if-else'den daha kısa ve daha anlaşılır kod yazmanızı sağlar.

Ternary operatörünün en basit kullanımı, bir koşula göre bir değer döndürmek için kullanılan tek satırlık bir if-else yapısıdır. Ternary operatörü, bir koşul sağlandığında belirli bir işlemi gerçekleştirir. Koşulun sağlanmaması durumunda ise başka bir işlem gerçekleştirerek alternatif bir sonuç döner.

Kullanım Şekli Açıklama
koşul ? sonuç1 : sonuç2 Koşul doğruysa sonuç1 döndürülür, yanlışsa sonuç2 döndürülür.

Bu kullanım şekli sayesinde, karmaşık if-else yapısının daha kısa ve anlaşılır bir şekilde yazılması mümkündür. Bununla birlikte, ternary operatörünün kullanımı bazı durumlarda karmaşık hale gelebilir ve kodun anlaşılması zorlaşabilir. Bu nedenle, kullanımı sınırlı tutmak veya gereksiz yere kullanmamak daha iyi bir tercih olabilir.


Nullable Değerler ve Null-Coalescing Operatörü

C# programlama dilindeki değişkenler, varsayılan olarak null olarak tanımlanmaz ve bu nedenle boş değerlerle çalışmak istendiğinde hata verirler. Ancak, bazı durumlarda değişkenin null olup olmadığını kontrol etmek zorunlu hale gelebilir. İşte bu noktada null-coalescing operatörü devreye girer.

Null-coalescing operatörü (??), bir değişkenin null olup olmadığını kontrol eder ve null ise varsayılan bir değer belirler. Bu operatör, kısa ve anlaşılır kod yazmak için son derece önemlidir. Özellikle kullanıcı girdileri gibi değişkenlerin boş olma ihtimali olan durumlarda sık sık kullanılır.

Örneğin, bir kullanıcının doğum tarihini girmesi istendiğinde, boş bir değer yerine varsayılan bir tarih belirlemek isteyebiliriz. Bunun için aşağıdaki kod bloğunu kullanabiliriz:

Kod Açıklama
DateTime? birthdate = null; birthdate değişkeni nullable olarak tanımlandı.
DateTime defaultDate = new DateTime(2000, 1, 1); Varsayılan tarih belirlendi.
DateTime birthdateToUse = birthdate ?? defaultDate; birthdate null ise, defaultDate kullanılacak.

Bu kod bloğu, kullanıcının doğum tarihini tutan birthdate değişkeninin null olup olmadığını kontrol eder ve null ise, defaultDate değişkeninde belirtilen varsayılan tarihi kullanır. Bu sayede, program hata vermeden çalışır ve kullanıcıya önceden belirlenen bir veri gösterilir.

Nullable değerlerin kullanımı, programlama hatalarının azaltılmasını ve tip uyumsuzluğunun engellenmesini sağlar. Bu nedenle, C# programlama dili içinde null-coalescing operatörüne hakim olmak ve nullable değerlerin kullanımına aşina olmak son derece önemlidir.


Nullable Değerlerin Önemi

C# programlama dilinde değişkenlerin null/boş olabilme durumlarına nullable değerler adı verilir. Değişkenler, genellikle programlama sırasında, kullanıcının girdiği veriler veya dış kaynaklardan aldığı verilerle dolu olur. Ancak, bazı koşullar altında değişkenlerin içi boş olabilir. Örneğin, kullanıcı tarafından veri girilmediği durumlarda veya veritabanından veri alınmazsa, değişkenler null olabilir.

Nullable değerler, programlama hatalarını azaltmak ve tip uyumsuzluğunu engellemek için son derece önemlidir. Bir değişkenin null olup olmadığına dikkat etmezseniz, programcıların büyük bir hata yapabilme riski vardır. Programcılar, bir değişkenin null olabileceğini düşünmeden, o değişkene yapılabilecek işlemleri düşünebilirler. Ancak, değişken null olduğunda, bu işlemler hata verebilir veya programın tamamen çökmesine neden olabilir.

Nullable değerler, programlama dili içinde daha doğru ve kontrol edilebilir kod yazmak için bir araçtır. Programcılar, değişkenlerin null olabilme durumlarını göz önünde bulundurarak, bu duruma göre kodlarını oluştururlar. Bu sayede, hem hataları önceden fark edebilirler hem de kodlarının daha tutarlı olmasını sağlayabilirler.


Örnek Uygulamalarıyla C# Karar Yapıları

Bu bölümde, if-else ve switch-case yapılarını kullanarak C# programlama dilinde farklı senaryolardaki örnek uygulamaları ele alacağız. Örneklerimiz, karar yapılarının kullanım alanlarını daha net bir şekilde gösterirken, aynı zamanda bu yapıların nasıl kullanılması gerektiği konusunda da fikirler sunacaktır.

İlk uygulamamız bir if-else yapı örneğidir. Bu basit programda, kullanıcının girdiği sayının pozitif veya negatif mi olduğu kontrol ediliyor. Eğer sayı 0'dan büyükse "Sayı pozitif" mesajı yazdırılırken, sayı 0'dan küçükse "Sayı negatif" mesajı ekrana çıktı olarak verilecektir.

İkinci örneğimiz ise switch-case yapılarına odaklanıyor. Bir harfli not sistemi kullanarak, öğrencilerin aldıkları notlara göre geçme veya kalma durumlarını belirlemeye çalışacağız. Bu programda, kullanıcının girdiği notların harfli karşılıkları ve geçme/kalma koşulları switch-case kullanılarak belirleniyor.

Bu örnekler, temel C# karar yapılarının farklı senaryolarda nasıl kullanılabileceğine dair net fikirler sunuyor. Ancak karar yapıları, C# programlama dilinin çok daha geniş bir yelpazesini oluşturur ve kapsamlı projelerde bu yapıların doğru bir şekilde kullanılması son derece önemlidir.


Giriş Seviyesi Örnek Uygulama

C# programlama dilinde bir sayının pozitif, negatif veya sıfır olup olmadığını kontrol etmek için if-else yapısı kullanılabilir. Ancak bu senaryo için switch-case yapısı daha uygun olacaktır. Kullanıcının girdiği sayıya göre farklı bir işlem yapılacak ise switch-case yapısının default anahtar kelimesi kullanılarak girdiğinde hata mesajı verilebilir.

Giriş seviyesi bir örnek uygulama olarak, kullanıcının girdiği sayının pozitif, negatif veya sıfır olduğunu belirleyen bir program yazabiliriz. Bu program için kullanıcının girdiği sayı, int tipinde bir değişkene atanır ve if-else yapısı ya da switch-case yapısı kullanarak sayının pozitif, negatif ya da sıfır olduğu belirlenir. Aşağıdaki örnek kod blokları kullanılarak bu program yazılabilir.

    int sayi = Convert.ToInt32(Console.ReadLine());    if (sayi > 0)        Console.WriteLine("Girilen sayi pozitif");    else if (sayi < 0)        Console.WriteLine("Girilen sayi negatif");    else        Console.WriteLine("Girilen sayi sifir");
    int sayi = Convert.ToInt32(Console.ReadLine());    switch (Math.Sign(sayi))    {        case 1:            Console.WriteLine("Girilen sayi pozitif");            break;        case -1:            Console.WriteLine("Girilen sayi negatif");            break;        default:            Console.WriteLine("Girilen sayi sifir");            break;    }

Bu örnek programlar sayesinde, kullanıcının girdiği sayının pozitif, negatif veya sıfır olduğunu kolaylıkla belirleyebiliriz. Bu tarz basit örnekler giriş seviyesi C# öğrenicileri için oldukça yararlı olabilir ve temel karar yapılarını daha iyi anlamalarına yardımcı olabilir.


Orta Seviye Örnek Uygulama

C#'ta karar yapıları kullanarak öğrencilerin aldıkları notlarını harfli sistemde gösteren ve geçme/kalma durumlarını belirleyen bir program yazabiliriz. Programımız iki adım halinde olacak; ilk adımda öğrencinin aldığı notu harfli sistemde gösterirken, ikinci adımdaysa not ortalamasına göre geçti veya kaldı belirleme işlemini gerçekleştireceğiz.

İlk adım için, kullanıcının girdiği notu harf karşılığına dönüştüren bir kontrol yapısı oluşturacağız. Bu kontrol yapısı için if-else veya switch-case kullanabiliriz. Harf notuna karşılık gelen hesaplama işlemini gerçekleştirdikten sonra, kullanıcıya aldığı notu harfli sistemde gösteren bir çıktı vereceğiz. Bu adım tamamlandıktan sonra, ikinci adıma geçeceğiz.

İkinci adımda ise, öğrencinin not ortalamasını hesaplayıp, geçti veya kaldı belirleme işlemini gerçekleştireceğiz. Bu adımda, öğrencinin hangi dönemde hangi dersleri aldığına ve her dersin kredi değerine ihtiyacımız var. Bu bilgilerin girildiği bir tablo oluşturabiliriz. Tabloda ders adı, kredi değeri ve aldığı not gibi bilgiler yer alacaktır. Öğrencinin not ortalaması hesaplandıktan sonra, bu ortalamaya göre geçti veya kaldı şeklinde bir çıktı vereceğiz.

Ders Adı Kredi Değeri Aldığı Not
Matematik 4 75
Türk Dili ve Edebiyatı 2 86
Fizik 3 60
Kimya 3 90

Bu şekilde, öğrenci notlarına ve not ortalamalarına göre geçti veya kaldı durumlarını belirleyebiliriz. Hem if-else hem de switch-case kullanarak öğrenci notlarını harfli sistemde gösteren ve geçti veya kaldı durumunu belirleyen bir program yazabiliriz. Bu program, öğrencilerin başarılı veya başarısız oldukları konusunda net bir geri bildirim sağlayacaktır.