Neler yeni

Yazılım Forum

Tüm özelliklerimize erişmek için şimdi bize katılın. Kayıt olduktan ve giriş yaptıktan sonra konu oluşturabilecek, mevcut konulara yanıt gönderebilecek, itibar kazanabilecek, özel mesajlaşmaya erişebilecek ve çok daha fazlasını yapabileceksiniz! Bu hizmetlerimiz ise tamamen ücretsiz ve kurallara uyulduğu sürece sınırsızdır, o zaman ne bekliyorsunuz? Hadi, sizde aramıza katılın!

VB.NET'te Koşullu İfadeler: Programlamada Karar Yapılarını Anlamak

Programlama dünyasında, bir uygulamanın akışını belirli koşullara göre yönlendirmek temel bir ihtiyaçtır. İşte bu noktada, koşullu ifadeler devreye girer. VB.NET'te, programınızın belirli durumlara veya kullanıcı girdilerine göre farklı yollar izlemesini sağlayan güçlü koşullu yapılar bulunur. Bu yapılar sayesinde, yazılımınız çok daha dinamik ve kullanıcı etkileşimli hale gelir.

Koşullu ifadeler, adından da anlaşılacağı gibi, bir veya daha fazla koşulun doğru (True) veya yanlış (False) olmasına bağlı olarak belirli kod bloklarının çalıştırılmasını sağlar. Temel olarak, bir senaryo düşündüğümüzde "Eğer bu durum böyleyse, şunu yap; aksi takdirde başka bir şey yap" mantığı üzerine kuruludurlar. VB.NET'te en sık kullanılan koşullu ifadeler If...Then...Else ve Select Case yapılarıdır.

If...Then İfadeleri

1. If...Then: Bu, en basit koşullu ifadedir. Belirli bir koşul doğruysa, belirtilen kod bloğunu çalıştırır. Eğer sadece tek bir satır çalışacaksa, 'End If' kullanmak zorunlu değildir, ancak okunabilirlik için genelde tercih edilir.
Kod:
Dim sayi As Integer = 10

If sayi > 5 Then
    Console.WriteLine("Sayı 5'ten büyüktür.")
End If
Yukarıdaki örnekte, 'sayi' değişkeni 5'ten büyük olduğu için "Sayı 5'ten büyüktür." mesajı ekrana yazdırılacaktır. Eğer koşul yanlış olsaydı, If bloğu atlanacak ve program akışı devam edecekti.

2. If...Then...Else: Bu yapı, bir koşul doğruysa bir kod bloğunu, yanlışsa başka bir kod bloğunu çalıştırmanıza olanak tanır. İki farklı durum için farklı eylemler gerçekleştirmek istediğinizde idealdir.
Kod:
Dim yas As Integer = 17

If yas >= 18 Then
    Console.WriteLine("Ehliyet alabilirsin.")
Else
    Console.WriteLine("Ehliyet almak için henüz çok gençsin.")
End If
Bu örnekte, 'yas' 18'den küçük olduğu için Else bloğu çalışacak ve "Ehliyet almak için henüz çok gençsin." mesajını gösterecektir.

3. If...Then...ElseIf...Then...Else: Birden fazla koşulu kontrol etmeniz gerektiğinde bu yapı çok kullanışlıdır. Birden fazla 'ElseIf' bloğu ekleyebilirsiniz. Koşullar sırasıyla kontrol edilir ve doğru bulunan ilk koşulun bloğu çalıştırılır, diğerleri atlanır ve 'Else' bloğu da es geçilir. Eğer hiçbir 'If' veya 'ElseIf' koşulu doğru olmazsa, 'Else' bloğu (eğer varsa) çalıştırılır.
Kod:
Dim notDegeri As Integer = 75

If notDegeri >= 90 Then
    Console.WriteLine("Notunuz: A - Mükemmel")
ElseIf notDegeri >= 80 Then
    Console.WriteLine("Notunuz: B - Çok İyi")
ElseIf notDegeri >= 70 Then
    Console.WriteLine("Notunuz: C - İyi")
ElseIf notDegeri >= 60 Then
    Console.WriteLine("Notunuz: D - Geçer")
Else
    Console.WriteLine("Notunuz: F - Kaldı")
