Operatörler ve Karar Yapıları (if, switch-case)


Herhangi bir programı yazarken, programda karşılaştırma veya bir işleme karşılık başka bir işlem gerçekleştirilmesini sağlamak isteyebiliriz. Bunun için de karar yapılarını kullanabiliriz. Bu yapıları kurarken çeşitli operatörleri kullanabiliriz. Bunlar şu şekilde kodlar içerisinde kullanılabilir:

İlişkisel Operatörler

==   Eşittir.
!=    Eşit değildir.
<     Büyüktür.
>     Küçüktür.
>=    Büyüktür veya eşittir.
<=    Küçüktür veya eşittir.

İlişkisel operatörleri genellikle if ile kullanılır. If ‘ i de küçük bir örnekle açıklamış olalım. Yani kullanıcıdan textbox’a girilen bir sayıyı bulmasını isteyen bir uygulama olsun. Uygulamanın design kısmında bir textbox ve bir de buton bulunsun. Butonun click event kodu da şu şekilde olacak ;

byte tahminEdilecekSayi = 13;
byte tahminEdilenSayi = Convert.ToByte(TextBox1.Text);
if (tahminEdilecekSayi == tahminEdilenSayi)
MessageBox.Show("Tebrikler, tahmininiz doğru.")
else
MessageBox.Show("Bilemediniz.");

Burada 3. satırda görülen if komutu içerisinde ki ilişkisel operatör ile doğru olup olmadığına bakılıp eğer doğruysa 4. satırı çalıştır değilse else den sonrasını çalıştır demek istedik. Tabii eğer if içerisinde sadece messageboxa yazdırma değil de daha fazla komut çalıştırmak istiyorsak bunu parantezler arasında yapmalıyız;

byte tahminEdilecekSayi = 13;
byte tahminEdilenSayi = Convert.ToByte(TextBox1.Text);
if (tahminEdilecekSayi == tahminEdilenSayi)
{
MessageBox.Show("Tebrikler, tahmininiz doğru.")
tahminEdilelecekSayi = tahminedilenSayi;}
else{
MessageBox.Show("Bilemediniz.");
tahminEdilelecekSayi = tahminedilenSayi;
}

Ben şimdi yeni satırları göstermek için saçma bir kod yazdım fakat ileride yapacağımız daha complex örneklerde bu daha rahat anlaşılabilir.
Bir de Mantıksal operatörler var bunları da karar yapıları ile kullanabiliriz. Bu operatörler de şunlardır ;

Mantıksal Operatörler

&      VE
|       VEYA (Alt Gr + <)
&&    VE(Kısayol)
||     VEYA(Kısayol)
!       DEĞİL

Bunların da karşılaştırılmaları şu şekilde olur (T : True(doğru) , F : False(yanlış));

VE

T T => T
T F => F
F T => F
F F => F

VEYA

T T => T
T F => T
F T => T
F F => F

DEGIL

T => F
F => T



Switch-Case yapısı ise şu yüzden kullanılabilir;

int Ay = DateTime.Now.Month;
  if(Ay == 1)
    MessageBox.Show("OCAK");
  else if (Ay == 2)
    MessageBox.Show("ŞUBAT");
.
.
.
  else if (Ay == 12)
    MessageBox.Show("ARALIK");
  else
    MessageBox.Show("Ay Tanımlı DEĞİL!!");

Burada ay değişkenine sistem tarihinden ay atadıktan sonra if yapısında program bütün if’lerin içine bakmak zorunda doğru olanı buluncaya kadar. Fakat switch-case de durum daha farklı. Bu şekilde istenen bir durumda switch-case kullanımı programın hızını arttırır. Tabii bizim şu anki program için pek sorun değil ama ya bu yapı daha da uzar diye düşünebiliriz. Switch-case’de kodlar şu şekilde oluşturulur ;

int Ay = DateTime.Now.Month;
switch(Ay)
{
  case 1 :
    MessageBox.Show("OCAK");
    break;
  case 2 :
    MessagaBox.Show("ŞUBAT");
    break;
.
.
.
  case 12 :
    MessageBox.Show("ARALIK");
    break;
  default
    MessageBox.Show("Tanımsız Ay");
}

Switch-case’de Ay değişkeninine gelen sayıya bakılarak gerekli case içerisindeki kod çalıştırılır. Bu şekilde biraz daha performans kazanılmış olur. Ayrıca iyi bir programcı da olunur.

Reklamlar

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s