5 Mart 2019 Salı

C# Ders-4

Şart/Kontrol Deyimleri

Bir önceki derste basit bir şekilde if kullanımını görmüştük. Bu dersimizde if kullanımına farklı bir örnek verip, diğer şart/koşul ifadelerinin anlatımına geçeceğiz. Dersimizin senaryosu şu şekilde: "Her seferinde 1 öğrencinin olmak şartıyla girilen notlara göre ağırlıklı not ortalamasını hesaplayan, sonuca göre geçip geçmediğini ve harf notunu mesaj kutusuyla ekrana yazdıran bir program yazınız. Öğrencinin 1 ara sınav, 1 final sınavı ve 1 quizi olmak üzere toplam 3 sınavı vardır. Not ağırlıkları ara sınav için %30 , final sınavı için %50 , quiz için %20 şeklindedir". Bileşenlerimiz 4 tane label, 3 tane textbox, 1 tane button. İsimlendirmeleri,

label1 = lblMesaj , text = " Öğrenci Notlarını Giriniz"
label2 = lblSinav1 , text = "Sınav 1:"
label3 = lblSinav2 , text = "Sınav 2:"
label4 = lblSinav3 , text = "Sınav 3:"
textbox1 = txtSinav1
textbox2 = txtSinav2
textbox3 = txtSinav3
button1 = btnhesapla , text = "Hesapla"

Components



  • Satır 20: btnHesapla için click eventi,
  • Satır 22,23,24: Kullanacağımız verilere RAM de yer ayırmak için oluşturduğumuz değişkenler.
  • Satır 26: IsNullOrWhiteSpace() metodu sonundaki parantezleri içine yazılı olan string tipindeki verinin tanımsız yada sadece boşluk " " karakterinden oluşup oluşmadığını kontrol eder. Eğer veri null yada sadece space ise true döner, diğer durumlarda false döner.Bu kod parçasını kullanma amacımız notların girildiği textbox ın boş geçilememesini sağlamak. Yazdığımız kod parçası boş geçildiğinde true döndürüyordu bize de false lazım olduğu için kod parçasının başına değili anlamında ünlem ("!") koyduk.
  • Satır 28: if şartını sağladıysa txtSinav1 in textini double tipine convert et ve not1 adında oluşturduğumuz değişkene ata.
  • Satır 29: not1 girildiği için bool tipindeki kontrol1 artık true yapıyoruz.
  • Satır 31-40: Diğer 2 tane textbox içinde benzer kod parçalarını yazıyoruz.
  • Satır 42: Eğer kontrol1, kontrol2, kontrol3 true ise yani 3 sınav notu da girildiyse,
  • Satır 45: Öğrencinin ağırlıklı not ortalamasını örnek senaryoda verdiğimiz yüzdelerle hesaplatıp sonuc adını verdiğimiz değişkene ata.
Buraya kadar bir önceki dersteki ile benzer if kullanımı gerçekleştirdik. Şimdi öğrencinin harf notunu hesaplarken "else if" kullanımını gerçekleştireceğiz.

  • Satır 49: Eğer yukarıda hesaplamasını yaptırdığımız sonuc adlı değişkenin değeri 0.0 'dan büyükse ve 45.0 'a eşit veya küçükse harfNotu değişkenine "FF" ata.
  • Satır 53: Eğer Satır 49 'da ki şart sağlanmıyorsa birde buna bak, 45.0 dan büyükse ve 50.0 dan küçük veya eşitse harfNotu na "DD" ata.
  • Satır 57-80: Diğer harf notları için de not aralıklarını belirleyip benzer şekilde kodları implemente ediyoruz(yazımını gerçekleştiriyoruz).
  • Satır 81: "else" eğer yukarıda belirtilen şartlardan hiç biri sağlanmıyorsa bu kodu  çalıştır.(if kullanımını parantezsiz şekilde de görebileceğinizi önceki derste belirmiştim. Bu 2 satırda örneğini görüyorsunuz. Eğer if, else if, else kod parçalarından sonra tek satır kod yazılacaksa bu şekilde süslü parantez olmadan yazabilirsiniz. Tek satırdan fazla kod yazılacaksa parantez kullanımı zorunlu.)
  • Satır 82: else kod parçası çalıştığında bir mesaj kutusu göster ve içinde "Girilen veriler hatalı veya eksik, düzelttikten sonra tekrar deneyin!" yazsın.
