Merhaba Arkadaşlar,
Bu yazımda c# (C Sharp) programlama dilinde programın akışında bazı kontrolleri yaptığımız koşul ifadeleri olan if, else if ve switch case’den bahsedeceğim. Koşul ifadelerine basitçe bir örnek vermek gerekirse bir uygulamada (web, mobil, masaüstü, servis vb) kullanıcıdan aldığımız verilerin istediğimiz formatta mı değil mi bunun kontrolünü yapabildiğimiz kodlardır. Örneğin kullanıcının T.C. Kimlik numarasını aldığımızı düşünelim. Bu bilgi T.C. Kimlik no kurallarına uygun olup olmadığını if, else if koşullarını kullanarak doğruluğunu kontrol edebiliriz. İlerleyen kısımlarda bu kontrolün kodlarını da yazarak anlatmaya çalışacağım.
if koşulu
if koşuluyla birlikte karşılaştırma operatörlerini kullanarak bir değişkenin istediğimiz koşullarda olup olmadığını kontrol ederiz. Doğruluk durumuna göre de işlemlerimizi yaptırabiliriz.
Örneklerimi console uygulaması üzerinden anlatmaya devam edeceğim.
Kullanıcıdan bir değer girmesini isteyeceğiz. Bu değer sayısal ifade ise ekrana “Sayısal bir değer girdiniz” mesajı versin. Sayısal değilse de “Sayısal olmayan bir değer girdiniz” mesajı versin.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
static void Main(string[] args) { Console.WriteLine("Lütfen bir değer giriniz:"); // Console.WriteLine komutu ekrana mesaj basar ve bir satır atlatır double number; bool isNumeric = double.TryParse(Console.ReadLine(), out number); // Girilen değeri integer değişkenine atamayı deniyor. Eğer sayısal bir ifadeyse true değerini dönecek değilse false değerini dönecek if (isNumeric) // eğer girilen değer sayısal ifadeyse isNumeric değeri true olur. isNumeric true ise bu kod bloğuna girer. { Console.WriteLine("Sayısal bir değer girdiniz"); } else // isNumeric değeri false ise bu kısma girer { Console.WriteLine("Sayısal olmayan bir değer girdiniz"); } Console.ReadLine(); // kullanıcı bir tuşa basana kadar mesajın ekranda kalması için gereklidir. } |
NOT: if koşulundan sonra süslü parantez { } açılır ve kodlar içerisine yazılır. Eğer yazdığınız kod tek satırlıksa yani sadece bir tane ; kullanarak kodunu yazıyorsanız bu süslü parantezleri yazmanıza gerek yok.
else koşulu
if koşulu geçerli değilse çalışacak olan kod bloğudur. Bu kısmı yazmak zorunlu olmadığı için yazılmasa bile program çalışır. Yukarıdaki örnekte de görüldüğü gibi girilen değer sayısal ifade değilse else komutu devreye giriyor.
else if koşulu
Bu koşul if koşuluyla aynı mantıkta çalışıyor ancak else if koşulu if koşulunu geçerli değilse program else if koşulları varsa sırasıyla bunları da kontrol eder. Else if koşulları alt alta birden fazla şekilde yazılabilir. else if koşulu if ile else arasına yazılabilir. else if komutunu yazmak için if komutunun daha öncesinde belirtilmiş olması zorunludur ama else koşulu olmasa da programımız çalışır.
switch case koşulu
switch case koşulu da if bloğu gibi değişkenin belirli bir değere eşit olması durumunda çalışacak kod bloğudur.
if koşulundan farklı olarak if koşulunda birden fazla karşılaştırma yapılabiliyor. Örneğin if koşulunda girilen sayı x ten büyük y den küçük ise şu kod çalışsın diyebiliyorken switch case bloğunda ise sadece x eşittir şu değermi şeklinde sorgulama yapabiliyoruz.
Switch case kullanımı
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
static void Main(string[] args) { Console.WriteLine("Sayı Giriniz:"); var number = Convert.ToInt32(Console.ReadLine()); switch (number) // kontrol edilecek değişken veya koşul yazılır { case 1: // koşul bu değere eşitse aşağıdaki kod bloğu çalışır { Console.WriteLine("Girilen değer 1"); break; // eğer bu kod bloğuna girmişse işlem bitince break ile çıkılır. break yazılmazsa diğer koşullarıda kontrol edecektir. } case 2: { Console.WriteLine("Girilen değer 2"); break; } case 3: // aynı koşulda aynı işlemler yapılacaksa alt alta 2 tane case ifadesi yazılabilir. case 4: { Console.WriteLine("Girilen değer 2 den büyük"); break; } default: // eğer hiçbir koşula uymuyorsa bu koşul çalışacaktır. else gibidir. { Console.WriteLine("Girilen değer 4 ten büyük"); break; } } Console.ReadLine(); // kullanıcı bir tuşa basana kadar mesajın ekranda kalması için gereklidir. } |
C# (C Sharp) T.C. Kimlik No Kontrolü ve Doğrulaması Kodu
T.C kimlik numarasının belirli kurallar bulunmaktadır. Eğer bu kurallardan bir tanesine bile uymuyorsa geçersizdir diyebiliriz. Bu kurallar şu şekildedir;
- 11 hanelidir.
- Her hanesi rakamsal değer içerir.
- İlk hane 0 olamaz.
- 1. 3. 5. 7. ve 9. hanelerin toplamının 7 katından, 2. 4. 6. ve 8. hanelerin toplamı çıkartıldığında, elde edilen sonucun 10’a bölümünden kalan, yani Mod10’u bize 10. haneyi verir.
- 1. 2. 3. 4. 5. 6. 7. 8. 9. ve 10. hanelerin toplamından elde edilen sonucun 10’a bölümünden kalan, yani Mod10’u bize 11. haneyi verir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
static void Main(string[] args) { Console.WriteLine("TC Kimlik No Giriniz:"); if (TCKimlikNoKontrolu(Console.ReadLine())) Console.WriteLine("TC Kimlik No Geçerli"); else Console.WriteLine("TC Kimlik No Geçersiz"); Console.ReadLine(); } static bool TCKimlikNoKontrolu(string tcKimlikNo) { if (string.IsNullOrEmpty(tcKimlikNo)) return false; // girilen değer null ya da boş olamaz else if (tcKimlikNo.Length != 11) return false; // 11 hanelidir else if (tcKimlikNo.StartsWith("0")) return false; // İlk hane 0 olamaz. else { var isValidChars = "0123456789"; if (tcKimlikNo.Any(a => !isValidChars.Contains(a))) return false; // Her hanesi rakamsal değer içerir. var tekHaneliler = 0; var ciftHaneliler = 0; for (int i = 0; i < 9; i++) { var value = Convert.ToInt32(tcKimlikNo[i].ToString()); if (i % 2 == 0) tekHaneliler += value; else ciftHaneliler += value; } if ( (((tekHaneliler * 7) - ciftHaneliler) % 10).ToString() != tcKimlikNo[9].ToString()) return false; // 1. 3. 5. 7. ve 9. hanelerin toplamının 7 katından, 2. 4. 6. ve 8. hanelerin toplamı çıkartıldığında, elde edilen sonucun 10’a bölümünden kalan, yani Mod10’u bize 10. haneyi verir. if (((tekHaneliler + ciftHaneliler + Convert.ToInt32(tcKimlikNo[9].ToString())) % 10).ToString() != tcKimlikNo[10].ToString()) return false; // 1. 2. 3. 4. 5. 6. 7. 8. 9. ve 10. hanelerin toplamından elde edilen sonucun 10’a bölümünden kalan, yani Mod10’u bize 11. haneyi verir. } return true; } |
Kodları çalıştırıp T.C. Kimlik numarasını girerek kodun doğruluğunu test edebilirsiniz.
Bu yazımda if else, else if ve switch case koşullarından bahsetmeye çalıştım.
Hoşçakalın.