Bilindiği üzere C#’ta karşılaştırma ve logic operatörleri mevcuttur. Programlama yaparken çoğunlukla bu operatörleri kullanarak karar mekanizmaları kurgulanır (Operatörler hakkında bilgi için buraya tıklayınız). Genellikle bizden beklenen farklı şartlar altında farklı davranan programlar geliştirmektir.
Condition (Şart)
Operatörler kullanılarak ifade edilen yapı. Yani true ya da false değerine sahip bir ifade. Condition’lar ile karar mekanizmaları kurup program akışının iskeletini oluştururuz.
Örneğin: EĞER (yas > 18) { oy kullanma hakkı var } DEĞİLSE { oy kullanamaz }
if
if İngilizcede ‘Eğer’ manasına gelir. Programlamada belirli bir şart oluştuğunda bir kod bloğu çalıştırmak istiyorsak if kullanırız. IF ya da If olarak yazılamaz, sadece ‘if’ geçerlidir. Aksi taktirde kod hata üretir.
Bu örneklemeyi değerler ve değişkenlerin de kullanıldığı şekilde yapalım:
Burada 20 değeri 18’den büyük olduğu için if bloğu çalışacaktır. Daha sonra int a ve int b değişkenleri oluşturulmuş ve ilk değerleri atanmıştır. a değişkeninin değeri b değişkeninden büyük olduğu için if bloğu çalışacaktır.
else
else İngilizce’de ‘Aksi halde’ manasına gelmektedir. Programlamada belirli bir şart oluştuğunda bir kod bloğu çalıştırmak istiyorsak if kullanırız. Eğer şart oluşmadığında farklı bir kod bloğu çalıştırmak istiyorsak else kullanırız.
kursBittiMi isimli değişken false değeri ile oluşturulmuştur. if içerisindeki condition, yani (kursBittiMi == true) false olduğu için else bloğu çalışacaktır. Ekran çıktısı da aşağıdaki gibi olacaktır.
Şimdi ise biraz daha interaktif bir kod parçası yazalım. Ekrandan okuduğumuz değerler ile bir karar mekanizması kuralım.
Burada koda baktığımızda if bloğunun mu yoksa else bloğunun mu çalışacağına dair bir yorum yapmamız mümkün değildir. Çünkü if içerisindeki condition tamamen ekrana girilen değerlere bağlı olarak değişecektir. Eğer girilen iki değer de eşit ise if bloğu çalşır. Aksi durumda else bloğu çalışacaktır.
Bu örnekte x için 15, y için 150 değeri girilmiştir. condition (x == y) false olduğu için else bloğu çalışmıştır.
else if
else if ifadesi “bir önceki şart oluşmamışsa” ve “yeni bir şarta daha bakmak istenildiğinde” kullanılır. İnteraktif bir kod parçası ile örnekleyelim:
Ekrandan yaş bilgisi istenmiş ve yaş değerinin farklı durumlarında farklı işlemler yapılmıştır. Ekran çıktısı:
Yaş değeri olarak 31 girilmiştir. Bu durumda if içerisindeki condition değeri false olur (yas < 18 false’tur). else if içerisindeki condition ise true değerini alır ve bu blok çalışır. Bu blok çalıştığı için sondaki else bloğu kontrol edilmez.
Kısaltılmış if … else
Birden fazla satır kod yazmak yerine kısaltılmış if … else yazamak da mümkündür.
variable = (condition) ? degerA : degerB;
Eğer condition değeri true ise variable isimli değişkene degerA ataması yapılır, fakat condition değeri false ise degerB ataması yapılır.
if … else blokları örnekte olduğu gibi tek satıra düşürülmüştür. İki kod parçası da aynı işi yapmaktadır.
Switch
Birden fazla koşulu kontrol etmek istediğimizde if … else if … else if … else gibi bloklar yazıyoruz. Bu işin aynısını switch ile de yapabiliriz.
Görüldüğü üzere ekrandan haftanın kaçıncı günü olduğu bilgisi alındı ve değerler kontrol edildi, uygun mesaj verildi. Burada dikkat çeken switch() ifadesinin parantezleri içerisinde değerini merak ettiğimiz ifadeyi yazıyoruz. Burada gun isimli değişkeni buraya yazdık. Mesela şu da olabilirdi: switch(x * y). Bu durumda x ile y değişkenlerinin çarpımının değeri kontrol edilmiş olunacaktı. Bir diğer dikkat çeken ifade ise break. Bu kelime C# özelinde rezerve edilmiş bir kelimedir. Tıpkı var gibi. break anahtar kelimesi geçen yerde C# switch’ten çıkar. Yani diğer koşullara zaten bakmaz. Ayrıca bu örnekte case ile break arasında sadece bir satır kod yazılmış durumda ama buraya istenildiği kadar kod yazılabilir. Yani case “1”: durumunda bizim yazmamız gereken kod satırı ne ise o kadar yazabiliriz.