Visual Basic, Basic (Beginners-All Purpose Symbolic Instruction Code) temelleri üzerine kurulmuş görsel bir programlama dilidir. Bugün dünyada çok yaygın bir kullanım yeri bulmuştur. Bunun en büyük sebebi çok kolay ögrenilen ve güçlü bir programlama dili olmasıdır. Visual Basic ile yapabilecekleriniz sadece sizin hayal gücünüze ve becerinize bağlıdır. Ticari yazılımlar geliştirebilir, veri tabanları üzerinde çalışabilirsiniz, oyun programları yazabilir, bilimsel çalışmalarınızda kullanabilirsiniz. Visual Basic ile Word ve Excel görünümünde bir program geliştirmek son derece kolaydır. Bunu mümkün kılan grafiksel arabirimdir. Bu ara birim kullanıcı ile program kodları arasında iletişimi sağlar. Örneğin Windows’ta bir dosyayı açarken bir simge üzerine tıkladığımızda bunun arka planında program bu işlemi yapmak için gerekli olan kodları çalıştırmakla uğraşır. İşte Visual Basic’te de bunun gibi kullanıcı arayüzleri olacak nesneler vardır. Programı çalıştıran kodların bilinmesi kadar bu nesnelerinde bilinmesi de gerekmektedir. Visual Basic’te Windows ortamından tanıdığımız butonlar, kaydırma çubukları, text kutuları gibi nesneler vardır. Program bu nesnelere bağlı olan olayları kullanarak yazılır. Örneğin bir buton nesnesinin en önemli olayı butonun üzerine tıklanmasıdır. Kullanıcı bu olayın içerisine butona tıklandığında ne yapılması isteniyorsa onunla ilgili kodları yazar. ÇALIŞMA ALANI Çalışma alanı olarak sadece program kodlarını yazdığımız kısım değil, tüm menüler ve pencereler buna dahildir. Menu Çubuğu (Menu Bar):Menü çubuğu üzerinde Vbasic menüleri bulunur. Bu menüler File, Edit, View, Project vs. dir. Menülerde değişik komutlar bulunmaktadır. Araç Kutusu (Tool Box): Araç kutusu çalışma alanın sol tarafında bulunan ve içerisinde standart nesnelerin bulunduğu bir kutudur. Bu nesneler ileride detaylı olarak anlatılacaktır. Özellikler Penceresi (Properties Window-F4):Her nesnenin kendisine özgü özellikleri vardır. Nesnenin rengi, boyutları, vs daha pek çok özelliği özellikler penceresinden düzenlenir. Örneğin aşağıda Command1 isimli CommandButton nesnesinin özellikler penceresi görülmektedir. Proje Penceresi (Project Explorer-Ctrl+R):Büyük projelerde birçok Form ve Modül kullanılır. Bu pencere sayesinde hangi formun hangi projeye ait olduğu ve özellikleri kolayca izlenebilir. Kod Penceresi (Code): Programcılığın esasını oluşturan kod yazma işlemi Vbasic’te olaylara bağlı olarak yapılır. Olaylarda nesnelere bağlıdır. Örneğin bir Buton nesnesinin Click olayı içerisine bir bir kod yazılırsa, program çalıştığında bu butonun üzerine tıklama yaptığımızda içerisindeki bu kodları çalıştıracaktır. Nesne ve olayların her ikiside Code penceresinden görülebilir. OPERATÖRLER Operatörleri • Matematiksel • Karşılaştırma • Mantıksal Olmak üzere üç grupta inceleyeceğiz. Matematiksel Operatörler:Bu operatörleri 7 tanedir. • + Toplama işlemi • - Çıkarma işlemi • * Çarpma işlemi • / Bölme işlemi • ^ Üs alma işlemi • ( ) Parantez işlemleri • \ Tam sayılı bölme işlemi Burada \ tam ile yapılan bölmelerde sonucun tam sayı kısmı yazılır. Ör: 7\3 sonucu 2.33 değil 2 dir. ( ) parantezler ise işlemler arasında önceliği belirlemede kullanılır. İşlemlerde öncelik sırası, (), ^, * / , + - , soldan sağa dır. Karşılaştırma Operatörleri: İki değer arasında karşılaştırma yapılırken kullanılır. Karşılaştırma sonucu true (doğru) yada false (yanlış) olabilir. Doğru sonuçlar için 1, yanlış değerler için 0 değeri döndürülür. a) Sayısal ifadelerde: Sayısal ifadeleri karşılaştırırken 7 farklı operatör kullanılabilir. Operatör Durum Yazımı = eşitlik a=b < küçüktür a<b > büyüktür a>b <>, >< eşitsizlik a<>b , a><b <= , =< küçük eşit a<=b , a=<b >=, => büyük eşit a>=b , a=>b b) String ifadelerde: String değerleri karşılaştırırken Like operatöründen yararlanılır. Bu ifade büyük küçük karakter ayrımı yapar. Eğer büyük küçük ayrımı yapılmak istenmiyorsa Declerations bölümüne Option Compare Text ifadesi yazılmalıdır. Örnegin: Option Compare Text sonuc= “A” Like “a” Print sonuc Bu ifade sonucu True değeri alınır. Bu şekilde ifadeleri karşılaştırırken Bazı karakterlerin yerine geçmesi için * ve tek bir karakterin yerine geçmesi için ? işareti kullanılabilir. Örneğin sonuc= “Ali” Like “A?i” Print sonuc Sonuc True olur. ? işareti “l” karakteri yerine kullanıldı. sonuc= “Ali” Like “A*” Print sonuc Sonuc True dur. * işareti “li” karakterleri yerine kullanıldı. Mantıksal Operatörler: Birden fazla karşılaştırmayı aynı anda yapmak için kullanılır. Karşılaştırma sonucu True yada False dır. a)And Operatörü: Bu operatör bütün değerler True ise sonucu True=1 verir. Herhangi bir False sonuç False=0 dır. 1.Değer Operator 2.Değer Sonuç 1 And 1 1 1 And 0 0 0 And 1 0 0 And 0 0 Örneğin: if yas>15 And yas<30 Then print “Siz gençsiniz” ifadesinde yas 15 den büyük ve 30 dan küçük olması durumunda Then den sonraki komutlar işletilecektir. b)Or Operatörü: Bu operatör bütün değerler yada herhangi biri True ise True=1, hepsi False ise sonucu False=0 olarak verir. 1.Değer Operator 2.Değer Sonuç 1 Or 1 1 1 Or 0 1 0 Or 1 1 0 Or 0 0 Örneğin: if boy>190 Or boy<165 then print “İşe boydan dolayı alınamıyorsunuz” ifadesinde boy 190 dan büyük yada 165 den küçük olması durumunda then den sonraki komutlar işletilecektir. c)Not Operatörü: Bu operatör ifadenin tersini şart koşar. Değer Operatör Sonuç 1 Not 1 0 Not 0 Örneğin: if Not Text1.text=” ” Then ... ifadesinde text1’in içi boş değilken then’den sonraki komutları işlet anlamı vardır. DİYALOG PENCERELERİ MsgBox(): Diyalog penceresi içerisinde bilgi vermede kullanılır. MsgBox(“gösterilecek metin”) UYGULAMA: Formun üzerine tıklayınca bir pencere açılsın ve Üzerinde merhaba yazsın. Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Click MsgBox("Merhaba") End Sub MessageBox.Show() : Ekranda diyalog penceresi içerisinde bilgi vermede kullanılır ve kullanıcıya seçme şansı tanır. Çıkan butonlar Window’sun butonlarıdır. Bu nedenle türkçe çıkar. MessageBox.Show(“diyalog yazısı”, “Pencerenin başlığı”, Görüntülenecek butonların isimleri, Görüntülenecek sembol resminin adı, Hangi butonun seçili olacağı) UYGULAMA: Formun üzerine bir buton yerleştirin. Butonun başlığını “ÇIKIŞ” olarak değiştirin. Üzerine tıklayınca size “Programdan çıkmak istiyor musunuz?” diye sorsun ve üç seçenek sunsun. Evet, hayır, iptal. Hangisine basarsanız bastığınız tuşu size söylesin. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim sonuc As Integer sonuc = MessageBox.Show("Programdan Çıkmak İstiyormusunuz?", "Programdan Çıkış", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) If sonuc = 6 Then MsgBox("Evet Tuşuna bastınız") If sonuc = 7 Then MsgBox("Hayır Tuşuna bastınız") If sonuc = 2 Then MsgBox("İptal tuşuna bastınız") End Sub InputBox() Dışarıdan diyalog penceresi metin kutusu kullanılarak bilgi almada kullanılır. Formatı şöyledir. InputBox("Metin kutusunun başlığı", "Diyalog Pencesinin başlığı", "Varsayılan yazı", Pencerenin ekranda yer alacağı X koordinatı, Pencerenin ekranda yer alacağı Y koordinatı) Örnek: bununla ilgil örnek aşağıdak Load olayı içerisinde verilmiştir. NESNELER Label: Formun üzerinde sabit bilgi yazmada kullanılır. Text: özelliği ile başlığı değiştirilir. TextBox: Kullanıcıdan metin girdisi almak için kullanılır. UYGULAMA: Formun üzerine bir label, bir TextBox, ve bir buton yerleştirin. Label’in üzerinde Ad-Soyad yazsın. Buton basınca text kutusuna yazmış olduğunuz ad ve soyadınızı alıp Mesaj kutusu içerisinde size “Merhaba Ahmet Kara” şeklinde cevap versin. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click MsgBox("Merhaba " + TextBox1.Text) End Sub GrupBox: Formun üzerine çerçeve yerleştirmeye yarar. Dock: özelliği ile formun üzerinde alacağı yeri belirleyebilirsiniz. Text: özelliği ile başlığını değiştirebilirsiniz. RadioButton: Kullanıcının birtakım seçenekler arasından birini seçme işleminde kullanılır. Radio butonlarının arasında bağlantı kurmak için bunların GrupBox nesnesi üzerinde oluşturulması gerekir. RadioButton seçili özelliği “Checkhed” özelliğidir. Bu özellik true yada false olur. UYGULAMA: İdeal kiloyu hesaplayan bir program yazın. Bunun için Formun üzerine bir text kutusu bir buton, bir grupbox ve üzerine de iki tan radiobutton yerleştirin. Radyo butonların birinde “Bayan” diğerinde “Erkek” yazsın. Text kutusunun yanında da label nesnesi üzerinde “Boyunuz” yazsın. Butonun üzerinde de “İdeal kilo” yazsın. Kulanıcı cinsiyetini seçip text kutusuna boyunu girince butona bassın ve bir diyalog penceresi içerisinden kişinin ideal kilosunu yazsın. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim idealkilo As Integer Dim boy As Integer boy = Val(TextBox1.Text) If RadioButton1.Checked Then idealkilo = boy - 115 If RadioButton2.Checked Then idealkilo = boy - 105 MsgBox(idealkilo) End Sub ÖZELLİKLER TabStop: Bu özellik kontrollere sekme (tab tuşu) kullanımı hakkı verir. TabIndex: Bu özellik nesnelere tab tuşu ile seçim yaparken sıralama katar. BackColor: Arka plan rengini ayarlamada kullanılır. ForeColor: Nesnenin üzerinde görüntülenecek yazıların rengini belirlemede kullanılır. FormBorderStyle: Form nesnesinin çerçevesiyle ilgili çeşitli ayarları yapmada kullanılır. AcceptButton: Kullanıcı enter tuşuna bastığında formun hangi butonun Click olayının tetikleneceğini belirler. Icon: Formun sol üst köşesindeki icon resmini değiştirmede kullanılır. AutoScroll: Bu özellik true ise formun yanlarında kayan çubular oluşur. Size: Formun büyüklüğünü ayarlamada kullanılır. Çalışma esnasında formun boyutlarını değiştirmek için şu kodlar kullanılır. ControlBox: Formun üzerindeki minimize ve maximize butonlarının görünümünü sağlar. MaximizeBox: Formun üzerinde bu düğmenin görünmesini sağlar. MinimizeBox: Formun üzerinde bu küçülme düğmesinin görünümünü sağlar. TopMost: Formun sürekli olarak diğer formların üzerinde görünmesini sağlar. Aktif olmasa bile. UYGULAMA: formun üzerine iki tane buton koyun. Birinci butona basılınca form 200,150 boyutlarına küçülsün. İkinci butona basınca form 600,400 boyutlarına büyüsün. Form küçüldüğünde eğer butonlar kayboluyorsa bunları görmek için AutoScrool özelliğini True yapın. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Me.Size = New System.Drawing.Size(200, 150) End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Me.Size = New System.Drawing.Size(600, 400) End Sub OLAYLAR Click: Kullanıcı mouse ile nesneye tıkladığında gerçekleşir. Load: Formun ilk olarak yüklendikğinde aktif olur. Genellikle kullanılacak ilk değerler bu olayın içinde atanır. Activated: Formu aktif pencere haline geldiğinde kullanılır. Deactivate: Form inaktif olmuştur. Enter: Kullanıcı nesne üzerine odaklandığında seçili hale geldiğinde. Leave: Kullanıcı nesne üzerindeki odaklamasını kaybettiğinde MouseMove: Kullanıcı fareyi nesne üzerinde yürüttüğünde çalışır. Paint: Bir pencerenin tekrar boyanması gerektiğinde kullanılır. Bunun pencerenin boyutlarının değişmesi yada önünün açılması gerekir. Resize: Formun eni yada boyu değiştiğinde kullanılır. Closing: Formun kapatılma esnasında kullanılır. Bu esnada kullanıcı formu kapatılmasını iptal etme şansı vardır. Closed: Form kapatımıştır. Form kapanırken olaylar sıralanırsa Closing>Deactivate>Closed olarak sıralanır. UYGULAMA: Formun üzerine iki tane Label nesnesi yerleştirin. Formun Resize olayını kullarak formun mouse ile boyutlarını tutup her değiştirdiğinizde formun genişlik ve yüksekliğini bu label nesnelerinde yazmasını sağlayın. Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Resize Label1.Text = Me.Size.Width.ToString() Label2.Text = Me.Size.Height.ToString() End Sub UYGULAMA: Formun ilk yüklendiğinde kullanıcıdan şifre istemek için bir pencere açılsın. Eğer şifre doğru ise program çalışmaya devam etsin. Yanlışsa program dursun. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim sifre As VariantType sifre = InputBox("şifrenizi giriniz", "Sifre Kontrol", "*****", 300, 200) If (sifre <> 123) Then End End If End Sub DEĞİŞKENLER Program içerisinde kullanılan sabit ve değişkenlerin tanımlanması profesyonel programcılık için gereklidir. • Her değişken hafızada belli bir yer kaplar. Bu nedenle ihtiyaç olduğu kadar hafızada en az yer kaplayan değişkenlerin kullanılması gerekir. • Değişkenler başlangıçta tanımlanırsa, kodlama sırasında değişkenlerin birbirine karışması ve meydana gelecek hatalar önlenir. Program yazarken değişken kullanımı hafızayı verimli kullanma, olası hataları önlemek için mutlaka kullanılmalıdır. Bu kullanımı zorunlu hale getirmek için “Option Explicit” ifadesi kullanılabilir. Değişken tanımlarken “Dim …. As Integer” şeklinde ifade kullanılır. Değişken tanımalama üç düzeyde olur. Procedure Düzeyi: Procedure her olay için açılmış olan küçük bölümlerdir. Private yazısı ile başlayan satırlar her bir procedurü gösterir. Form Düzeyi: Bir procedure içinde tanımlanan değişken başka bir procedure içinde tanınmaz. Tanımlanan değişkenin Formun içindek bütün procedurler içinde tanınmasını sağlamak için bütün procedurlerin üzerinde (dışında) “Windows Form Designer Genereated Code” yazısının altında tanımlama yapmak gerekir. Proje Düzeyi: Bir formda tanımlanan değişken başka formlar tarafından tanınmaz. Bunu sağlamak için Proje düzeyinde tanımlama yapmak gerekir. Bunun için yine aynı yerde Public ifadesi ile tanımlama yapmak gerekir. Başka formda proje düzeyinde tanımlanan değişkeni kullanmak için o değişkenin başında o formun adını da yazmalı. Sabitler: Sabitler program içerisinde hep aynı değeri saklar. Bunlar string türü sayısal olmayan ifadeler olabileceği gibi, sayısal ifadelerde olabilir. Tanımlama işlemi Const deyimi ile yapılır. Örnek: Const isim$=”Ahmet” Const alan=200 Burada olduğu gibi sabitler bir isme atanarak kullanılır. Kullanılan her sabitin bir tipi vardır. Bu türler değişkenlerde kullanılanlarla aynıdır. Değişkenler: Değişkenler program içerisinde farklı değerler alabilir. Değişkenler tanımlanırken dizilimi şu şekildedir. Dim değişkenin adı As değişkenin tipi Örnek: Dim isim As String Dim yas As Byte Dim no As Long Sabitlerde ve değişkenlerde kullanılabilecek değişik tanımlamalar. Sabit ve Değişkenlerde kullanılan Tanımlamalar: •String: Karakter ifadeleri (sayı olmayan) tanımlamada kullanılır. Hafızada her karakter 1 Byte (8bit) alan kaplar. “...” sembolleri arasına yazılır. Ör: a=“Ahmet”, b=“kod12”, c=“123” gibi •Boolean: İki durumdan birinin olduğu durumlarda kullanılır. 1 ve 0 sayılarını alabilir. True(doğru) yada False (yanlış) olabilir. •Byte: 28=0-255 arasındaki tam sayıları alabilir. Hafızada (8/8=1 Byte) yer tutar. •Integer: ± 216= ± 32768 arasındaki tam sayıları alır. Hafızada (16/8=2 Byte) yer tutar. •Long: ± 232 arasındaki tam sayıları tutar. Hafızada (32/8=4 Byte) yer tutar. •Single: ± 232 ondalıklı sayıları tutar. Hafızada 4 byte yer kaplar. •Double: ± 264 ondalıklı sayıları tutar. Hafızada 8 byte yer tutar. •Currency: Para ile ilgili işlemlerde kullanılır. 8 byte yer tutar. •Date: Tarih ve zaman gibi değerleri tutar. 1/1/100 den 12/31/9999 arası değerler alabilir. 8 byte yer tutar. •Variant: Yukarıda kullanılabilecek bütün tanımlamaları içine alabilen bir tanımlamadır. Tanımlama yapılmadığı zamanlarda yada hangi tanımlaamanın kullanılacağından emin olunmadığı durumlarda kullanılabilir. 16 Byte yer kaplar. DÖNGÜLER ve BLOKLAR Kontrol ve döngü deyimleri program akışının kontrolünü sağlamak amacıyla kullanılır. Gerçekte programın çalışmasını kullanılan nesneler ve bu nesnelerin içerisinde tanımlanan olaylar belirlemektedir. Fakat bu olayların içerisinde ise kontrolü bu deyimler sağlamaktadır. IF-THEN-ELSE Deyimi: Programın koşullara bağlı olarak kararlar vermesine olanak sağlar. Yapısı; Yapısı iki şekilde oluşturulabilir. Basit Yapı: If durum Then deyim1 Else deyim2 Bu yapıda Else istenirse kullanılmaya bilir. Blok Yapı: If durum1 Then Deyimler1 ElseIf durum2 Then Deyimler2 ElseIf durum3 Then Deyimler3 ….. Else Deyimler4 End If Örnek: Önce basit yapıya bir örnek verelim. If tahmin=30 Then Print “bildiniz” Else Print “bilemediniz” Bu örnekte eğer tahmin 30’a eşitse Then den sonraki ifadeyi işletecektir. Eğer eşit değilse Else’den sonraki ifadeyi işletecektir. Blok yapıda ElseIf ifadesi istenilen sayıda çoğaltılabilir. En sonundaki Else ise şartsız olarak kullanılır. UYGULAMA: Formun üzerine 2 tane TextBox, 2 tane Label, 1 tane Command butonu ekleyin. Kullanıcıdan kullanıcı adını ve şifre isteyip bunları içeriden kontrol etsin. Kodların içerisine bir kaçtane kullanıcı adı ve şifre ekleyin. Private Sub Command1_Click() Select Case LCase(Text1.Text) Case "" MsgBox "Lütfen bir kullanıcı adı giriniz" Case "admin" If Text2.Text = "321" Then MsgBox "Şifre Doğru" End If Case "misafir" If Text2.Text = "123" Then MsgBox "Şire Doğru" End If Case "aktas" If Text2.Text = "456" Then MsgBox "Şire Doğru" End If Case Else MsgBox "Böyle bir kullanıcı kayıtlı değil" End Select End Sub SELECT CASE Deyimi: Bu deyim belli bir koşula göre çok sayıda dallanma işlemini gerçekleştirir. Yapısı şu şekildedir. Select Case Durum Case ifade1 Komutlar Case ifade2 Komutlar ... Case Else Komutlar End Select Select Case kısmında bir durum (koşul) belirleniyor. Case ifadelerinde ise bu durumu sağlayan ifade araştırılıyor. Eğer herhangi bir ifade bu durumu sağlıyorsa hemen onun altındaki komutlar işletiliyor. Eğer hiçbir ifade bu durumu sağlamazsa Case Else’nin altındaki komutlar işletiliyor. UYGULAMA: Bir formun üzerindeki butona tıkladığımızda bir pencere açılsın ve bu pencereden aldığımız notu girmemiz istensin. Ardından aldığımız not durumlarına göre yine bize geçip kaldığımızı pencereden söyleyen bir program yazın. Private Sub Command1_Click() puan = InputBox("Notunuzu Giriniz") Select Case puan Case 100 MsgBox ("Bravo 100 almışsınız. Ödül kazandınız") Case 90 To 99 MsgBox ("Pekiyi ile geçtiniz") Case 80 To 89 MsgBox ("iyi ile geçtiniz") Case 70 To 79 MsgBox ("orta ile geçtiniz") Case 60 To 69 MsgBox ("Geçerle geçtiniz") Case Is < 60 MsgBox ("kaldınız") Case Else MsgBox ("yanlış sayı girdiniz") End Select End Sub Bu örnekte puan 100’e eşitse ilk Case satırı işletilecektir. Yada puan 60 ile 69 arasında ise “Geçerle geçtiniz” satırı işletilecektir. Eğer yukarıdaki hiç bir şartı sağlamıyorsa Case Else satırı işletilecektir.