VB Başlangıç(Anlatım+Örnek)...
rem ilk.frm
sabit sayıların form başlığında toplatılması
Private Sub Command1_Click()
a = 12
b = 9
Label1.Caption = "sonuç="
Text1 = a + b
Form1.Caption = "sonuç=" & a + b
Print "sonuç="; a + b
End Sub
rem *******************************************
rem ikiiki.frm
text kutuları yardımı ile girilen verileri toplama
Private Sub Command1_Click()
Text1 = Text3 + Val(Text2)
End Sub
Private Sub Form_DblClick()
Text1 = "": Text2 = "": Text3 = ""
End Sub
rem *******************************************
rem static komutunun kullanımı
rem program çalıştırıldığında butona basılırsa buton üzerinde basılma miktarı gözlenir
Private Sub Command1_Click()
Static x
X=x+1
Command1.caption=x
End Sub
rem *******************************************
rem topla.frm
Rem klavyeden girilen sayıları döngüsüz toplar
Rem static komutunun kullanımı
Private Sub Command1_Click()
Static top
a = Val(InputBox("veri giriniz"))
Print 'enter görevi görür
Print a ' klavyeden girilen a yı ekrana basmak
top = top + a
Print "top="; top ' toplamın hesaplanması
End Sub
rem********************************************
' if1.frm amacı if blok kullanımı
Private Sub Command1_Click()
a = InputBox("a=")
b = InputBox("b=")
c = InputBox("c=")
d = InputBox("d=")
If a >= 50 Then Print "a >= 50" Else Print "a < 50"
If b >= 50 Then Print "b >= 50" Else Print "b < 50"
Print "a="; a
Print "b="; b
If c >= 50 Then
Print "c >= 50"
Else
Print "c < 50"
End If
Print "c="; c
If d >= 50 Then
Print "d >= 50"
ElseIf d < 50 Then Print "d < 50"
Else
Print "alakasız bir sayı"
End If
Print "d="; d
End Sub
rem *******************************************
rem if11.frm
rem 'yukarıda kullanılan programın farklı kullanımı
Private Sub Command1_Click()
a = 12
b = 45
c = 6
d = 70
If a >= 50 Then Print "a > 50" Else Print "a < 50"
If b >= 50 Then Print "b > 50" Else Print "b < 50"
If c >= 50 Then
Print "c > 50"
Print "c < 50"
End If
If d >= 50 Then
Print "d > 50"
Else
Print "d < 50"
End If
End Sub
rem *******************************************
rem ikisayiif.frm
rem iki sayının karşılaştırılması
Private Sub Command1_Click()
Randomize
a = Val(Int(Rnd() * 101))
b = Val(Int(Rnd() * 101))
Print "a="; a
Print "b="; b
If a < b Then
Print "a < b"
ElseIf a > b Then Print "a > b "
Else
Print "a = b "
End If
Form1.Caption = a + b
End Sub
Rem if1.vbp if komutunun else komutu ile kullanımına örnek
Private Sub Command1_Click()
'rasgele notların hesaplanması
Randomize
Text1 = Int(Rnd() * 101)
If Val(Text1) <= 39 Then
Label1.Caption = "ff"
ElseIf Val(Text1) <= 45 Then
Label1.Caption = "dd"
ElseIf Val(Text1) <= 47 Then
Label1.Caption = "dc"
ElseIf Val(Text1) <= 50 Then
Label1.Caption = "cc"
ElseIf Val(Text1) <= 64 Then
Label1.Caption = "cb"
ElseIf Val(Text1) <= 74 Then
Label1.Caption = "bb"
ElseIf Val(Text1) <= 85 Then
Label1.Caption = "ba"
Else
Label1.Caption = "aa"
End If
End Sub
rem *******************************************
rem loop1.frm do//loop döngüsü yardımı ile 50 sayısını kaçıncı denemede bulduğumuzu hesaplar
Private Sub Command1_Click()
Randomize
Do
a = Val(Int(Rnd() * 101))
x = x + 1
Print a
If a = 50 Then
Form1.Caption = x & ". denemede bulduk"
MsgBox ("program duracak")
End
End If
Loop
End Sub
Rem**********************************************
Rem faktor.frm
Rem klavyeden girilen sayını faktoriyelini bulma
Private Sub Command1_Click()
Dim k As Integer
faktor = 1
a = InputBox("faktoriyeli alınacak sayıyı giriniz=")
Do While k < a
k = k + 1
faktor = faktor * k
Loop
Print "faktor="; faktor
End Sub
Exit do: do loop döngüsünden (sonsuz döngüden çıkmak amacı ile kullanılır
Private Sub Command1_Click()
Do
i = i + 1
Print i
If i = 10 Then Exit Do
Loop
End Sub
For //next döngüleri
Başlangıç ve bitiş değerleri belli olan çevrimlerdir. For k=1 to 5 ifadesinde k indisi ballangıç 5 değeri dngümüzün gideceği son değeri vermektedir. Ayrıca 5 değerinden sonra gizli step 1 varmış kabul edilir.
For k=1 to 5 step 1 gibi düşünülür. Eğer kullanıcı döngüyü tersden çslıştırmak isterse for z=5 to 1 step -1 mutlak suretle step komutunu kullanmak zorundadır. İsteğe bağlı olarak döngü sayısı arttırılabilnir. Her bir for deyimine karşılık next deyimi kullanılır.
Örnek
For i = 5 To 1 Step -1
For j = 2 To 1 Step -1
Print i, j
Next j
Next I
************************************************** **************
Rem forfaktor.frm
Rem text kutusuna girilen rakamın faktoriyelini text kutusuna aktarmak
Private Sub Command1_Click()
a = Val(Text1)
faktor = 1
For k = 1 To a
faktor = faktor * k
Next
Label1.Caption = a & "nın faktoriyeli="
Text1 = faktor
End Sub
Private Sub Form_Load()
Text1 = ""
Label1.Caption = "yandaki kutuya sayı giriniz -->"
End Sub
Rem forenbenk.frm
Rem rasgele üretilen sayıların enbüyük ve enküçük sayıları ve yerlerini bulan program.
Private Sub Command1_Click()
Cls
Randomize
enb = 0: enk = 100
For k = 1 To 10
a = Val(Int(Rnd() * 101))
Print a
If a > enb Then enb = a: enbs = k
If a < enk Then enk = a: enks = k
Next
Print "enb="; enb; "sırası="; enbs, "enk="; enk; "sırası="; enks
End Sub
Time komutu: Makinanın zaman saatini verir. Programlarda genellikle zamana bağlı işlemlerde kullanılır.
Do
Print Time
If Time = "00:51:00" Then Exit Do
Loop
*****************************************
Liste kutusu nesnesi
Liste kutusuna amaca uygun verileri yerleştirmek için list1.additem değişken adı kullanılır
List1.additem a gibi liste kutusunun içindeki verileri silmek için list1.clear komutu kullanılır
Rem liste kutularına tek ve cift toplam 10 sayı yerlestirme
Private Sub Command1_Click()
Randomize
List1.Clear
List2.Clear
For k = 1 To 10
a = Int(Rnd() * 101)
If a / 2 = Int(a / 2) Then
Rem çift işlemleri
cift = cift + 1
List1.AddItem a
Else
Rem tek sayı işlemleri
tek = tek + 1
List2.AddItem a
End If
Next
Label1.Caption = cift
Label2.Caption = tek
************************************************** *******************************
Rem girilen sifreyi gizleyerek üç hakta bulmak
Private Sub Command1_Click()
Static x
If Text1 <> "123" Then
x = x + 1
MsgBox ("hatalı sifre" & x & ".ncı hakkınız")
If x = 3 Then MsgBox ("lütfen 5464564564 noya basvur"): End
Else
Form2.Show
Form1.Hide
End If
End Sub
Private Sub Form_Load()
Text1.PasswordChar = "&"
End Sub
Option nesnesi: tek bir seçeneği işaretlemek zorunda olunan durumlarda kullanılır
Rem option buton uygulaması
rem option17.03.frm
Private Sub Command1_Click()
If Option1 = True Then
b = "erkek"
Else
b = "bayan"
End If
If Option3 = True Then
c = "evli"
Else
c = "bekar"
End If
Form1.Caption = "siz " & c & b & "siniz"
End Sub
************************************************** *****************************
Check nesnesi: onay butonu yada çeketme butonu olarak anılmaktadır. Check1=1 ise işaretli anlamındadır
Check1.Enabled = 0 kutunun silik olduğunu verir. Check1.Enabled = 1 kutu görünür olduğunu verir.
Check1.Value = 1 kutunun işaretli olduğunu verir. Check1.Value = 1 kutunun işaretli olduğunu verir
************************************************** ***************************
Rem kdv örneği
Rem option17.03.frm
Private Sub Check1_Click()
If Check1 = 1 Then
Text4 = Text3 * Text2 * 1.18
Check1.Caption = "%18 kdv dahil"
Else
Text4 = Text3 * Text2
Check1.Caption = "kdv hariç"
End If
End Sub
Private Sub Form_Click()
Text1 = "": Text2 = "": Text3 = ""
End Sub
Hatırlatma liste kutusu örnekleri (ileride işlenecek- dizilerin konusu)
Soru :klavyeden girilen on sayının ortalamasını bulma, ortalamadan büyük olan sayıları liste kutusuna yerleştirmek.
Rem listeort.frm
Private Sub Command1_Click()
Dim a(10)
Dim top As Integer
For k = 1 To 10
a(k) = Val(InputBox("sayı girin"))
top = top + a(k)
Next k
Print "top="; top
c = top / 10
Print top / 10
Do While m < 10
m = m + 1
Print a(m)
If a(m) > top / 10 Then List1.AddItem a(m)
Loop:End Sub
************************************************** ********************************
rem Private Sub Command1_Click() ragele üretilen 0 ile 999 arasındaki sayılardan tek ve çift olarak ,beşer adet olacak şekilde liste kutularına yerleştirme
bas:
e1 = 0
e2 = 0
sayac = 0
List1.Clear
List2.Clear
dn = dn + 1
Do While sayac < 10
Randomize
a = Int(Rnd() * 1000)
sayac = sayac + 1
If a > 501 Then
List1.AddItem a
Else
List2.AddItem a
End If
e1 = List1.ListCount
e2 = List2.ListCount
Label1.Caption = e1
Label2.Caption = e2
Loop
If e1 = e2 Then
MsgBox ("esıt ")
Else
GoTo bas
End If
Form1.Caption = dn & ".denemede esıtlık var"
End Sub
Örnek iki liste kutusu üzerinde verilerin butonlar yardımı ile taşınması
Private Sub Command1_Click()
If List1.ListIndex >= 0 Then
List2.AddItem List1: 'burası
List1.RemoveItem List1.ListIndex: 'burası
Label1.Caption = List1.ListCount
Else
MsgBox ("sılınecek elemanı secmedınız")
End If
End Sub
Private Sub Command2_Click()
If List2.ListIndex >= 0 Then
List1.AddItem List2: 'burası
List2.RemoveItem List2.ListIndex: 'burası
Label2.Caption = List2.ListCount
Else
MsgBox ("sılınecek elemanı secmedınız")
End If
End Sub
Private Sub Form_Load()
List1.AddItem "a"
List1.AddItem "b"
List1.AddItem "c"
List1.AddItem "d"
List1.AddItem "e"
List1.AddItem "f"
List1.AddItem "g"
List1.AddItem "h"
List1.AddItem "i"
List1.AddItem "j"
List1.AddItem "k"
List1.AddItem "l"
List1.AddItem "m"
List1.AddItem "n"
List1.AddItem "o"
List1.AddItem "p"
List1.AddItem "r"
List1.AddItem "t"
List1.AddItem "u"
List1.AddItem "y"
List1.AddItem "w"
List1.AddItem "z"
End Sub
Işe alımla ilgili vize sorusu (üniversite, 20 yaş üstü ,50 puan ve üstünü alan ilk dört kişi için seçim)
Static say
Print "hoş geldiniz"
If Option1 = True Then
MsgBox ("üzgünüz uygun değilsiniz")
ElseIf Option2 = True Then
MsgBox ("üzgünüz uygun değilsiniz")
ElseIf Option3 = True Then
If Option4 = True Then
MsgBox ("üzgünüz uygun değilsiniz")
ElseIf Option5 = True Then
If Val(Text1) > 49 Then
MsgBox ("seçildiniz")
say = say + 1: Print say
b = InputBox("adınızı girin")
List1.AddItem b
Text1 = ""
If say = 4 Then MsgBox ("sınav kapasıitesi dolmuştur"): End
End If
End If
End If
Select case komutu :if komutu gibi çalışıp bağlı bulunduğu değişkene göre programın sonuçlandırılmasını sağlar.
Örnek yaş grubuna göre okul tayin
Rem case.frm
Private Sub Form_Click()
Rem Do While lsay < 5
Static lsay
yas = InputBox("yasınızı girin")
Select Case yas
Case 3 To 7
MsgBox ("ana okulu")
Case 8 To 12
MsgBox ("ilköğretim")
Case 13 To 15
MsgBox ("ortaokul")
Case 16 To 18
MsgBox ("lise")
Case 19 To 22
MsgBox ("ünüversite")
Rem lsay = lsay + 1
Case Else
MsgBox ("okumuyor olabilirsiniz")
End Select
Rem Loop
Print lsay
If lsay = 5 Then MsgBox ("secim bıtmıstır"): End:End Sub
Combo nesnesi:Bilgilerin açılan kutuya yerleştirilmesi için kullanılır .Çokfazla yer kaplamadığı için tercih edilir.
Dim mks, yardim
Private Sub Combo1_Click()
If Combo1 = "eşi çalışmıyor" Then
Combo2.Enabled = 1
ElseIf Combo1 = "eşi çalışıyor" Then
Combo2.Enabled = 1
ElseIf Combo1 = "bekar" Then
Combo2.Enabled = 0
MsgBox ("Yardım Yok")
End If
End Sub
Private Sub Command1_Click()
mks = 10
topyardım = 0
If Combo1 = "eşi çalışıyor" Then
If Combo2 = "0" Then Form1.Caption = "Toplam Yardım= " & topyardım & " YTL"
If Combo2 = "1" Then: topyardım = mks * 5: Form1.Caption = "Toplam Yardım= " & topyardım & " YTL"
If Combo2 = "2" Then: topyardım = mks * 10: Form1.Caption = "Toplam Yardım= " & topyardım & " YTL"
If Combo2 = "3" Then: topyardım = mks * 15: Form1.Caption = "Toplam Yardım= " & topyardım & " YTL"
If Combo2 = "4" Then: topyardım = mks * 20: Form1.Caption = "Toplam Yardım= " & topyardım & " YTL"
If Combo2 = "5" Then: topyardım = mks * 25: Form1.Caption = "Toplam Yardım= " & topyardım & " YTL"
ElseIf Combo1 = "eşi çalışmıyor" Then
If Combo2 = "0" Then Form1.Caption = "Toplam Yardım= " & topyardım & " YTL" & " YTL"
If Combo2 = "1" Then: topyardım = mks * 15: Form1.Caption = "Toplam Yardım= " & topyardım & " YTL"
If Combo2 = "2" Then: topyardım = mks * 20: Form1.Caption = "Toplam Yardım= " & topyardım & " YTL"
If Combo2 = "3" Then: topyardım = mks * 25: Form1.Caption = "Toplam Yardım= " & topyardım & " YTL"
If Combo2 = "4" Then: topyardım = mks * 30: Form1.Caption = "Toplam Yardım= " & topyardım & " YTL"
If Combo2 = "5" Then: topyardım = mks * 35: Form1.Caption = "Toplam Yardım= " & topyardım & " YTL"
End If
End Sub
Private Sub Form_Load()
With Combo1
.AddItem "eşi çalışmıyor"
.AddItem "eşi çalışıyor"
.AddItem "bekar"
End With
With Combo2
.AddItem "0"
.AddItem "1"
.AddItem "2"
.AddItem "3"
.AddItem "4"
.AddItem "5"
End With
End Sub
Örnek ascii tablosunun form üzerinde gösterimi
Private Sub Form_click()
Text1 = ""
For i = 1 To 255
Text1 = Text1 & "[" & i & "=" & Chr(i) & "]"
Next
End Sub
20-03-2007 & 21-03-2007
//Bir formda üç adet check butonu ve üç adet option butonu bulunmaktadır. Option butonları seçildikten sonra , her option butonuna karşılık gelen check butonu otomatik seçilmekte diğer check butonlaı kapalı duruma geçmektedir.
Private Sub Option1_Click()
If Option1.Value = True Then
Check1.Value = 1 ‘seçili
Check1.Enabled = 1 ‘görünür
Check2.Enabled = 0 ‘görünmez
Check3.Enabled = 0 ‘görünmez
Option2.Value = 0
Option3.Value = 0
End If
End Sub
Private Sub Option2_Click()
If Option2.Value = True Then
Check1.Value = 0
Check1.Enabled = 0
Check2.Enabled = 1
Check2.Value = 1
Check3.Enabled = 0
Option2.Value = 1
Option3.Value = 0
End If
End Sub
Private Sub Option3_Click()
If Option3.Value = True Then
Check1.Value = 0
Check1.Enabled = 0
Check2.Enabled = 0
Check2.Value = 0
Check3.Enabled = 1
Check3.Value = 1
Option2.Value = 0
Option3.Value = 1
End If
End Sub
Rem form üzerindeki yer alan kutulardan kaçtanesi 10 sn. Içinde işaretlenebilinir
Formda mutlaka 1 adet timer bulunması gerekir.
Dim saniye
Private Sub Form_Load()
saniye = 10
Label1.Caption = "süreniz" & saniye
End Sub
Private Sub Timer1_Timer()
Dim i, say As Integer
saniye = saniye - 1
Label1.Caption = saniye & "kaldı"
If saniye = 0 Then
Label1.Caption = "süre bitti"
Timer1 = False 'sure bittiğinde saniye durması için
Rem kutu sayma işlemi
For i = 0 To 11
If Check1(i) = 1 Then 'işaretli ise
say = say + 1
End If
Next
Form1.Caption = "toplam=" & say & "kutu işaretlendi"
End If
End Sub
Örnek soru
Rasgele işaret üreten bir makina bulunmaktadır elemanları +,*,?,/ simgelerinden oluşmaktadır. Her çalışmada toplam 4 adet işaret basılmaktadır. Ne zaman üç adet ? simgesini arka arkaya basa bilmektedir.?
Private Sub Command1_Click()
Randomize
Do While say < 3
say = 0
For k = 1 To 5
a = Int(Rnd() * 4)
'Print a;
If a = 0 Then S = "+"
If a = 1 Then S = "*"
If a = 2 Then S = "?": say = say + 1
If a = 3 Then S = "/"
List1.AddItem S
Next
List1.AddItem "-------"
don = don + 1
Loop
Form1.Caption = don & "denemede bulundu"
End Sub
27-03-2007 &28-03-2007
Örnek soru
Aşağıdaki formun çalışması için kodları hazırlayınız.x>=0 olduğunda ve x<0 olması durumunda oluşacak fonksiyonları yazınız.
Private Sub Command1_Click()
Label1.Caption = "x>=0-->sqr(x^2+5) x<0 --> abs(x-3)"
Dim x, f As Single
x = InputBox("x değerini giriniz")
If x >= 0 Then
f = Sqr(x ^ 2 + 5)
Else
f = Abs(x - 3)
End If
Label2.Caption = ("x=" & x & " için f=" & f)
End Sub
Örnek soru
Aşağıdaki formu çalıştıran programı yazınız. 10 saniye içinde liste kutusuna 10 adet rasgele sayı ekleme programı
Dim k
Private Sub Form_Load()
k = 10
End Sub
Private Sub Timer1_Timer()
Randomize
k = k - 1
a = Int(Rnd() * 101)
List1.AddItem a
If k = 0 Then
Timer1.Enabled = False
Command1.Caption = "işlem bitti"
End If
Label1.Caption = List1.ListCount
End Sub
Not:programın çalışabilmesi için timer nesnesinin
Interval değerinin 1000 yapılması gereklidir. Dim k ifadesi decleration kısmında tanımlandığına dikkat ediniz.Aksi taktirde k değişkeni programın diğer yerlerinde değerini unutur.
Örnek soru:Aşağıdaki form 10 sn içinde text kutusuna rasgele sayı üretmektedir. Süre bittiğinde üretilen sayıda değişmeyecektir.
Private Sub Timer1_Timer()
Static k
Randomize
k = k + 1
Text1 = Int(Rnd() * 101)
If k = 10 Then Timer1.Enabled = False
Label2.Caption = 10 - k
End Sub
Not:Bu örnekte general alanına değişken girilmemiş bu işlem için static ifadesi kullanılmıştır.
Diziler
Sıralama, değişkenin hafızada tutulabilmesi için kullanılır.
Örnek soru :Rasgele üretilen on adet sayının standart sapma ,ortalama, varyansın bulunması
Private Sub Command1_Click()
Randomize
Dim n As Integer
Dim x(100) As Single
Dim i, j As Integer
Dim ortalama, varyans, spma As Single
Dim toplam1, toplam2 As Single
n = InputBox("dizi boyutu")
toplam1 = 0
For i = 1 To n
x(i) = Int(Rnd() * 101)
List1.AddItem x(i)
toplam1 = toplam1 + x(i)
Next
ortalama = toplam1 / n
Label1.Caption = "dizinin ortalaması="
Label2.Caption = ortalama
toplam2 = 0
For j = 1 To n
toplam2 = toplam2 + (x(j) - ortalama) ^ 2
Next
varyans = toplam2 / (n - 1)
Label3.Caption = "dizinin varyansı="
Label4.Caption = varyans
spma = Sqr(varyans)
Form1.Caption = "sapma=" & spma
End Sub
Örnek soru:Rasgele üretilen 10 sayının 1.liste kutusunda sırasız 2. liste kutusuna sıralı olarak yerleştirilmesi
Private Sub Command1_Click()
Dim a(100)
Top = 0
Randomize
For k = 1 To 10
a(k) = Int(Rnd() * 101)
List2.AddItem a(k)
Next
Rem karşılaştırma
For i = 1 To 10
For z = 1 To 10
If a(i) < a(z) Then
tut = a(z)
a(z) = a(i)
a(i) = tut
End If
Next
Next
Rem yazma
For p = 1 To 10
List1.AddItem a(p)
Next
End Sub
Aynı örneğin sorusunu şu şekilde değiştirmiş olsaydık.
Ortalamadan büyük notların küçükten büyüğe sıralanmış halini list3 kutusuna yerleştirelim.
Programın devamı:
Rem karşılaştırma
For i = 1 To 10
For z = 1 To 10
If a(i) < a(z) Then
tut = a(z)
a(z) = a(i)
a(i) = tut
End If
Next: Next
Rem sıralı yazdırma
For h = 1 To 10
List3.AddItem a(h)
Next
Rem ortalamadan buyukleri sıralı yazdırma
For p = 1 To 10
If a(p) > ort Then List1.AddItem a(p)
Next
End Sub
Private Sub Command1_Click()
Dim a(100)
Top = 0
Randomize
For k = 1 To 10
a(k) = Int(Rnd() * 101)
List2.AddItem a(k)
Top = Top + a(k)
Next
ort = Top / 10
Command1.Caption = "ort=" & ort
kaynak:Öğr.Gör.Ali Atalay
Eskişehir Osmangazi Üniversitesi Bilgisayar Mühendisliği
|