|
|||||||
|
|
|
|||||
|
|
|||||||
Do
Komutlar
Loop Until Şart
Do
Komutlar
Loop Until Şart
Bu dögülerin yukarıdakilerden tek farkı döngüye girerken değil çıkarken şart
kontrol edilir.Yani döngü içerisindeki kod en az bir defa çalışır.
Örneğin kullanıcıya sınav notunu sorduğumuzu düşünelim. Gireceği not 0-100
aralığı dışında ise ; notu bu aralıkta girinceye kadar tekrar-tekrar sorulması
gerekir. Bu iş Do - Loop Until yapısı uygundur. Çünkü döngü içerisinde not
sorulduktan sonra not 0-100 aralığı dışında ise tekrar sorulması gerekir.
Dim nott'not değil,çünkü not özel bir deyim.
do
nott= InputBox ("Not Girişi","Sınav Notunuz","50")
Loop Until (nott > 0) and (nott < 100)
Exit Do komutu Do-Loop , While Wend döngülerinden birinde bazı şartların
gerçekleşmesi durumunda döngüden çıkmak için kullanılır.
Private Sub Command1Click()
Dim i,j
j=0
do
i=i+1
j=j+i^2
Labell =j
if Text1="Son" then Exit Do
DoEvents
Loop until i>=10000000
MsgBox (i & ".adımda çıkıldı.")
End Sub
Burada 1' den 10000000'a kadar olan sayıların karelerinin toplanmasını
sağlıyoruz. Ancak kullanıcı işlemi iptal etmek için text kutusuna Son yazarsa,işlem
tamamlanmadan döngüden çıkıyoruz.
Bu komutta For Next döngüsü tamamlanmadan,bazı şartlar gerçekleştiğinde döngüden
çıkmaya yarar.
Exit Sub ve Exit Function deyimleri alt program sonuna ulaşmadan alt programdan çıkmaya
yarar.
Private Sub Command1_Click()
Dim i,j
j=Val(Text1)
If j < 0 Then Exit Sub
For i=1 to j
List1.AddItem "Log("& i &")=" & Log (i)/Log(10)
Next
End Sub
Burada da 1 den , Text1 kutusuna girilen sayıya kadar olan sayıların
logaritmasını listeye ekliyoruz.Ancak kullanıcı kutuya 0 veya daha küçük bir sayı
girmiş ise alt programdan çıkıyoruz.
Programı sona erdirir. Bütün açık olan formları ve dosyaları kapatır.
Bir kontrole ait bir özellik değiştirilmek istendiği veya bir metod çağrıldığı
durumlarda kontrol adının da verilmesi gerekir.Örneğin Text1 1 kontrolunun Left
özelliğini 0 yapmak için
Text1.Left=0
Herhangi bir kontrol elemanının birden fazla özelliğini değiştirmek yada
metodlarına ulaştırmak için With-End With deyimi kolaylık sağlar. Kullanım
biçimi şöyledir.
With kontrol adı
Özellik = değer
Özellik = değer
......
End With
Artık bu blok içerisinde o kontrolun özelliklerine kontrolun ismi kullanılmadan
ulaşılabilir.
Private Sub Command1_Click()
Combo1.clear
Combo1.additem "Ahlad"
Combo1.additem "MYO"
Combo1.additem "Bilg."
Combo1.additem "Bölümü"
Combo1.FontBold=True
Combo1.FontName="Courrier New"
End Sub
Bütün proglamlama dillerinde aritmetik ve lojik işlemleri yapmak için gerekli
operatatörler bulunur.VB'de aritmetik işlemlerin bazıları operatörlerle yapılırken
bazıları da fonksiyonlarla yapılır.
VB'de kullanılan aritmetik ve lojik operatörler şunlardır:
| = | Atama | x=5 |
| + | Toplama | Print 20 + 5 '25 |
| - | Çıkarma | Print 10 - 5 '5 |
| * | Çarpma | Print 3 * 5 '15 |
| / | Bölme | Print 9 / 2 '4.5 |
| \ | Tam Bölme | Print 9 \ 2 ' 4 |
| & | String Toplamı | Print "Bayram" & "Paşa" ' BayramPaşa |
| ^ | Üst | Print 4^2 '16 |
| Mod | Bölmede Kalan | Print 5 Mod 2 '1 |
| And | Ve | Print 5 And 17 '1(00101 And 10001=00001 ) |
| Or | Veya | Print 7 Or 17 ' 23(00111 Or 10001=10111) |
| Xor | Xor | Print 7 Xor 17 '22 (000111 Xor 10001 =10110) |
| Not | Değil | Print Not & H1 '& HFFFE(Not 0000 0000 0000 0001=1111 1111 1111 1110) |
Üst işleminin özelliğinden dolayı ^ operatörü yüksek dereceden kökleri bulmak
içinde kullanılır.
Mod işlemi bir sayının başka bir sayıya bölümünde kalanı verir. Bu ilk bakışta
programcılık açısından fazla önemli değil gibi gözükse de aslında bir sayının
katlarını bulmak içinde kullanılabileceğinden oldukça kullanışlı bir
operatördür.Birsayı başka bir sayının tam katı ise o sayıya bölümde kalan 0
olacaktır. Örneğin 1 den 100'e kadar olan sayıları toplayacak bir programda her 10
adım sonucunu ekranda göstermek istersek.
Dim i,Top
For i=1 to 100
Top = Top +i
If (i Mod 10) =0 Then Print Top
Next
Print " Sonuç:" & Top
Tablodaki And , Or , Xor ve Not operatörleri Lojik Operatörlerdir ve bit seviyesinde
işlem yaparlar.
| 0 0 | 0 0 0 | 0 0 0 | 0 0 | 1 |
| 0 1 | 0 0 1 | 1 0 1 | 1 1 | 0 |
| 1 0 | 0 1 0 | 1 1 0 | 1 | |
| 1 1 | 1 1 1 | 1 1 1 | 0 |
(1. Sütun And 2. Sütun Or 3. Sütun Xor 4. Sütun Not)
Bu opreratörlerin lojil anlamlarının ötesinde her birinin programcılık açısından
önemli yerleri de vardır.
And işlemi ile bitin değeri önemlidir. Örneğin x sayısındaki 3. bitin
değerinin 1'mi 0'mı olduğunu öğrenmek için x sayısını öyle bir sayı ile And
işlemine tabi tutmak gerekir ki diğer bitlerin değeri göz ardı edilerek sadece
istediğimiz bitin değerini öğrenebilelim. And işleminin özelliğinden dolayı 1
etkisiz eleman yani 1 sayısı ile diğerlerini de yutan elemanla yani 0 sayısı ile And
işlemine tabi tutarsak sonuçta sadece istediğimiz sayı kalacaktır.
Dim x
x=InputBox ("bir sayı giriniz")
If (x and &h4)=0 Then
MsgBox (girdiğiniz sayının üçüncü biti 0")
Else
MsgBox ("girdiğiniz sayının üçüncü biti 1")
End If
Or işlemi ile bir bitin değeri değiştirilebilir. Örneğin bir sayıdaki diğer
bitlerin bozmadan sadece üçüncü biti tutmamız gerekir ki diğer bitler konum
değiştirmeden istediğimiz bitin değerini değiştirebilelim.
Xor işlemi ile de bir sayı bir nevi şifrelenebilmektedir. Bir sayı, başka bir
sayı ile iki defa XOr işlemine tabi tutulursa sonuçta orjinal sayı elde edilmiş olur.
x=(x xor y) xor y
bu eşitlikten dolayı y şifresi ile x sayısı şifrelenebilmekte ve aynı sayı ile
tekrar şifre çözülebilmektedir.
ŞifreliX = x xor şifre
OrjinalX = ŞifreliX xor Şifre
Bu operatörler aynı zamanda karşılaştırma işlemlerinde de birden fazla şartı
kontrol etmek içinde kullanılır. VB'de kullanılan karşılaştırma operatörleri ise
şunlardır.
| = | Eşit | If x=5 Then Print "5" Else "5 Değil" |
| <> | Eşit Değil | If x=5 Then Print "5 Değil" Else "5" |
| < | Küçük | If x<5 Then Print "5 den küçük" Else "5 den büyük" |
| > | Büyük | If x>5 Then Print "5 den büyük" Else "5 den küçük" |
| <= | Küçük veya Eşit | If x<=5 Then Print "5 den küçük veya eşit" Else "5 den büyük" |
| >= | Büyük veya Eşit | If x>=5 Then Print "5 den büyük veya eşit" Else "5 den küçük" |
bunların haricinde VB'deki Like operatörü ile strigler üzerinde daha detaylı
karşılaştırma işlemleri yapılmaktadır. Like operatöründe tıpkı dosya
isimlerinde olduğu gibi joker karakterler vererek karşılaştırma yapmak mümkündür.
Like operatöründe kullanılabilecek joker karakterler şunlardır.
| ? | Her hangi bir karakter |
| # | Her hangi bir rakam |
| * | Bir veya daha fazla karakter |
| [aralık] | Verilen aralıkta bir karakter |
| [!aralık] | Verilen aralık dışında bir karakter |
If adres Like "*İstanbul" Then
ifadesi ile adres değişkeninin sonunda İstanbul bulunup bulunmadığını
If adres Like "*İstanbul*" Then
ifadesi ile adres değişkninin herhangi bir yerinde İstanbul bulunp bulunmadığını
If adres Like "İstanbul*" Then
ifadesi ile adres değişkeninin başında İstanbul bulunup bulunmadığı kontrol
edilebilir.
If x Like "?abc" Then
ifadesi ile x değişkeninin ilk harfinin bir karakter ancak diğer üç karakterin abc
olup olmadığı
If x Like "#abc" Then
ifadesi ile x değişkeninin ilk harfinin bir rakam ancak diğer üç karakterin abc olup
olmadığı
If x Like "[a-f]abc" Then
ifadesi ile x değişkeninin ilk harfinin a ile f arasında herhangi bir karakter ve
diğer üç karakterin abc olup olmadığı
If x Like "[!a-f]abc" Then
ifadesi ile x değişkeninin ilk harfinin a ile f arasında olmayan herhangi bir karakter
ve diğer üç karakterin abc olup olmadığı kontrol edilir.
Aritmetik işlemler söz konusu olduğunda işlem önceliği sonucu etkileyen önemli bir
etkendir. Örneğin 5+7*2-3/9^3*5 işleminin sonucu kaç olduğuişlemdeki operatörlerin
önceliği ile ilgilidir. Bu tip işlemlerde parantezler kullanmak her zaman önceliği
belirleyici bir faktördür. Ancak parantezlerin bulunmadığı durumlarda aşağıdaki
işlem önceliklerine göre işlem yapılır.
| Aritmetik | Karşılaştırma | Lojik |
| ^ Negatiflik işareti (-) * , / \ Mod + , - & |
= <> < > <= >= Like Is |
Not And Or XOr Eqv Imp |
İşlemde en büyük öncelik aritmetik işlemlerde, sonra karşılaştırma işlemlerinde
ve en son olarak ta lojik işlemlerdedir. Aynı gruptaki işlemlerin önceliği ise
tabloda yukarıdan aşağıya doğru verilmiştir. Yani aritmetik işlemlerde en yüksek
öncelik ^ işlemindedir.
Print 5 + -6
İşleminde öncelik negatiflik işareti olan - işaretinde olduğu için önce 6
sayısının negatifi alınır ve 5 sayısı ile toplanır.
Print 5 + 6 * 4 + 3
İşleminde * operatörünün önceliği + işaretinden büyük olduğu için önce 6 * 4
işlemi yapılacak sonrada sonuçlar toplanacaktır.
Print 5 + 7 * 2 - 3 / 9^3 * 5
İşleminde ise en yüksek önceliğe ^ operatörü sahip olduğu için önce 9 ^ 3=729
işlemi yapılacaktır.
Print 5 +7 * 2 - 3 / 729 * 5
İşleminde / ve * işlemleri aynı önceliğe sahiptir. Bu durumda işlem soldan sağa
doğru yapılır. Yani önce bölme daha sonra çarpma işlemi yapılır.
Print 5 * 7 Or 8 + 2
İşleminde aritmetik işlemlerin önceliği daha büyük olduğu için önce bu işlemler
yapılacak son olarakta Or işlemi uygulanacaktır. Yani ( 5 * 7 ) Or ( 8 + 2) işlemi
yapılır.