Yazılımcının Günlüğü | YazilimGunlugu.Com
Arama
Makale Kategorileri
Üye Girişi
Şuanki online üyeler()
Aktif üye bulunmamaktadır.


Karar Yapıları "II"

Yazar: Fikret AKIN

Kategori: Programlamaya Giriş

Eklenme Tarihi: 30.05.2007 17:26:55

Karar Yapıları "I" in devamı olarak koşul operatörlerini ve Select Case karar yapısını inceleyecegiz.

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

Yazar Hakkında Yorum Yok Yorum Yaz Yazara ait diğer Makaleler
Tema
Anket
Visual Studio 2010 Beta 2'yi denediniz mi?


En Çok Okunan Makaleler
En Son Eklenen Makaleler
Soru Merkezinde Bekleyenler
Ana Sayfa | Hakkımızda | Editörler | Yazarlar | RSS RSS | İletişim
Yazılım Günlüğü 2007-2009 © Tüm Hakları Saklıdır.