End If
Bu senaryoda, 'notDegeri' 75 olduğu için "Notunuz: C - İyi" çıktısı alınacaktır. Koşulların sırası burada önemlidir; eğer 75, ilk olarak 'notDegeri >= 70' koşuluyla eşleşirse, diğer ElseIf'ler kontrol edilmeyecektir.

İç İçe If İfadeleri: Bazen daha karmaşık mantıklar için bir If bloğu içinde başka If blokları kullanmanız gerekebilir. Bu, iç içe If ifadeleri olarak bilinir. Ancak, bu yapıları aşırıya kaçırmamak, kod okunabilirliği açısından önemlidir.
Kod:
Dim kullaniciAdi As String = "admin_user"
Dim sifre As String = "securepass123"
Dim dogrulanmisMi As Boolean = False

If kullaniciAdi = "admin_user" Then
    If sifre = "securepass123" Then
        Console.WriteLine("Giriş başarılı! Yönetici Paneline Yönlendiriliyorsunuz.")
        dogrulanmisMi = True
    Else
        Console.WriteLine("Yanlış şifre. Lütfen tekrar deneyin.")
    End If
Else
    Console.WriteLine("Kullanıcı adı bulunamadı. Kayıtlı değil misiniz?")
End If

If dogrulanmisMi Then
    Console.WriteLine("Hoş geldiniz, admin_user!")
End If
Bu örnekte, önce kullanıcı adı kontrol edilir, doğruysa şifre kontrolüne geçilir. İki koşul da sağlanırsa giriş başarılı olur.

Mantıksal Operatörler: Birden fazla koşulu tek bir If ifadesinde birleştirmek için mantıksal operatörler kullanılır. Bu, kodunuzu daha kısa ve anlaşılır hale getirebilir.
  • And: Her iki koşul da doğruysa True döndürür. Örneğin, `A And B` sadece A ve B de doğruysa True verir.
  • Or: Koşullardan herhangi biri doğruysa True döndürür. Örneğin, `A Or B` A doğruysa veya B doğruysa True verir.
  • Not: Koşulun tersini (negasyonunu) alır. Örneğin, `Not A` A yanlışsa True verir.
  • AndAlso: 'And' gibi çalışır ancak ilk koşul yanlışsa ikinci koşulu kontrol etmez (kısa devre). Bu, performansı artırabilir ve null referans hatalarını önleyebilir.
  • OrElse: 'Or' gibi çalışır ancak ilk koşul doğruysa ikinci koşulu kontrol etmez (kısa devre). Yine, performans ve hata önleme için kullanışlıdır.
Kod:
Dim yas As Integer = 25
Dim cinsiyet As String = "Erkek"
Dim ehliyetVarMi As Boolean = True

' And operatörü ile birden fazla koşulun doğru olmasını kontrol etme
If yas >= 18 And cinsiyet = "Erkek" And ehliyetVarMi Then
    Console.WriteLine("Bu kişi askere gidebilir ve araç kullanabilir.")
End If

' OrElse operatörü ile kısa devre mantığı
Dim kullaniciGirisYaptiMi As Boolean = False
Dim abonelikDurumu As String = "Premium"

If kullaniciGirisYaptiMi OrElse abonelikDurumu = "Premium" Then
    Console.WriteLine("Premium içeriklere erişim izni verildi.")
End If
' Bu örnekte, kullaniciGirisYaptiMi False olsa bile, abonelikDurumu 'Premium' olduğu için
' ikinci koşul kontrol edildikten sonra If bloğu çalışır.

' Eğer kullaniciGirisYaptiMi True olsaydı, abonelikDurumu kontrol edilmeyecekti.
Dim kullaniciAdiGirildiMi As Boolean = True
Dim parolaGirildiMi As Boolean = False

If kullaniciAdiGirildiMi AndAlso parolaGirildiMi Then
    Console.WriteLine("Kullanıcı adı ve parola doğru.")
Else
    Console.WriteLine("Kullanıcı adı veya parola yanlış.")
End If

Select Case İfadeleri

Select Case yapısı, tek bir ifadenin (genellikle bir değişkenin) değerine göre farklı kod bloklarını çalıştırmak için kullanılır. Özellikle birden fazla 'ElseIf' içeren uzun If zincirlerini daha okunaklı ve yönetilebilir hale getirir. Bir değişkenin alabileceği farklı değerlere göre dallanma yapmak için çok uygundur.