"if" ve "else if" farkını kısaca şu şekilde anlatabiliriz: Alt alta if 'ler yazarsak her if yanındaki şartın sağlanıp sağlanmadığı kontrol edilir. 
Alt alta else if 'ler yazarsak yukarıdan aşağıya doğru sırayla yandaki şartların sağlanıp sağlanmadığı kontrol edilir (buraya kadar bir farklılık yok), eğer şartlardan birisi sağlanırsa diğer else if 'leri ve else 'yi kontrol etmeden geçilir.

Switch-Case

Kullanımı else if 'e benzetebiliriz. Kontrol edilecek veri switch yanındaki parantez içine yazılır ve sırasıyla yukarıdan aşağıya doğru case 'lere bakılır. Yazım(syntax)ı şu şekildedir:
switch(veri adı)
{
case "veri ile aynı tipte sabit":
  verinin bu case ile eşleşmesi durumunda çalışacak kodlar
  break; // açıklanacak
case "veri ile aynı tipte sabit":
  verinin bu case ile eşleşmesi durumunda çalışacak kodlar
  break;
  .
  .
  .
default:
  case 'lerin hiç biri eşleşmezse buradaki kodlar çalışacak. //else if kullanımında en sondaki else gibi
  break; 
}

Şimdi kendi örnek projemize uygulayalım.


  • Satır 87: Kontrol edilecek veri "harfNotu", tipi string olduğu için case yanındaki sabitler de string tipinde olmalı.
  • Satır 89: haftNotu adlı değişkenin değerine bak, "FF" ise bu case deki kodları çalıştır.
  • Satır 91: Bir mesaj kutusu göster ve içinde şu yazsın:
    "Harf Notu: FF
     Dersten Kaldı! Seneye de Görüşürüz..."
    // Kod parçasında yan yana yazmamıza rağmen mesajın alt alta 2 satır olmasını sağlayan kod parçası   " \n ". Satır 98 deki yazım şekli yerine, bir string parçası içerisinde veriyi değişken adıyla göstermek istersek, yazımını şekildeki gibi dolar sembolü ve süslü parantezler ile gerçekleştirebiliriz.
  • Satır 92: else if deki gibi bir şart sağlandığında diğer else if lere ve else ye bakmadan geçme işlemini bu sefer break komutu ile yapıyoruz. Bir case de eşleşme olduğu zaman o case nin altındaki kodlar çalışacağı için break komutu sayesinde kod akışı kırılarak switch in Satır 116 'daki kapanış süslü parantezinden devam eder. break komutunu çalışmasını istediğiniz kodların en altına yazmayı unutmayın çünkü kendisinden sonra yazılan kodlar çalışmayacaktır.
  • Satır 93-113: harfNotu adlı değişkenin alabileceği diğer ihtimaller için de benzer kod parçalarını implemente ediyoruz.
  • Hiç bir case ile eşleşme olmazsa çalışacak kodları default altına yazıyoruz. harfNotu değişkeninin alabileceği değerleri biz belirlediğimiz için başka ihtimal olma olasılığı yok ve öğrenci notlarının girildiği textbox 'ların boş bırakılma ihtimalini üst satırlarda engellediğimiz için boş bırakabiliriz.
Switch-case nin if kullanımlarından bir diğer farkı da switch-case de büyüklük küçüklük vb karşılaştırma operatörleri kullanılamaz sadece switch yanına adını yazdığımız verinin case yanlarındaki sabit değer ile eşleşip eşleşmediği kontrol edilir.

Edit : Bir diğer kontrol deyimi olan ternary("?") kullanımını ilerleyen derslerde göreceğiz.

İYİ ÇALIŞMALAR

Hiç yorum yok:

Yorum Gönder

Son Eklenen

C# Ders-5

Döngüler(Loops) Döngüler, bir işlemin defalarca tekrarlanması gerekiyorsa, aynı kodu tekrar tekrar yazmaktan kurtulmamızı sağlar. Gerçekl...

Popüler Yayınlar