C# Karar ve Kontrol Deyimleri
C# Karar ve Kontrol Deyimleri
Program yazarken bazen koşullar altında gerçekleşmesini istediğiniz durumlar olabilir. Bu bölümde anlatılan if-else ve switch deyimleri ile bu tür kapsamlı programlar geliştirilebilir. Genel anlamda programlama dilinde kullanılan koşul yapıları iki çeşittir.
Bunlar;
- if-else deyimi
- switch deyimi
dir.
If-Else Deyimi
Belirli bir koşula göre yapılması istenilen işlemler, If-Else deyimi kullanılarak gerçekleştirilir. If-Else deyiminin kullanımı ve akış diyagramları ile gösterimi ise şu şekildedir.
if(koşul) { Koşul doğruysa yapılacak işlemler; } else { Koşul yanlışsa yapılacak işlemler; }
Diyagramda gördüğünüz gibi, programın akışı if deyiminin olduğu satıra geldiğinde parantezler içerisindeki KOŞUL ifadesi çalıştırılır. Bu koşul ifadesi true (Doğru) yada false (Yanlış) olmak üzere bir değerüretmektedir.
Eğer programımızda koşulub doğru olmasına bağlı işlem yapmak istiyorsanız, koşulun yanlış olduğu durumlarda işlem yapılması istenmiyorsanız Else bloğu program içerisinde hiç kullanılmaz.
if(koşul) { Koşul doğruysa yapılacak işlemler; }
If koşul deyimlerinde zaman zaman birden fazla koşula bağlı işlemler yapmamız gerekebilir.
VE ( && ) bağlacı
if((koşul1) && (koşul2)) { koşul1 ve koşul2 doğruysa yapılacak işlemler; } else { koşullardan en az birisi veya her ikisi de yanlış ise yapılacak işlemler; }
VEYA ( || ) bağlacı
if((koşul1) || (koşul2)) { koşul1 veya koşul2’den en az birisi veya her ikisi de doğruysa yapılacak işlemler; } else { koşullardan her ikisi de yanlış ise yapılacak işlemler; }
Örnek : Klavyeden girilen sayının hem 4’e hem de 5’e kalansız bölünüp bölünemediğini ekrana yazan programı yazınız.
Console.Write(“Bir sayı giriniz:”);
int sayi = Convert.ToInt32(Console.ReadLine());
if((sayi % 4 == 0) && (sayi % 5 ==0))
{
Console.WriteLine(“{0} sayısı hem 4’e hem de 5’e kalansız bölünebilir”,sayi);
}
else
{
Console.WriteLine(“{0} sayısı hem 4’e hem de 5’e kalansız bölünemez”, sayi);
}
İç-İçe if ifadesi
Birden fazla koşula ihtiyaç duyulan durumlarda iç-içe if ifadeleri kullanılırlar. Bir if koşuluna kaç tane else if ekleyebileceğiniz konusunda hiçbir sınır yoktur. iç-içe if ifadelerinin kullanımı ise şu şekildedir.
if(koşul1) { koşul1 doğruysa yapılacak işlemler; } else if(koşul2) { koşul1 yanlışsa ve koşul2 doğruysa yapılacak işlemler; } else { her iki koşul da yanlışsa yapılacak işlemler; }
İç-İçe if ifadesinin başka bir kullanım şeklide şöyledir.
if (koşul1) { if (koşul2) { koşul2 doğruysa yapılacak işlemler; } else { koşul2 yanlışsa yapılacak işlemler; } } else { koşul1 yanlışsa yapılacak işlemler; }
Switch-Case Deyimi
Switch-Case deyimi de If-Else deyimleri gibi karar kontrol mekanizmalarında kullanılmaktadır.Switch-Case deyimi genellikle karmaşık if-else bloklarının yerine, daha okunabilir oldukları için tercih edilmektedir. Switch-Case ile yapabileceğimiz karşılaştırmaları if-else ile de yapabiliriz. Switch-Case yapısı şu şekilde çalışır; bir deyimin değeri, sabitlerden oluşan bir listede peş peşe test edilir. Deyimin değeri sabitlerden birisiyle eşleşince, bu eşleşmeyle ilgili işlemler gerçekleştirilir. Switch-Case ifadesinin genel formu şu şekildedir;
switch(ifade) { case sabit1: yapılacak işlemler; break; case sabit2: yapılacak işlemler; break; case sabit3: yapılacak işlemler; break; . . . default: yapılacak işlemler; break; }
Switch-Case yapısının çalışmasına bir göz atalım;
- Önce switch parantezleri içerisindeki ifade hesaplanır.
- Programın akışı, hesaplanan ifade ile aynı case sabitinin bulunduğu satıra gelir.
- Eğer hesaplanan ifade, mevcut case sabitlerinden herhangi birisi ile eşleşmiyorsa default anahtar sözcüğünün bulunduğu yere gelir ve program buradan devam eder.
Her case satırı içerisindeki işlemlerimiz tamamlandıktan sonra, ilgili case satırının sonuna geldiğimizi belirtmek için break komutu kullanılır.
Switch-Case Yapısı İle İlgili Önemli Kurallar:
- Case anahtar sözcüğünün yanındaki ifadeler sabit olmak zorundadırlar. Bu ifadeler içerisinde değişken bulunamaz.
- Case ifadeleri herhangi bir tam sayı sabiti, karakter veya string sabiti olabilir.
- Default durumunu istediğimiz yere yazabiliriz. Aynı şekilde case ifadelerini de istediğimiz sırada yazabiliriz.
- Bir switch bloğunda iki veya daha fazla sayıda aynı değere sahip case ifadesi bulunamaz.
- Bir switch bloğunda default case olmak zorunda değildir.
Akış herhangi bir case ifadesine geldiğinde, akış farklı bir case ifadesine yönlendirilmek istenirse goto anahtar sözcüğü kullanılır.
Örnek:
string mevsim; Console.Write("Bir mevsim adı giriniz : "); mevsim=Console.ReadLine(); switch (mevsim) { case "ilkbahar": Console.Write("Mart Nisan Mayıs"); break; case "yaz": Console.Write("Haziran Temmuz Ağustos"); break; case "sonbahar": Console.Write("Eylül Ekim Kasım"); break; case "kış": Console.Write("Aralık Ocak Şubat"); break; default: Console.Write("Mevsim adı hatalı"); break; } Console.ReadKey();
Kaynak: Megep Modülleri