Koşul Operatörleri
Veri tipleri ve değişkenler üzerinde kontrol yapılırken birden fazla koşula ihtiyaç vardır. Bu durumda, koşulları birbirleriyle karşılaştıracak operatörler kullanılır, dönen değerler Boolean tipinde olduğu için, koşul operatörleri de bu değerler üzerinde işlem yaparlar.
And
Bu operatör, verilen koşulların kesişimini alır. Eğer tüm koşulların değeri True ise sonuç da True olur. En az bir tane False değeri olan koşul varsa, sonuç False olur;
Koşul 1 |
Koşul 2 |
Koşul 1 And Koşul 2 |
True |
True |
True |
True |
False |
False |
False |
True |
False |
False |
False |
False |
Or
Or operatörü, verilen koşulların birleşimini alır. Eğer tüm koşulların değeri
False ise sonuç False olur. En az bir tane True değeri varsa sonuç True olur
Koşul 1 |
Koşul 2 |
Koşul 1 Or Koşul 2 |
True |
True |
True |
True |
False |
True |
False |
True |
True |
False |
False |
False |
XOr
XOr operatörü, verilen koşulların farklarını kıyaslar. Eğer her iki veri aynı ise False değerini üretir. Eğer iki veri birbirinden farklı ise True değerini üretir.
Koşul 1 |
Koşul 2 |
Koşul 1 XOr Koşul 2 |
True |
True |
False |
True |
False |
True |
False |
True |
True |
False |
False |
False |
Not
Bir koşulun değerini tersine çevirir. Koşul False ise True, True ise False olur
Koşul |
Not Koşul |
True |
False |
False |
True |
AndAlso
Koşullardan biri False ise, diğerleri kontrol edilmeden False değeri döndürülür.
Bu tip bir kullanım, birçok koşulun kontrol edilmesi gerektiğinde performansı artırır.
Dim dizi() As String = {}
' Diziye eleman ekleme işlemleri
' ...
If dizi.Length > 0 AndAlso dizi(1).EndsWith(".") Then
Label1.Text = "Cümle sonundaki kelime: " & dizi(1)
End If
Bu örnekte, dizinin ilk elemanı üzerinde bir kontrol yapılmak isteniyor. Ancak diziye eleman eklenmemişse, ilk elemana ulaşırken hata üretilecektir. Dolayısıyla dizinin uzunluğunu da kontrol etmek gerekir. Kontrol And ifadesi ile yapılsaydı, dizi elemanın noktayla bitip bitmediği ve dizinin uzunluğu kontrol edilecekti. Bu durumda iç içe If ifadeleri ile uzun bir kod yazılacaktı. Pek çok kıyaslama gerekecek ve performans düşecekti. Ancak burada, dizi uzunluğu koşulu sağlanmazsa, diğer koşula geçilmeden If kontrolünden çıkılır.
OrElse
Koşullardan biri True ise, diğerleri kontrol edilmeden True değeri döndürülür.
Dim Rol As String
' Veritabanından, kullanıcının rolü alınır.
' ...
' Sadece Administrator, Moderator ve Power User rolündeki
' kullanıcılar dosya silme işlemi yapabilirler.
If Rol = "Administrator" OrElse Rol = "Moderator" OrElse Rol = "Power User" Then
Kill("C:\Forum.mdb")
End If
Dosya silme işlemi için, kullanıcının rolü veritabanından alındıktan sonra, kontrol işlemi yapılır. Eğer bir kullanıcın rolü Administrator, Moderator veya Power User rollerinden biriyse, diğer kontrollerin yapılması gerekmez. Bu örnekte Rol değişkeni Administrator değerine eşitse, diğer iki koşul kontrol edilmeden True ifadesi döner.
If Then Else
Else ifadesi, If yapısındaki koşulun sağlanmadığı bütün durumlarda devreye girer.
If Şart veya Koşul Then
'kodlar
Else
'kodlar
End If
Koşul True ise If – Else arasındaki kodlar, koşul False ise Else – End If arasındaki kodlar çalışır.
If deyimindeki koşul sağlanmadıysa Else deyimindeki kodlar çalışıyordu. Ancak bazı durumlarda Else içinde de kontrol yapmak gerebilir.
If Şart veya Koşul Then
ElseIf şart veya Koşul2 Then
ElseIf şart veya Koşul3 Then
End If
Select Case
Select deyimi ElseIf ile benzer işlevi görür, ancak okunması daha kolaydır.
Select ile seçilen bir değerin kontrol edilmesi Case ifadelerinde yapılır.
Dim dosya As String = TextBox1.Text
Select Case ComboBox1.SelectedText
Case "Kopyala"
Dim yeniYer As String
yeniYer = InputBox("Kopyalanacak yeri girin:")
FileCopy(dosya, yeniYer)
Case "Ad Değiştir"
Dim yeniAd As String
yeniAd = InputBox("Dosyanın yeni adını girin:")
Rename(dosya, yeniAd)
Case "Sil"
Kill(dosya)
Case Else
MessageBox.Show("Hatalı seçim")
End Select
Buradaki Select Case kullanımı, ComboBox kontrolünden seçilen öğeye göre bir işlemin gerçekleştirilmesini sağlar.. Seçilen öğenin yazısı Case ifadelerinde verilen değerlere eşitse, ilgili kodlar çalıştırılır. Case Else ise, diğer koşulların sağlanmadığı tüm durumlarda devreye girer.
Case ifadelerindeki kontroller, sadece bir tek değere “eşitlik” ile sınırlı değildir.
Select ile kontrol edilecek değerin birden fazla olması durumunda, aynı kodların çalışması istenebilir veya değerlerin belirli aralıklarda olması gibi durumlarla da karşılaşılabilir.
To Kullanımı
To ile değerlerin belirli aralıklarda olup olmadığı kontrol edilir. String tipindeki değerlerin kontrolü alfabetik olarak yapılır.
Dim durum As String
Select Case UrunStokSayisi
Case 0
durum = "Ürün Tükenmiş"
Case 1 To 10
durum = "Çok Az"
Case 10 To 25
durum = "Az"
Case 25 To 50
durum = "Yeterli"
Case 50 To 75
120 Modül 6:
durum = "Fazla"
Case Else
durum = "Çok Fazla"
End Select
Is Kullanımı
Is ifadesi karşılaştırma operatörleri ile kullanılır.
Randomize()
Dim sayi As Integer = Rnd() * 1000
Select Case sayi1
Case Is < 10
MsgBox(sayi & " sayısı tek basamaklıdır")
Case Is < 100
MsgBox(sayi & " sayısı iki basamaklıdır")
Case Is < 1000
MsgBox(sayi & " sayısı üç basamaklıdır")
End Select
Burada sayi değişkeninin kontrolü, küçüktür karşılaştırma operatörü ile yapılıyor.
Burada dikkat edilmesi gereken bir durum da, sayi değişkenini tek basamaklı olduğu zamanki durumdur. Örneğin, sayı değişkeni 6 değerini aldığında, Case ifadelerindeki bütün koşulların sağlandığı görülür. Birden fazla Case içine girilemediğinden, koşulun sağlandığı ilk Case içindeki kodlar çalıştırılır. Bu örnekte Case Is < 1000 ifadesi en başa alınsaydı, girilen bütün sayıların üç basamaklı olduğu gösterilirdi.
Başka makalede görüşmek üzere..
Fikret AKIN