Select Case Komutu: VB de karar sürecinde kullanılan komutlardandır. Bu yapı ile sadece bir değişkenin durum kontrolü yapılır. Kontrolü yapılacak değişkenin genel olarak alabileceği değerler belirli ise bu yapının kullanılması If yapısına göre daha avantajlıdır. Yazılış biçimi genel olarak aşağıdaki şekildeki gibidir. Select Case Degisken Case Deger1 Degisken=Deger1 olduğu durumda yapılması istenen işlemler Case Deger2 To Deger3 Degisken Degeri, Deger2 ile Deger 3 arasında olduğu durumda yapılması istenen işlemler (Deger2 ve Deger3 karşılaştırmaya dahildir) Case Is Karşılaştırma Operatörü Deger4 (Is < 3 veya Is >= 12 gibi) Degisken Degeri Deger4 ile karşılaştırıldığında yapılacak işlemler, Degisken yukarıdaki değerler den hicbirine eşit değil ise yapılacak işlemler Her Select Case bloğu, mutlaka ile bitmek zorundadır. Select Case değişen Case durum1.. If ve Select Case blokları programın karar verme sürecinde kullanılırlar. Bu iki komut arasındaki en önemli fark; Select Case sadece bir değişkenin durumu için kullanılırken, if komutu birden fazla değişkenin durumunu aynı anda değerlendirebilir. Select Case (sa>3 and se= Sakarya ) if (sa>3 and se= Sakarya ) then Sayı 10 ile 20 arasında olduğunda ifadesi Select Case komutu ile if komutuna göre daha kolay yazılır. Select Case Sayi Case 10 to 20 if Sayi>=10 and Sayi<=20 Then Gültekin Çağıl, Bilgisayar Programlama ders notları, Sakarya Üniv. Endüstri Mühendisliği/Hafta 5/Sayfa 1
Şekil: Select Case bloğu için genel bir akış diyagramı Örnek Dim Nm As Integer Dim isim As String Nm = InputBox("Öğrenci Numarasını verin") Select Case Nm Case 1304 isim ="Murat Tuna" Case 1306 isim ="Ayse Sinem" Case 1307 isim = Hakan Kaya Case 1312 isim = Abdullah Kahyalı Case 1324 isim ="Hatice Uygun" MsgBox ( Verdiğiniz Numara Yanlış ) Gültekin Çağıl, Bilgisayar Programlama ders notları, Sakarya Üniv. Endüstri Mühendisliği/Hafta 5/Sayfa 2
Örnek Dim a as double a = InputBox("Bir sayı verin") Select Case a Case 100 MsgBox ("Verdiğiniz sayı 100 dür") Case Is > 100 MsgBox ("Verdiğiniz sayı 100 den büyüktür") Case Is < 100 MsgBox ("Verdiğiniz sayı 100 den küçüktür") MsgBox ("Bu satır hiçbir zaman işlem görmez") End 'bu satır programı sona erdirir Örnek Sub Form1_Load() Dim sayi As Integer sayi = InputBox("Bir sayı verin") Select Case sayi Case 10 To 20 MsgBox ("verdiğiniz sayı 10 ile 20 arasındadır") MsgBox ("Verdiğiniz sayı 10 dan küçük veya 20 den büyüktür") End Örnek Aşağıdaki örnek; sayı girilmesi gereken değişken değerine, yanlışlıkla harf girilmesini kontrol etmektedir. Dim Sayi as string Sayi=inputbox( Sayıyı verin ) Select case Sayi Case a to z Msgbox ( Sayı girmelisiniz ) Case A to Z Msgbox ( Sayı girmelisiniz ) End select Gültekin Çağıl, Bilgisayar Programlama ders notları, Sakarya Üniv. Endüstri Mühendisliği/Hafta 5/Sayfa 3
İkinci Dereceden bir denklemin köklerinin olup olmadığının araştırılması programının SELECT CASE komutu ile yazılması ve akış diyagramının hazırlanması Dim a, b, c, delta, x1, x2 As Double a = InputBox("a katsayısını verin") b = InputBox("b katsayısını verin") c = InputBox("c katsayısını verin") delta = (b ^ 2) - (4 * a * c) Select Case delta Case Is < 0 Başla MsgBox("Kök yok") Case 0 MsgBox("İki çakışık kök var") a katsayısını verin x1 = -b / (2 * a) MsgBox("Çakışık kökler=" & x1) Case Is > 0 MsgBox("iki farklı kök var") b katsayısı? x1 = (-b - delta ^ (1 / 2)) / (2 * a) x2 = (-b + delta ^ 0.5) / (2 * a) MsgBox("Birinci Kök=" & x1) c nedir? MsgBox("İkinci Kök=" & x2) Evet delta=0? Hayır delta<0? Evet Ekrana İki Çakışık Kök var yaz Hayır Ekrana İki farklı Kök var yaz Ekrana Kök Yok yaz X1=-b/(2.a) x1=(-b-delta^(1/2))/(2xa) hesapla X1 değerini ekrana yaz x2=(-b+delta^(1/2))/(2xa) hesapla X1 ve X2 değerlerini ekrana yaz Program Sonu Gültekin Çağıl, Bilgisayar Programlama ders notları, Sakarya Üniv. Endüstri Mühendisliği/Hafta 5/Sayfa 4
İkinci Dereceden bir denklemin köklerinin olup olmadığının araştırılması programının IF komutu ile yazılması Dim a, b, c, delta, x1, x2 As Double a = InputBox("a katsayısını verin") b = InputBox("b katsayısını verin") c = InputBox("c katsayısını verin") delta = (b ^ 2) - (4 * a * c) If delta < 0 Then MsgBox("Kök yok") ElseIf delta = 0 Then MsgBox("İki çakışık kök var") x1 = -b / (2 * a) MsgBox("Çakışık kökler=" & x1) ElseIf delta > 0 Then MsgBox("iki farklı kök var") x1 = (-b - delta ^ (1 / 2)) / (2 * a) x2 = (-b + delta ^ 0.5) / (2 * a) MsgBox("Birinci Kök=" & x1) MsgBox("İkinci Kök=" & x2) End If Bir programın nesnelerle ve ayrıca basit halde (nesne kullanmadan) ayrı ayrı yazılması Örnek: Bilgisayara girilen iki sayının toplanıp sonucunun ekrana yazdırılması Programın basit olarak (nesne kullanmadan) yazılması Bunun için bilinmeyenlerin (birinci ve ikinci sayı) inputbox komutu ile sordurulup, bulunan toplam sonucunun msgbox komutu ile ekrana yazdırılması yeterlidir. Sub Form1_Load() Dim birincisayi As Double, ikincisayi As Double birincisayi = InputBox("Birinci sayıyı verin") ikincisayi = InputBox("İkinci sayıyı verin") MsgBox (birincisayi + ikincisayi) Programın nesne kullanılarak yazılması Nesne kullanılarak programın yazılabilmesi için öncelikle form ekranında programın tasarımının (veriler nerede nasıl girilecek, çıktılar nereye yazdırılacak vs.) yapılması gerekir. Yandaki Form ekranı sözkonusu programın tasarım form ekranıdır. Bu ekranda Label1; Birinci sayı ifadesi için, Label2; İkinci sayı ifadesi için, Label3; Sonuç ifadesi için, Text1; Birinci sayının girileceği yer, Text2; İkinci sayının girileceği yer ve Text3; girilen iki sayının toplamının yazılacağı yer olarak düşünülmüştür. Gültekin Çağıl, Bilgisayar Programlama ders notları, Sakarya Üniv. Endüstri Mühendisliği/Hafta 5/Sayfa 5
Daha sonra, önceki adımda ekrana yerleştirilen nesnelerin başlıklarının (ekranda görünen isimlerinin) programa uygun olarak değiştirilmesi gerekir. Bu işlemi iki şekilde yapabilirsiniz. 1. İlgili nesneyi form ekranında sadece bir kez tıklayıp seçili duruma getirerek properties (VB ekranının sağ alt tarafında görülen özellikler penceresi. Bu pencereyi ekranda göremiyorsanız, F4 tuşuna basarak görünür hale getirebilirsiniz) penceresinde ilgili özelliği bulunup değiştirilmek suretiyle, nesnenin görünür başlığı değiştirilebilir. Örneğimizde Label1 nesnesi tıklanarak özellikler penceresinden Text (Metin) özelliği bulunur ve Text ifadesinin karşılığı olan Label1, Birinci Sayı ifadesi ile değiştirilir. Aynı işlem Label2 için İkinci Sayı ve Label3 için Sonuç olarak tekrar edilmelidir. 2. Yukarıdaki işlemlerin hiçbiri yapılamadan aynı sonuç elde edilmek istenirse (istenen sonuç: yukarıdaki ikinci form ekranındaki görüntü) bu durumda form ekranında nesnelerin istenen özelliklerinin değiştirilmesi için form ekranının yüklenmesi sırasında bu işlemler bir komut satırı olarak verilmesi gerekir. Bunun için form1_load yordamının aşağıdaki şekilde olması gerekir: Private Sub Form1_Load() Label1.Text = "Birinci Sayı" Label2.Text = "İkinci Sayı" Label3.Text = "Sonuç" Daha sonra ilgili nesnelerin çift tıklanması ve program kodlarının yazılması gerekir. Bu programda sayılar text nesnesine girileceği için bu nesnede bir değişiklik olduğunda ne olması isteniyorsa onun ile ilgili satırların ilgili yere yazılması gerekir. Dolayısıyla birinci textbox nesnesine bir sayı girildiğinde bu nesnede bir değişiklik olacak ve bu değişiklik textbox3 nesnesine yansıyacaktır. İlgili işlemin tam ifadesi şu şekilde olmalıdır: Textbox1 nesnesinde bir değişiklik olduğunda [yani bu nesneye biz bir sayı girdiğimizde (bu VB için bir olay (event) dır VB ce karşılığı change ifadesidir)] bu değişiklik textbox3 nesnesine toplam olarak yansımalıdır. Aynı işlem textbox2 nesnesi için de geçerlidir. Bu işlemin VB satırı olarak yazılması şu şekilde olmalıdır: Textbox3.Text = Val(Textbox1.Text) + Val(Textbox2.Text). Bu satır form ekranında iken textbox1 nesnesi çift tıklanarak ekrana gelen kod yazma nesnesinde Private Sub TextBox1_TextChanged ( ) End sub Satırları arasına yazılmalıdır. Yukarıdaki yordamın açılaması: textbox1 nesnesinde bir değişiklik olduğunda şu satırları işleme sok (private ile başlayan ve end ile biten satırların arasındaki satırları işleme sok). Not: Textbox nesnesinin çıktısı string olduğundan ve bu örneğimizde sayılarla uğraşıldığından, textbox1.text satırı Val komut ile işleme sokularak, textbox nesnesine girilen sayının dört işleme girer (sayısal) hale getirilmesi sağlanmıştır. Programın son hali ve örnek iki sayı ile çalıştırılmış form ekranı aşağıdaki gibidir: Gültekin Çağıl, Bilgisayar Programlama ders notları, Sakarya Üniv. Endüstri Mühendisliği/Hafta 5/Sayfa 6
Private Sub TextBox1_TextChanged() TextBox3.Text = Val(TextBox1.Text) + Val(TextBox2.Text) Private Sub TextBox2_TextChanged() TextBox3.Text = Val(TextBox1.Text) + Val(TextBox2.Text) Gültekin Çağıl, Bilgisayar Programlama ders notları, Sakarya Üniv. Endüstri Mühendisliği/Hafta 5/Sayfa 7