3 Nisan 2012 Salı

C# 'da Karar Yapıları - IF ELSE

Arkadaşlar insanoğlu yaşar, büyür ve ölür. Buna yaşam çizgisi denir. Programlamada da bir programın giriş ve çıkış noktaları vardır. Bunu arasında kalan kodlar da programın akış çizgisini oluşturur. İnsan yaşadığı süre boyunca bir çok karar vermek durumunda kalabilir. Belki günde milyonlarca kere karar veriyoruz, bilinçli ya da bilinçsiz. İşte arkadaşlar programlamada da istediğimiz zaman programın akışını değiştirebilir, istediğimiz durumlara göre bu akışı yönetebiliriz.

Programın tanımını hatırlayacak olursak, kullanıcıdan aldığı verileri işleyip, beklendik bir sonuç ya da çıktı üretmesi istenir. Dışarıdan girilen bu veriler arkadaşlar, değişkenlerde tutulur. Bu değişkenlerin değerlerine durum diyelim. Bu durumlara göre programın akışı istenildiği gibi dallanabilir.

C# 'da iki çeşit karar yapısı vardır. If else ve switch case karar yapıları olmak üzere. Bu makalemde if else karar yapısını kaleme alacağım.

If else karar yapısından bahsedecek olursak, kelime anlamından da anlaşılacağı gibi (eğer) ilk önce IF bloğunda iki seçenek arasında bir karşılaştıma yapar. IFparantezleri arasında Bool tipinde bir durum vardır. True ya da false döner. True olması halinde IF bloğunun içine girer. False olması halinde IF bloğunun içine girmez, varsa ELSE IF bloğunu kontrol eder. True ise bu bloğa girer. False ise varsa diğer ELSE IF bloklarını ve yine varsa son olarak ELSE bloğunu kontrol eder.

Arkadaşlar anlaşıldığı üzere istenilen kadar ELSE IF bloğu kullanabiliriz. Yine isteğe bağlı varsayılan durum için ELSE bloğunu da kullanabiliriz yada kullanmayabiliriz. Fakat ELSE durumu varsayılan bir durum olduğundan dolayı kullanacak isek bir tane ve en son blok olarak kullanmalıyız.

Program akışında bu bloklardan yalnızca bir tanesine girmesi istenir. Durumlar sağlanmaması halinde hiç bi bloğa girmeye de bilir.

If-Else karar yapısının kullanımı (Syntax) :
            
            Console.Write("Lütfen bir sayı giriniz : ");
            int sayi = Convert.ToInt32(Console.Read());
            if (sayi % 2 == 0)
            {
                Console.WriteLine("Çift sayı");
            }
            else
            {
                Console.WriteLine("Tek sayı");
            }

Yukarıda görüldüğü gibi IF ELSE veya ELSE IF blokları tek satırdan oluşuyor ise skop kullanılmadan da yazılabilir.

            Console.Write("Lütfen bir sayı giriniz : ");
            int sayi = Convert.ToInt32(Console.Read());
            if (sayi % 2 == 0)
                Console.WriteLine("Çift sayı");
            else      
                Console.WriteLine("Tek sayı");

İsteğimiz durum tek bir tane olmaya bilir. Bir kaç durumun aynı anda ya da her hangibirinin  gerçekleşmesi halinde IF bloğuna girmesini isteyebiliriz. Bunun için kullanıcı adı-parola örneğini verebiliriz.


Breakpoint atıp olayların nasıl gerçekleştiğine bakabiliriz.

            string kullaniciAdi = "Ali";
            int parola = 123;
            if (kullaniciAdi == "Ali" && parola == 123)
            {
                Console.WriteLine("Sisteme giriş yapıldı..");
            }
            else
            {
                Console.WriteLine("Sisteme giriş reddedildi..");
            }

Kullanıcı adı ve parolanın aynı denemede yani ikisi birlikte doğru olması halinde IF bloğunun içine girilecektir. 

            bool kgsVarMi = false;
            bool ogsVarMi = true;
            if (kgsVarMi && ogsVarMi)
            {
                Console.WriteLine("OGS kullan bekleme yapma..");
            }
            else if (kgsVarMi || ogsVarMi)
            {
                Console.WriteLine("Farketmez kullan birini..");
            }
            else
            {
                Console.WriteLine("Uzun bir yol seni bekliyor..");
            }

Mantıksal operatörler de kullanabiliriz. kgsVarMi==true yazmaktansa kgsVarMi bool tipinde olduğu için kendisini olduğu gibi kullanabiliriz. Görüldüğü üzere kgs yada ogsden sadece birinin bulunması yeterli olan ilk ELSE IF bloğuna girer ve program akışı ELSE bloğunun sonundan devam eder.

Hiç yorum yok:

Yorum Gönder