Kod:
Dim gunNumarasi As Integer = DateTime.Now.DayOfWeek ' DayOfWeek enum'ından sayısal değer alır (Pazar=0, Pazartesi=1...)

Select Case gunNumarasi
    Case 0 ' Pazar
        Console.WriteLine("Bugün Pazar, dinlenme zamanı!")
    Case 1 ' Pazartesi
        Console.WriteLine("Bugün Pazartesi, haftanın ilk iş günü.")
    Case 2 ' Salı
        Console.WriteLine("Bugün Salı.")
    Case 3 ' Çarşamba
        Console.WriteLine("Bugün Çarşamba.")
    Case 4 ' Perşembe
        Console.WriteLine("Bugün Perşembe.")
    Case 5 ' Cuma
        Console.WriteLine("Bugün Cuma, haftanın son iş günü.")
    Case 6 ' Cumartesi
        Console.WriteLine("Bugün Cumartesi, eğlence zamanı!")
    Case Else ' Hiçbir durum eşleşmezse
        Console.WriteLine("Geçersiz gün bilgisi tespit edildi.")
End Select

1. Case Else: Hiçbir 'Case' ifadesi eşleşmezse çalışacak bloğu belirtir. Yukarıdaki örnekte olduğu gibi, bu bir yedek durum sağlar.

2. Case Is ile Aralıklar ve Karşılaştırmalar: Bir aralık veya karşılaştırma kullanarak koşulları tanımlayabilirsiniz. Bu, If...ElseIf'in bazı fonksiyonlarını taklit etmenizi sağlar.
Kod:
Dim ogrenciPuan As Integer = 85

Select Case ogrenciPuan
    Case Is >= 90
        Console.WriteLine("Öğrenci notu: A (Çok Başarılı)")
    Case Is >= 80
        Console.WriteLine("Öğrenci notu: B (Başarılı)")
    Case Is >= 70
        Console.WriteLine("Öğrenci notu: C (Orta)")
    Case Is >= 60
        Console.WriteLine("Öğrenci notu: D (Geçer)")
    Case Else
        Console.WriteLine("Öğrenci notu: F (Kaldı)")
End Select
Bu örnekte, 'ogrenciPuan' 85 olduğu için "Öğrenci notu: B (Başarılı)" çıktısı alınacaktır.

3. Case ile Birden Fazla Değer: Bir 'Case' bloğu için birden fazla değeri virgülle ayırarak belirtebilirsiniz. Bu, aynı eylemi tetikleyen farklı girişler olduğunda kodu basitleştirir.
Kod:
Dim girilenKarakter As Char = "a"

Select Case girilenKarakter
    Case "a", "e", "i", "o", "u", "A", "E", "I", "O", "U"
        Console.WriteLine("Girilen karakter bir sesli harf.")
    Case "b", "c", "d", "f", "g", "B", "C", "D", "F", "G"
        Console.WriteLine("Girilen karakter bir sessiz harf (ilk grup).")
    Case Else
        Console.WriteLine("Girilen karakter özel bir karakter veya sayı.")
End Select

If ve Select Case Karşılaştırması

Her iki yapı da koşullu mantık için kullanılsa da, farklı senaryolarda daha uygun olabilirler:
  • If...Then...ElseIf: Çok çeşitli ve karmaşık koşullar (örneğin, birden fazla değişkenin kombinasyonları veya aralık tabanlı mantık) için idealdir. Koşullar mantıksal operatörlerle serbestçe birleştirilebilir. Koşullar arasında bir hiyerarşi veya öncelik olduğunda veya koşullar birbirini dışlamadığında daha uygundur.
  • Select Case: Genellikle tek bir değişkenin veya ifadenin farklı değerlerine göre dallanma gerektiğinde tercih edilir. Kodun okunabilirliğini artırır ve uzun If...ElseIf zincirlerini basitleştirir. Özellikle sabit, sıralanmış veya birbirini dışlayan değerler için çok etkilidir. Switch-Case benzeri bir yapı arıyorsanız idealdir.
Genel kural olarak, eğer karar verme süreciniz tek bir değişkenin farklı değerlerine bağlıysa Select Case kullanın. Bu, kodunuzu daha düzenli ve bakımı kolay hale getirir. Daha karmaşık, çok değişkenli veya aralık tabanlı kararlar için ise If...Then...ElseIf yapısını tercih edin.

En İyi Uygulamalar

Koşullu ifadeleri verimli ve etkili bir şekilde kullanmak için bazı en iyi uygulamalar şunlardır:
  • Okunabilirlik: Koşullu ifadelerinizi mümkün olduğunca basit ve anlaşılır tutun. İç içe If'leri aşırıya kaçırmaktan kaçının; bu, kodun karmaşıklığını artırır ve hata ayıklamayı zorlaştırır. Mümkünse iç içe If yerine mantıksal operatörleri kullanmayı veya kodu fonksiyonlara ayırmayı düşünün.
  • Sadelik: Eğer bir koşul bloğu çok uzunsa veya birden fazla sorumluluğu yerine getiriyorsa, onu ayrı bir fonksiyona veya metoda taşımayı düşünün. Bu, ana kod bloğunuzu daha temiz tutar ve modülerliği artırır.
  • Doğruluk: Koşullarınızı dikkatlice tasarlayın ve tüm olası senaryoları göz önünde bulundurun. Yanlış bir koşul, beklenmedik hatalara veya uygulamanın yanlış davranmasına neden olabilir. Sınır durumlarını (örneğin, 0, boş string, minimum/maksimum değerler) test ettiğinizden emin olun.
  • Performans: 'AndAlso' ve 'OrElse' gibi kısa devre operatörlerini kullanmak, gereksiz hesaplamaları önleyerek performansı artırabilir. Özellikle maliyetli fonksiyon çağrıları içeren koşullarda bu operatörler çok faydalıdır.
  • Varsayılan Durum: Özellikle 'Select Case' kullanırken, 'Case Else' bloğunu ekleyerek beklenmeyen veya ele alınmayan durumlar için bir geri dönüş mekanizması sağlamak iyi bir pratiktir. Bu, programınızın her durumda kontrollü bir şekilde davranmasını sağlar.
  • Gereksiz Koşullardan Kaçınma: Bazen bir boolean değişkeni kontrol etmek için `If myBoolean = True Then` yerine doğrudan `If myBoolean Then` yazmak daha temizdir. Aynı şekilde, `If Not myBoolean = True Then` yerine `If Not myBoolean Then` kullanabilirsiniz.

Özetle, VB.NET'teki koşullu ifadeler, programlarınıza akıl katmanın ve onları dinamik, duyarlı sistemlere dönüştürmenin anahtarıdır. Doğru yapıları doğru yerlerde kullanarak, hem performanslı hem de okunabilir ve bakımı kolay uygulamalar geliştirebilirsiniz. Bu temel yapıları iyi anlamak, daha karmaşık algoritmalar ve iş mantığı oluşturmanız için sağlam bir zemin oluşturacaktır.

Daha fazla bilgi ve resmi dokümantasyon için Microsoft Docs'taki VB.NET koşullu ifadeler sayfasını ziyaret edebilirsiniz.
 
shape1
shape2
shape3
shape4
shape5
shape6
Üst

Bu web sitenin performansı Hazal Host tarafından sağlanmaktadır.

YazilimForum.com.tr internet sitesi, 5651 sayılı Kanun’un 2. maddesinin 1. fıkrasının (m) bendi ve aynı Kanun’un 5. maddesi kapsamında Yer Sağlayıcı konumundadır. Sitede yer alan içerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır.

YazilimForum.com.tr, kullanıcılar tarafından paylaşılan içeriklerin doğruluğunu, güncelliğini veya hukuka uygunluğunu garanti etmez ve içeriklerin kontrolü veya araştırılması ile yükümlü değildir. Kullanıcılar, paylaştıkları içeriklerden tamamen kendileri sorumludur.

Hukuka aykırı içerikleri fark ettiğinizde lütfen bize bildirin: lydexcoding@gmail.com

Sitemiz, kullanıcıların paylaştığı içerik ve bilgileri 6698 sayılı KVKK kapsamında işlemektedir. Kullanıcılar, kişisel verileriyle ilgili haklarını KVKK Politikası sayfasından inceleyebilir.

Sitede yer alan reklamlar veya üçüncü taraf bağlantılar için YazilimForum.com.tr herhangi bir sorumluluk kabul etmez.

Sitemizi kullanarak Forum Kuralları’nı kabul etmiş sayılırsınız.

DMCA.com Protection Status Copyrighted.com Registered & Protected