**********************
VisualBasicNedir?
**********************
Microsoft firması tarafından geliştirilen Visual Basic, atası olan QBASIC derleyicisinin geliştirilmiş ve Windows ortamına uyarlanmış olan sürümü olarak adlandırılabilir. Windows ortamına uyarlandığı için de Nesneye Yönelimli bir dildir. VBX kontrollerini destekleyen ilk dillerden biridir. VBasic'de, 1.0 sürümünden 6.0 sürümüne kadar bir çok yenilik ve değişiklik olmuştur. Bunlardan biri de, arayüzünün güçlü ve etkili bir görünüm kazanmasıdır. Visual Basic, devamlı geliştiği bu süre sonunda yüksek hızlı uygulamalar, OLE serverlar, ActiveX kontrolleri ve daha bir çok şey geliştirilebilecek hale gelmiştir.
Microsoft Windows için program geliştiren programcıların yüzde yirmibeşi Visual Basic'i tercih etmektedirler. Visual Basic'i en popüler programlama dillerinden biri yapan en önemli nedenlerden biri de büyük olasılıkla kolay olmasıdır. Visual Basic de program yazmak için çok fazla teknik bilgiye sahip olmak gerekmez. Sadece kontrolleri form üzerine yerleştirmek ve kodu yazmak yeterli. Kısaca Visual Basic, programcıyı, programın kullanıcıya yansıyan şekli için kod yazmak zorunda bırakmayan bir dildir.
Zamanla Microsoft dışındaki bazı şirketler tarafından benzer programlama dilleri geliştirildi. Muhtemelen bunların en popüleri Borland Delphi'dir.
İşte VBasic'in 5.0 sürümüne eklenen en önemli değişiklik ve yenilikler:
Derlenme işlemci tipine, hızına ve program büyüklüğüne göre optimize ediliyor.
Tekrar tasarlanmış form derleyici
3 Boyutlu grafik desteği
Visual C++’daki gibi sınıf, form ve kontrol "büyücüleri" (wizard)
Otomatik kod tamamlama
Birden çok veritabanı desteği
Animasyonlu GIF’leri destekleyen kontroller
Resim kontrolü JPEG formatını destekliyor
Birden çok kaynak dosyasını destekliyor.
Fonksiyon adresleme
Visual C++ ‘ın 4.x sürümündeki sürükle ve bırak destekli düzenlemeyi destekliyor.
Windows tabanlı ActiveX kontrollerini yaratmak için yeni derleyici
OCX kontrollerini yaratma imkanı !
Ağ üzerinde OLE
Yeni kullanıcı arabirimi ve ActiveX desteği
Birden çok projeyi kontrol edebilen proje penceresi
16 Bit uygulama yaratılamıyor...
Visual C++ Developer Studio tabanlı yeni arabirim
Visual Basic formlarını otomatik olarak HTML sayfasına çevirebilme imkanı
Internet üzerinde bulunabilen TCP/IP kontrollerini tanıyabiliyor
Kullanıcı arabiriminde projenin hiyerarşisini görüntüleyen bir pencere var
Yığın olarak güncellenen geliştirilmiş RDO (Remote Data Objects)
Yazım hatası yaptığınızda o komutu nasıl kullanacağınıza dair ipuçları veriliyor.
Yeni komutlar (Debug.Assert, AddressOf...) ve veri tipleri (Decimal Variant...)
Derleyici artık bir çok derleme opsiyonu sunuyor.
Çok hızlı ve küçük EXE’ler oluşturuluyor!
Degiskenlere Isim Verme Kurallari
****************************************
Visual Basic’de daha etkin bir programlama yapabilmek için kullanilan veri tiplerini ve veri yapilarini iyi bir sekilde bilmeliyiz. Burada önemli olan nerede hangi veri tipini kullanacak olusumuzdur. Veri tiplerini anlatmadan önce kullanacagimiz degiskenleri nasil isimlendirecegimizi görelim.
Degiskenleri isimlendirirken daha sonra bakdiginizda akilda kalabilecek ve anlamli bir isim veriniz
Asagida verilen kurallar dogrultusunda degiskenler tanimliyabilmemiz mümkün olmaktadir. Tanimlanacak degiskenlerin ilk karakteri mutlaka bir harf ile baslamalidir. Geri kalan karakterler ; harflerden , rakamlardan, alt çizgi karakterinden olusabilir. Degisken isimlerinde noktalama isaretlerini ,matematiksel ve mantiksal ve karsilastirma operatörleri kullanamayiz. Degisken isimleri 255 karaktere kadar uzunlukta olabilir. Asagida degisken tanimlamalari ile ilgili örnekler verilmistir.
Örnek :
Adi , soyadi , yasi , Maas98 , Dogum_Yeri , SANAT_DALI
Yukarida geçerli degisken isimlerine örnek verilmistir
Örnek :
2ADI , ad soyad , Mal+Bildirimi
Burada da geçersiz degisken isimlerine örnekler verilmistir.
2ADI : Çünki ilk karakter bir sayi ile baslamis.
Ad soyad : Degisken isminde bosluk kullanilmis
Mal+Bildirimi : Degisken isminde geçersiz bir karakter kullanilmis.
Zaten bu degiskenleri tanimlarken Visual Basic bizi hata mesaji ile uyaracaktir.
Visual Basic’de Degisken Tanimlama
Degisken tanimlarken Visual Basic’te Dim bildiri deyimini kullanabiliriz. Degiskenin tanimlanmasi hafizada ayrilacak hafiza miktarinin belirli olmasini saglar. Eger degiskenlerin tipini belirtmeden bir kullanim yaparsak bu degiskenlerin Variant tipinde oldugu kabul edilir.Bu da hafizada gereksiz yer kaybina sebep olur.Eger tanimlanan bütün degiskenlerin tiplerinin belli olmasini isterseniz kod penceresinin General,Declarations kismina
Option Explicit yazilir.
Ayrica degisken tanimlarken kullanilabilecek bir baska bildiri deyimide Def- bildiri deyimidir.Bu bildiri deyimi daha genel tanimlamalar yapmak için kullanilir..Def bildiri deyimleri asagida verilmistir.
Def bildiri deyimi projenin general,declarations bölümünde tanimlanmalidir
DefBool : Boolean tipinde degisken tanimlamak için kullaniriz.
DefByte : Byte tipinde degisken tanimlamak için kullaniriz.
DefInt : Integer tipinde degisken tanimlamak için kullaniriz.
DefLng : Long tipinde degisken tanimlamak için kullaniriz.
DefCur : Currency tipinde degisken tanimlamak için kullaniriz.
DefSng : Single tipinde degisken tanimlamak için kullaniriz.
DefDbl : Double tipinde degisken tanimlamak için kullaniriz.
DefDate : Date tipinde degisken tanimlamak için kullaniriz.
DefStr : String tipinde degisken tanimlamak için kullaniriz.
DefVar : Variant tipinde degisken tanimlamak için kullaniriz.
Örnek :
Private Sub Form_Load()
Dim Ad As String
Dim Maas As Currency
Dim D_tarihi As Date
Dim Adres As String
Dim Sira As Integer
End Sub
Burada görmüs oldugunuz gibi 5 adet degisken tanimlanmaktadir.Ad degiskeni string tipinde bir degiskendir.Maas degiskeni Currency tipinde bir degiskendir.D_tarihi degiskeni Date tipinde bir degiskendir.Adres degiskeni string tipinde bir degiskendir.Sira degiskeni integer tipinde bir degiskendir.
Asagidaki satirlari formun general,declarations bölümüne yazalim.
Örnek :
DefInt A-C
DefStr S
DefVar K
DefDate D
DefSng V
Bu örnekte
A , B, C ile baslayan bütün karakterler Integer türünde olmak zorundadir.
D ile baslayan bütün karakterler Date türünde olmak zorundadir.
V ile baslayan bütün karakterler Single türünde olmak zorundadir.
K ile baslayan bütün karakterler Variant türünde olmak zorundadir.
S ile baslayan bütün karakterler String türünde olmak zorundadir.
Def deyimi dim deyiminden farklidir. Def ile sadece bir harf yada harf araligi belirtilebilir.Burada belirtilen harf ile baslayan bütün degiskenler artik o bildiri deyimindeki tipdedir
Örnek :
Private Sub Form_Load()
Dim ad As String , soyad As String
Dim maas As Currency
End Sub
Bu örnektede ad ve soyad isimli iki degisken string türünde ve maas degiskeni ise Currency tipindedir.
Veri Tipleri
************************
Integer :
Visual Basic’te tam sayi degiskenleri tanimlamak için kullanilir. Hafizada 2 byte yer kaplarlar. Alabilecegi deger araligi -32768 ile +32767 arasindadir.DefInt bildiri deyimi ile tanimlanabilirler. Ayrica bir degiskenin sonunda % karakteri bulunuyorsa bu degisken integer tipindedir.
Örnek :
Private Sub Form_Load()
Dim Maas As Integer
DefInt A-C
Oran% = 100
A_sayi = 100
B_sayi = Oran*A_sayi
C_sayi = B_sayi + A_sayi - 1000
Maas= 32767
End Sub
Eger burada tanimlanan degiskenlere daha büyük sayilar atanirsa overflow olusur.
Long :
Daha büyük bir aralikta integer yani tamsayi tanimlamak için kullanabilecegimiz bir veri tipidir. Hafizada 4 byte yer kaplar. Kullanilabilecek uç degerler +2,147,483,647 ile -2,147,483,648 dir. Long tipinde bir degisken tanimlamak için DefLng bildirimini veya degisken sonunda & karakterini kullanabiliriz.
Örnek :
Private Sub Form_Load()
DefLng A-B
Bölüm=50000
cikan&=600000
Kalan& = (cikan / Bölüm ) * 10000
End Sub
Single :
Tam sayi olmayan küsüratli sayilar için kullanabilecegimiz bir veri tipidir. Kayan-noktali sayi olarak isimlendirilir. Single tipindeki veriler bellekte 4 byte yer kaplarlar. Nekatif sayilar için alabilecegi aralik -3.402823E38 ile -1.401298E-45 ,pozitif sayilar için alabilecegi aralik 1.401298E-45 ile 3.402823E38 arasindadir.Single tipinde veri tanimlamak için DefSgn bildirimi veya degisken sonuna ! karakteri konur. 7 haneye kadar hassastir.Daha sonrasi yuvarlatilir.
Örnek :
Private Sub Form_Load()
DefSgn A-B
Bölüm=50000
Cikan!=600000
End Sub
Double :
Visual Basic’te kullanilabilecek en büyük sayisal degerlerin veri tipidir. Hafizada 8 byte yer kaplarlar. 16 haneye kadar hassastirlar. Maximum alabilecegi degerler pozitif sayilar için 4.94065645841247E-324 ile 1.797693134862232E308 , nekatif sayilar için de -1.797693134862232E308 ile -4.94065645841247E-324 arasindadir. DefDbl bildirimi veya # sembölü ile double tipinde degiskenler tanimlanabilir
Örnek :
Private Sub Form_Load()
DefDbl A-K
Dari=50000
Bugday=600000
Arpa=340.56
End Sub
Currency :
Sayisal tipdeki veriler için tanimlanmis özel bir veri tipidir.Hafizada 8 byte yer kaplarlar. 4 hane ondalik kismi olmak üzere toplam 19 haneden olusur.(nokta hariç) Alabilecegi maximum degerler -922,337,203,685,477.5808 ile 922,337,203,685,477.5807 arasindadir. @ sembolü veya DefCur bildirimi ile Currency tipinde degisken’ler tanimlanabilirler.
Örnek :
Private Sub Form_Load()
Dim Maas As Currency , Borc As Currency
Maas = 500000000
Borc = 68000000
Zayi@ = 340000.56
End Sub
Date :
Tarih türündeki bilgileri kullanmak için olusturulmus bir veri tipidir. Hafizada 8 byte yer kaplarlar. 1 Ocak ile 31 Aralik 9999 arasindaki tarihleri kullanabilirsiniz. DefDate bildirisi ile tarih türünde degiskenler tanimlayabiliriz.
Örnek :
Private Sub Form_Load()
Dim Dogum_tarihi As Date , Evlenme_Tarihi As Date
Dogum_tarihi =#Dec,9,1977#
Evlenme_Tarihi=#May,15,1998#
End Sub
Boolean :
Mantiksal veri tipleri için kullanilir. Iki seçenekten birisini alabilir.Bunlar True veya False degerleridir. Bellekte 2 byte yer isgal ederler.Boolean tipindeki bir degiskeni tanimlamak için DefBool sözcügü kullanilir.
Örnek :
Private Sub Form_Load()
Dim Durum As Boolean , Duyum As Boolean
Durum = True
Duyum = False
End Sub
Byte :
O ile 255 arasindaki tamsayilari ifade etmek için kullanilabilecek veri tipidir.DefByte deyimi ile byte tipinde degiskenler tanimlanabilir.
Örnek :
Private Sub Form_Load()
Dim Durum As Byte , Duyum As Byte
Durum =23
Duyum = 143
End Sub
String :
Metin türü bilgileri saklamak için kullanilabilecek veri türüdür. 16 bitlik versiyonda 0 ile 65538 arasinda , 32 bitlik versiyonda ise 0 ile 2,000,000,000 arasinda karakter alabilir. String türünde degisken tanimlamak için Defstr veya $ sembolü kullanilir.
Örnek :
Private Sub Form_Load()
Dim Adi As String , Soyadi As String
Adi ="Kemal"
Soyadi = "Tas"
No$="1323970067"
End Sub
Variant :
Bu tipte tanimlanmis bir degiskene herhangi bir tip’te veri yüklenebilir.Yani ne tür bir veri girecegimizi bilmedigimiz degiskenleri Variant tipinde tanimlamaliyiz. Bu tür degiskenler hafizada 16 byte tan fazla yer kaplarlar. DefVar bildiri sözcügü ile Variant türünde degiskenler tanimliyabiliriz.
Variant türünde degiskenler tanimlamak fazla kullanisli degildir.Çünki hafizada fazla yer kaplarlar.
Örnek :
Private Sub Form_Load()
Dim Ad As Variant , Maas As Variant , Tel As Variant
Dim Dogum_tarihi As Variant
Ad="Aydin Kale"
Maas=200000
Tel="500-45-00"
Dogum_tarihi=#Apr,3,1970#
End Sub
Veri Yapıları
******************************
Const :
Bunlar program içinde degeri degistirilemeyen sabitlerdir. Public ve Private tipinde sabitler tanimlanabiliilir. Public sabitlere tüm modüller içinden ulasilabilir.Private türündeki sabitler ise sadece tanimlandiklari modül içersinde geçerlidirler.Ayrica Visual Basic içinde tanimlanmis çok sayida sabit vardir. Bunlara CONSTANT.TXT dosyasini açarak inceleyebiliriz.
Örnek :
Const sehir="Istanbul"
Const Ulke="Turkey"
Const posta_kodu=34650
Const tek_kod=212
Type - End Type Yapisi :
Type yapisini kullanarak programici farkli veri tiplerini kullanarak kendi veri yapisini olusturabilir. Bu C deki Struct yapisina benzetilebilir. Bu yeni veri tipine record adi verilir. Herhangi bir modülün Declarations kisminda asagidaki gibi bir tanimlama yapabiliriz.
Örnek :
Type Ogrenci
Ad As String *10
Soyad As String *12
Not As Byte
Kredi As Integer
End Type
'Ogrenci veri tipi toplam hafizada 25 byte yer kaplamaktadir. Bu veri tipini kullanmak için 'Ogrenci tipinde degiskenler tanimlamak gerekmektedir.
Private Sub Form_Load()
Dim A As Ogrenci
Dim B As Ogrenci
'Bu degiskenlere bilgi atamak asagidaki sekildeki gibidir.
A.Ad="Ali"
A.Soyad ="Armer"
End Sub
String türü degiskenlere sabit bir uzunlukta yer ayirmak istersek asagidaki sekilde bir tanimlama yapmaliyiz.
Dim Name As String *12
Dim Address As String *50
Diziler
*************************
Ayni tür bilgileri bellekte tutmak için kullanabilecegimiz listelere dizi adi verilir. Dizi kullamanin avantaji ayni tür bilgiler bir listede tutularak daha hizli islem yapilabilmesi saglanmis olacaktir.Visual Basic'de dizi su sekildedir
Dizi_adi(Indis)
olacaktir.
Örnek:
Private Sub Form_Load()
Dim ad(2) As String
Dim no(2) As Integer
ad(0) = "ali"
ad(1) = "ahmet"
ad(2) = "ebru"
no(0) = 133
no(1) = 56
no(2) = 67
End Sub
Bu örnek'te ad ve no olmak üzere iki adet dizi tanimlanmaktadir. ad dizisi string türünde bilgileri tutacak ve no dizisi ise integer türündeki bilgileri saklayacaktir. Görmüs olgunuz gibi dizilere bilgi atama sekli
dizi_adi(indis_sirasi)=atanacak_bilgi
seklindedir.
Eger diziyi sifirdan degilde bir den itibaren baslatmak istersek diziyi tanimlamadan önce Option Base 1 satirini eklemeliyiz.
Burada dizi indisleri sifirdan baslayarak tanimlama yaparken bizim belirtigimiz degere kadardir. Yani bizim bu dizilere atayabilecegim veri sayisi diziyi tanimlarken belirtdigimiz indis degerinden bir fazla olacaktir.
Eger deger atama yaparken belirttigimiz sinirlarin disina çikarsak hata olusur. Dizilere deger atarken dizi sinirlarini kontrol etmekle olasi bir hatayi önlemis oluruz.
Statik Diziler
*************************
Bu tip dizilerde kullanilacak yer sayisi sabittir. Bu tip diziler sadece tanimlandiklari modül içersinde kullanilabilirler. Statik dizi su sekilde tanimlanabilir
Dim dizi_adi(sayi) As Veri_Tipi
Tüm proje içinde kullanilacak bir dizi tanimlanmak isterse standart modülün General,Declarations bölümünde yukaridaki sekildeki gibi tanimlanmalidir
Örnek :
Option Base 1
Dim a(5) As Integer
Private Sub Command1_Click()
Text1.Text = a(1) + a(2)
End Sub
Private Sub Form_Load()
a(1) = 10
a(2) = 20
End Sub
Bu örnekte görüldügü gibi projenin general,declarations kisminda a() dizisi tanimlaniyor.Bu dzi tanimlanmadan önce dizi indislerinin 1 den itibaren basliyacagini belirten Option Base1 satiri koda dahil edilmistir. Form1 yüklendiginde bu dizinin ilk elemaninna 10 sayisi ikinci elemanina 20 sayisi ataniyor. Eger kullanici Command1 isimli butona tiklarsa dizinin ilk ce ikinci elemanlari toplanarak Form üzerinde Text1 adli nesnenin Text özelligine ataniyor. Yani TextBox'in bu sayilarin toplamini göstermesi saglaniyor.
Dinamik Diziler
***************************
Bu tip dizilerde kullanilacak yer sayisinda bir sinirlama yoktur. Bu tip diziler ilk basta sagidaki sekildeki gibi bir tanimlamaya ihtiyaç duyarlar.
Dim dizi_adi( ) As Veri_Tipi
Daha sonra bu dizi kullanilacak iken botunu belirtmek gerekir bunun içinde asagidaki gibi bir tanimlama yapilmalidir.
ReDim dizi_adi(boyut ) As Veri_Tipi
Artik bu veri dizisini projemiz içinde kullanabiliriz.
Örnek :
Option Base 1
Private Sub Form_Load()
Dim s() As String
End Sub
Private Sub Command1_Click()
ReDim s(10) As String
s(1) = "Selam "
s(2) = "Ayse"
Text1.Text = s(1) + s(2)
End Sub
Bu dizi tanimlanmadan önce dizi indislerinin 1 den itibaren basliyacagini belirten Option Base1 satiri koda dahil edilmistir. Form1 yüklendiginde s adli bir dinamik dizi tanimlanmaktadir. Kullanici Command1 isimli butuna tikladiginda s dizisinin boyutu belirtilerek yeniden tanimlanmistir. Bu dizinin ilk elemaninna "Selam " degeri ikinci elemanina "Ayse" degeri ataniyor. Dizinin ilk ve ikinci elemanlari toplanarak Form üzerinde Text1 adli nesnenin Text özelligine ataniyor. Yani TextBox'in bu degerlerin toplamini göstermesi saglaniyor.
Örnek :
Option Base 1
Private Sub Form_Load()
Dim s() As String
End Sub
Private Sub Command1_Click()
ReDim s(10) As String
s(1) = "selam"
s(2) = "fatih"
Text1.Text = s(1) + s(2)
End Sub
Private Sub Command2_Click()
ReDim s(5) As String
s(2) = "fatih"
Text1.Text = s(1) + s(2)
End Sub
Bu örnekte yukaridaki örnekten tek farkli yan olarak bir Command butonun arkasina yazilmis kod bulunuyor. Eger kullanici Command1 adli butondan sonra bu butona tiklarsa ne olacak ona bakalim. Command2 butonuna tiklanildiginda s() dizisi tekrardan boyutu 5 olrak tanimlaniyor. s() dizisine daha önce atamis bütün degerler siliniyor. Yani s() dizisi bir nevi bosaltiliyor ve yeniden boyutlandiriliyor. Eger s() dizisine daha önce atanmis degerler korunmak istenirse asagidaki sekildeki gibi bir tanimlama yapilmak zorundadir.
ReDim Preserve s(boyut) As Veri_tipi
Tip Dösümleri
*********************************
Visual Basic'de kullandigimiz sayisal degiskenleri diger veri tiplerine dönüstürebiliriz. Bu islemi yapan fonksiyonlara tip dönüsüm fonksiyonlari adi verilir. Tip dönüsüm fonksiyonlari asagida verilmistir.
Fonksiyon Geri Dönen Deger Yaptigi Islem
CBool(ifade) Boolean Matemetiksel ifadeyi Boolean türüne dönüstürür.
CByte(ifade) Byte Matemetiksel ifadeyi Byte türüne dönüstürür.
CCur(ifade) Currency Matemetiksel ifade Currency türüne dönüstürür.
CDate(ifade) Date Matemetiksel ifade Date türüne dönüstürür.
CDbl(ifade) Double Matemetiksel ifade Double türüne dönüstürür.
CDec(ifade) Decimal Matemetiksel ifadeDecimal sayiya dönüstürür.
CInt(ifade) Integer Matemetiksel ifade tam sayiya dönüstürür.
CLng(ifade) Long Matemetiksel ifade Long türüne dönüstürür.
CSng(ifade) Single Matemetiksel ifade Single türüne dönüstürür.
CVar(ifade) Variant Matemetiksel ifade Variant türüne dönüstürür.
CStr(ifade) String Matemetiksel ifade String türüne dönüstürür.
Asagida çesitli örneklerle tip dönüsümleri açiklanmaya çalisilmistir.
Örnek1:
A=10 , B=5 , C=10 , D=0
check = CBool(A < B) 'check=False
check = CBool(A > B) 'check=True
check = CBool(A = C) 'check=True
check = CBool(D) 'check=False
check = CBool(B) 'check=True
Örnek2 :
A=10 , B=5 , C=0
check = CBytel(A < B) 'check=0
check = CByte(A > B) 'check=1
check = CByte(A = C) 'check=0
Örnek3 :
A=1 , B=2 , C=36000 , D=36001
check = CDate(A) 'check=12/31/1899
check = CDate(B) 'check=1/1/1900
check = CDate(C) 'check=7/24/98
check = CDate(D) 'check=7/26/98
Örnek4 :
A=2.4 , B=2.5 , C=2.6 , D=3.5
check = CInt(AB) 'check=2
check = CInt(B) 'check=2
check = CInt(C) 'check=3
check = CInt(D) 'check=4
Aritmetiksel Operatorler
***********************************
+ , - , * , / , \ , ^ ,Mod , &
Genel olarak matematiksel islemlerde kullanilan operatörlerdir. Bunlara kaynastirma "&" operatörünü de ilave edebiliriz. Simdi bu operatörleri açiklayalim.
+ Operatörü :
Bu operatör ile verilen iki veya daha fazla ifade toplanabilir.Genel yazilisi asagidaki sekilde gibidir.
Sonuc = Ifade1 + Ifade2
Burda Sonuc mutlaka sayisal bir degerdir.(Eger kaynastirma yapilmamis ise)
Ifade1 çesitli islemlerden olusmus bir ifade veya bir sayidir.
Ifade2 çesitli islemlerden olusmus bir ifade veya bir sayidir.
Eger Ifade1 ve Ifade2 string türünde veriler ise + operatörü kaynastirma yapar. Yani Ifade2 yi Ifade1’in sonuna ekler.Asagida Çesitli örnekler verilmistir.
Örnek :
Sonuc=13+45 'Sonuc=58
Sonuc=1378+56.78+435.908 'Sonuc=1870.688
A=89,B=3456
Deger=A+B ' Deger=3545
Ad="Ebru"
Soyad=" Kayaci"
Dim Name As String
Name=Ad+Soyad 'Name="Ebru Kayaci"
Operatörler :
***********************
Matematik’de kullanilan çikartma opratörüdür. Birinci ifadede verilen degerden ikinci ifadeyi çikarir.
Genel yazilisi asagidaki sekildeki gibidir.
Sonuc=Ifade1 - Ifade2
Burda Sonuc mutlaka sayisal bir degerdir.
Ifade1 çesitli islemlerden olusmus bir ifade veya bir sayidir.
Ifade2 çesitli islemlerden olusmus bir ifade veya bir sayidir.
Asagida çesitli örneklerle - (çikarma )operatörü açiklanmaya çalisilmistir
Örnek :
Sonuc=3475.45-3445.90 'Sonuc = 29.55
Deger=45-788-23 'Deger = - 766
Son=190,Ara=47
Son1=Son-Ara ' Son = 143
* Operatörü :
Matematikdeki çarpma operatörüdür. Verilen iki sayiyi çarpar. Genel yazim sekli asagidaki sekilideki gibidir
Sonuc=Sayi1 * Sayi2
Burda Sonuc mutlaka sayisal bir degerdir.
Sayi1 çesitli islemlerden olusmus bir ifade veya bir sayidir.
Sayi2 çesitli islemlerden olusmus bir ifade veya bir sayidir.
Asagida çesitli örneklerle çarpma operatörü açiklanmistir.
Örnek :
Sonuc=34 * 9 'Sonuc = 306
Deger = 87 * 12 'Deger = 1044
A=5,B= 56
C=A * B 'C = 280
/ Operatörü :
Matematikdeki bölme operatörüdür. Verilen ilk sayiyi ikinci sayiya böler. Genel yazim sekli asagidaki sekilideki gibidir.
Sonuc=Ifade11 /Ifade2
Burda Sonuc mutlaka sayisal bir degerdir.
Ifade1 çesitli islemlerden olusmus bir ifade veya bir sayidir.
Ifade2 çesitli islemlerden olusmus bir ifade veya bir sayidir.Ifade2 sifirdan farkli bir deger olmalidir. Yoksa sifira bölme hatasi olusur.
Asagida çesitli örneklerle bölme operatörü açiklanmistir.
Örnek :
Sonuc=34 / 9 'Sonuc = 3.777778
Deger = 60 / 12 'Deger = 5
A=5,B= 56
C=B / A 'C = 11.2
Operatörler :
\ Operatörü :
Matematikdeki bölme operatörüdür. Verilen ilk sayiyi ikinci sayiya böler. Ancak sonuc mutlaka bir tam sayi degeridir. Bölüm küsüratli ise sayinin kusuratini atar.Genel yazim sekli asagidaki sekildeki gibidir.
Sonuc=Ifade1 \ Ifade2
Burda Sonuc mutlaka sayisal bir degerdir.
Ifade1 çesitli islemlerden olusmus bir ifade veya bir sayidir.
Ifade2 çesitli islemlerden olusmus bir ifade veya bir sayidir.Ifade2 sifirdan farkli bir deger olmalidir. Yoksa sifira bölme hatasi olusur.
Asagida çesitli örneklerle tam bölme operatörü açiklanmistir
Örnek :
Sonuc=34 \ 9 'Sonuc = 3
Deger = 60 \ 12 'Deger = 5
A=5,B= 56
C=B \ A 'C = 11
^ Operatörü :
Matematikdeki üs operatörüdür. Verilen ilk sayinin ikinci sayi kadar kuvvetini (üssünü) alir. Genel yazim sekli asagidaki sekilideki gibidir.
Sonuc=Ifade1 ^ Ifade2
Burda Sonuc mutlaka sayisal bir degerdir.
Ifade1 çesitli islemlerden olusmus bir ifade veya bir sayidir.
Ifade2 çesitli islemlerden olusmus bir ifade veya bir sayidir.
Asagida çesitli örneklerle bölme operatörü açiklanmistir.
Örnek :
Sonuc=34 ^ 9 'Sonuc = 6.071699276646e+13
Deger = 60 ^ 2 'Deger = 3600
A=5,B= 5
C=B ^ A 'C = 3125
Mod Operatörü :
Matematikdeki mod alma operatörüdür. Verilen ilk sayinin modunu ikinci sayi göre alir. Genel yazim sekli asagidaki sekilideki gibidir.
Sonuc=Ifade1 Mod Ifade2
Burda Sonuc mutlaka sayisal bir degerdir.
Ifade1 çesitli islemlerden olusmus bir ifade veya bir sayidir.
Ifade2 çesitli islemlerden olusmus bir ifade veya bir sayidir.
Asagida çesitli örneklerle Mod operatörü açiklanmistir.
Örnek :
Sonuc=34 Mod 9 'Sonuc = 7
Deger = 60 Mod 2 'Deger = 0
A=5.4,B= 57
C=B Mod A 'C = 2
D= 57 Mod 5.5 'D = 3
E=90.5 Mod 6 'E = 0
E=90.2 Mod 6 'E = 0
E=90.7 Mod 6 'E = 1
& Operatörü :
Bu operatör kaynastirma operatörüdür. String türü ifadelerle matematiksel ifadeleri kaynastirmada kullanilabilir. Genel yazim sekli asagidaki sekilideki gibidir.
Sonuc=Ifade1 & Ifade2 Burda Sonuc string veya variant türünde bir degerdir.
Ifade1 çesitli islemlerden olusmus bir ifade veya bir sayi veya bir metindir.
Ifade2 çesitli islemlerden olusmus bir ifade veya bir sayi veya bir metindir.
Asagida çesitli örneklerle kaynastirma operatörü açiklanmistir.
Örnek :
Sonuc=34 & 9 'Sonuc = 349
Deger = 60 & 2 'Deger = 602
A=5.4,B= 57
C=B&A 'C = 575.4
D= 57 & 5.5 'D = 575.5
E=90.5 & 6 'E = 90.56
E=9.2 &6 'E = 9.26
E=90.7 & 6.6 'Hata olusur
E="Hakan"&" Ayse" 'E = "Hakan Ayse"
Karsilastirma Operatörleri :
Bu operatörler ile verilen ifadeler arasinda karsilastirmalar yapilir. Genel karsilastirma operatörleri asagida verilmistir.
= operatörü :
Bu operatör verilen iki ifadenin esit olup olmadigini anlamak için kullanilir.Genel yazim sekli asagidaki sekildeki gibidir.
Sonuc=(Ifade11 = Ifade2)
Burda Sonuc Booean tipinde bir degerdir.
Ifade1 bir sayi veya bir metindir.
Ifade2 bir sayi veya bir metindir.
Asagida çesitli örneklerle kaynastirma operatörü açiklanmistir
Örnek :
Sonuc=(100=345) 'Sonuc=False
Sonuc=(100=100) 'Sonuc=True
A=12,B=45
Sonuc=(A=B) 'Sonuc=False
C=23,D=23
Sonuc=(A=D) 'Sonuc=True
<> operatörü :
Bu operatör verilen iki ifadenin farkli olup olmadigini anlamak için kullanilir.Genel yazim sekli asagidaki sekildeki gibidir.
Sonuc=(Ifade11 <>Ifade2)
Burada Sonuc Booean tipinde bir degerdir.
Ifade1 bir sayi veya bir metindir.
Ifade2 bir sayi veya bir metindir.
Asagida çesitli örneklerle kaynastirma operatörü açiklanmistir.
Örnek :
Sonuc=(100<>345) 'Sonuc=True
Sonuc=(100<>100) 'Sonuc=False
A=12,B=45
Sonuc=(A<>B) 'Sonuc=True
C=23,D=23
Sonuc=(A<>D) 'Sonuc=False
< operatörü :
Bu operatör verilen birinci ifadenin ikinci ifadeden küçük olup olmadigini anlamak için kullanilir.Genel yazim sekli asagidaki sekildeki gibidir.
Sonuc=(Ifade11 < Ifade2)
Burda Sonuc Booean tipinde bir degerdir.
Ifade1 bir sayi veya bir metindir.
Ifade2 bir sayi veya bir metindir.
Asagida çesitli örneklerle kaynastirma operatörü açiklanmistir.
Örnek :
Sonuc=(100<345) 'Sonuc=True
Sonuc=(100<100) 'Sonuc=False
Sonuc=(100<130) 'Sonuc=False
A=12,B=45
Sonuc=(A<B) 'Sonuc=True
C=23,D=23
Sonuc=(A<D) 'Sonuc=False
> operatörü :
Bu operatör verilen birinci ifadenin ikinci ifadeden büyük olup olmadigini anlamak için kullanilir.Genel yazim sekli asagidaki sekildeki gibidir.
Sonuc=(Ifade11 > Ifade2)
Burda Sonuc Booean tipinde bir degerdir.
Ifade1 bir sayi veya bir metindir.
Ifade2 bir sayi veya bir metindir.
Asagida çesitli örneklerle kaynastirma operatörü açiklanmistir.
Örnek :
Sonuc=(800>345) 'Sonuc=True
Sonuc=(100>100) 'Sonuc=False
Sonuc=(100>130) 'Sonuc=False
A=90,B=45
Sonuc=(A>B) 'Sonuc=True
C=23,D=23
Sonuc=(A>D) 'Sonuc=False
=> operatörü :
Bu operatör verilen birinci ifadenin ikinci ifadeden büyük veya esit olup olmadigini anlamak için kullanilir.Genel yazim sekli asagidaki sekildeki gibidir
Sonuac=(Ifade11 => Ifade2)
Burda Sonuc Booean tipinde bir degerdir.
Ifade1 bir sayi veya bir metindir.
Ifade2 bir sayi veya bir metindir.
Asagida çesitli örneklerle kaynastirma operatörü açiklanmistir.
Örnek :
Sonuc=(800=>345) 'Sonuc=True
Sonuc=(100=>100) 'Sonuc=True
Sonuc=(100=>130) 'Sonuc=False
A=90,B=45
Sonuc=(A=>B) 'Sonuc=True
C=23,D=23
Sonuc=(A=>D) 'Sonuc=True
<= operatörü :
Bu operatör verilen birinci ifadenin ikinci ifadeden büyük olup olmadigini anlamak için kullanilir.Genel yazim sekli asagidaki sekildeki gibidir.
Sonuc=(Ifade11 <= Ifade2)
Burda Sonuc Booean tipinde bir degerdir.
Ifade1 bir sayi veya bir metindir.
Ifade2 bir sayi veya bir metindir.
Asagida çesitli örneklerle kaynastirma operatörü açiklanmistir.
Örnek :
Sonuc=(800<=345) 'Sonuc=False
Sonuc=(100<=100) 'Sonuc=True
Sonuc=(100<=130) 'Sonuc=True
A=90,B=45
Sonuc=(A<=B) 'Sonuc=False
C=23,D=23
Sonuc=(A<=D) 'Sonuc=True
And Operatörü :
Lojik iki ifadenin karsilastirilmasi için kullanilir. Iki ifadenin'de dogru olmasi gereklidir. Genel yazim sekli asagidaki gibidir ;
Sonuc=Kosul1 And Kosul2
Burada Sonuc herhangi bir sayisal tipde degiskendir.
Kosul1 herhangi bir ifadedir.
Kosul2 herhangi bir ifadedir.
And operatörünün dogruluk tablosu asagidaki sekildeki gibidir.
Ifade1 Ifade2 Sonuc=Ifade1 And Ifade2
False False False
False True False
True False False
True True True
True Null Null
Null True Null
False Null False
Null False False
Null Null Null
And operatörü ayni zamanda bitwise comparison islemide yapilabilir.
Ifade1 Ifade2 Ifade1 And Ifade2
0 0 0
0 1 0
1 0 0
1 1 1
Örnek :
Sonuc = (False And False ) 'Sonuc=False
Sonuc = (Null And False ) 'Sonuc=False
A=True , B=True
Sonuc = (A And B ) ' Sonuc=True
A=1 ,B=0
Sonuc = (A And B ) ' Sonuc=0
A=1 ,B=1
Sonuc = (A And B ) ' Sonuc=1
A=1,B=4
Sonuc = (A And B ) ' Sonuc=0
A=1,B=3
Sonuc = (A And B ) ' Sonuc=1
A=1,B=5
Sonuc = (A And B ) ' Sonuc=1
A=1,B=8
Sonuc = (A And B ) ' Sonuc=0
Or Operatörü :
Lojik iki ifadenin karsilastirilmasi için kullanilir. Iki ifadeden yalnizca birinin dogru olmasi yeterlidir. Genel yazim sekli asagidaki gibidir :
Sonuc=Kosul1 Or Kosul2
Burada Sonuc hehangi bir sayisal tipde degiskendir.
Kosul1 herhangi bir ifadedir.
Kosul2 herhangi bir ifadedir.
Or operatörünün dogruluk tablosu asagidaki sekildeki gibidir ;
Ifade1 Ifade2 Sonuç=Ifade Or Ifade2
False False False
False True True
True False True
True True True
True Null True
Null True True
False Null Null
Null False Null
Null Null Null
Or operatörü ayni zamanda bitwise comparison islemide yapilabilir.
Ifade1 Ifade2 Sonuç=Ifade Or Ifade2
0 0 0
0 1 1
1 0 1
1 1 1
Örnek :
Sonuc = (False Or False ) ' Sonuc=False
Sonuc = (Null Or False ) 'Sonuc=Null
A=True , B=True
Sonuc = (A Or B ) 'Sonuc=True
A=1 ,B=0
Sonuc = (A Or B ) 'Sonuc=1
A=1 ,B=1
Sonuc = (A Or B ) 'Sonuc=1
A=1,B=4
Sonuc = (A Or B ) 'Sonuc=5
A=1,B=3
Sonuc = (A Or B ) 'Sonuc=3
A=1,B=5
Sonuc = (A Or B ) 'Sonuc=5
A=1,B=8
Sonuc = (A Or B ) 'Sonuc=9
A=10,B=8
Sonuc = (A Or B ) 'Sonuc=10
Xor Operatörü :
Lojik iki ifadenin karsilastirilmasi için kullanilir. Iki ifadeden yalnizca birinin dogru olmasi gereklidir. Eger ikiside dogru olursa sonuc yanlis olur. Genel yazim sekli asagidaki gibidir :
Sonuc=Kosul1 Xor Kosul2
Burada Sonuc hehangi bir sayisal tipde degiskendir.
Kosul1 herhengi bir ifadedir.
Kosul2 herhengi bir ifadedir.
Xor operatörünün dogruluk tablosu asagidaki sekildeki gibidir;
Ifade1 Ifade2 Sonuç=Ifade Xor Ifade2
False False False
False True True
True False True
True True False
Xor operatörü ayni zamanda bitwise comparison islemide yapilabilir.
Ifade1 Ifade2 Sonuç=Ifade Xor Ifade2
0 0 0
0 1 1
1 0 1
1 1 0
Örnek :
Sonuc = (False Xor False ) ' Sonuc=False
Sonuc = (True Xor False ) 'Sonuc=True
A=True , B=True
Sonuc = (A Xor B ) 'Sonuc=False
A=1 ,B=0
Sonuc = (A Xor B ) 'Sonuc=1
A=1 ,B=1
Sonuc = (A Xor B ) 'Sonuc=0
A=1,B=4
Sonuc = (A Xor B ) 'Sonuc=5
A=1,B=3
Sonuc = (A Xor B ) 'Sonuc=2
A=1,B=5
Sonuc = (A Xor B ) 'Sonuc=4
A=1,B=8
Sonuc = (A Xor B ) 'Sonuc=9
A=10,B=8
Sonuc = (A Xor B ) 'Sonuc=2
Eqv Operatörü :
Lojik iki ifadenin karsilastirilmasi için kullanilir. Iki ifadenin ikisininde dogru veya ikisininde yanlis olmasi durumunda dogru sonuc alir. Genel yazim sekli asagidaki gibidir
Sonuc=Kosul1 Eqv Kosul2
Burada Sonuc herhangi bir sayisal tipde degiskendir.
Kosul1 herhangi bir ifadedir.
Kosul2 herhangi bir ifadedir.
Eqv operatörünün dogruluk tablosu asagidaki sekildeki gibidir;
Ifade1 Ifade2 Sonuç=Ifade Eqv Ifade2
False False True
False True False
True False False
True True True
Eqv operatörü ayni zamanda bitwise comparison islemide yapilabilir.
Ifade1 Ifade2 Sonuç=Ifade Eqv Ifade2
0 0 1
0 1 0
1 0 0
1 1 1
Örnek :
Sonuc = (False Eqv False ) ' Sonuc=True
Sonuc = (True Eqv False ) 'Sonuc=False
A=True , B=True
Sonuc = (A Eqv B ) 'Sonuc=True
A=1 ,B=0
Sonuc = (A Eqv B ) 'Sonuc=0
A=1 ,B=1
Sonuc = (A Eqv B ) 'Sonuc=1
A=1,B=4
Sonuc = (A Eqv B ) 'Sonuc=-6
A=1,B=3
Sonuc = (A Eqv B ) 'Sonuc=-3
A=1,B=5
Sonuc = (A Eqv B ) 'Sonuc=-5
A=1,B=8
Sonuc = (A Eqv B ) 'Sonuc=-10
A=10,B=8
Sonuc = (A Eqv B ) 'Sonuc=-3
Imp Operatörü :
Lojik iki ifadenin karsilastirilmasi için kullanilir. Birincinin degili veya ikincidir. Genel yazim sekli asagidaki gibidir :
Sonuc=Kosul1 Imp Kosul2
Burada Sonuc hehangi bir sayisal tipde degiskendir.
Kosul1 herhangi bir ifadedir.
Kosul2 herhangi bir ifadedir.
Imp operatörünün dogruluk tablosu asagidaki sekildeki gibidir.
Ifade1 Ifade2 Sonuç=Ifade Imp Ifade2
False False True
False True True
True False False
True True True
True Null True
Null True True
False Null True
Null False Null
Null Null Null
Imp operatörü ayni zamanda bitwise comparison islemide yapilabilir.
Ifade1 Ifade2 Sonuç=Ifade Imp Ifade2
0 0 1
0 1 1
1 0 0
1 1 0
Örnek :
Sonuc = (False Imp False ) 'Sonuc=True
Sonuc = (Null Imp False ) 'Sonuc=True
A=True , B=True
Sonuc = (A Imp B ) 'Sonuc=True
A=1 ,B=0
Sonuc = (A Imp B ) 'Sonuc=0
A=1 ,B=1
Sonuc = (A Imp B ) 'Sonuc=1
A=1,B=4
Sonuc = (A Imp B ) 'Sonuc=-2
A=1,B=3
Sonuc = (A Imp B ) 'Sonuc=-1
A=1,B=5
Sonuc = (A Imp B ) 'Sonuc=-1
A=1,B=8
Sonuc = (A Imp B ) 'Sonuc=-2
A=10,B=8
Sonuc = (A Imp B ) 'Sonuc=-3
Not Operatörü :
Lojik bir ifadenin degilinin alinmasi için kullanilir. Genel yazim sekli asagidaki gibidir :
Sonuc=Not Kosul
Burada Sonuc herhangi bir sayisal tipde degiskendir.
Kosul herhangi bir ifadedir.
Not operatörünün dogruluk tablosu asagidaki sekildeki gibidir ;
Ifade Not Ifade
True False
False True
Not operatörü ayni zamanda bitwise comparison islemide yapilabilir.
Ifade Not Ifade
0 1
1 0
Örnek :
Sonuc=(Not True) 'Sonuc=False
Sonuc=(Not 1) 'Sonuc=False
A=4
Sonuc=(Not A) 'Sonuc=-5
A=45
Sonuc=(Not A) 'Sonuc=-46
Sonuc=(Not 10) 'Sonuc=-11
Visual Basic'de Kontrol Komutları
**********************************
Kontrol komutlari programcilar tarafindan sikca kullanilan belirli ifadeleri kontrol etmek veya bazi sartlarin gerçeklesip gerçeklesmedigini kontrol etmek amaciyla kullanilan komutlardir. Biz burada en çok kullanilan komutlarin üzerinde duracagiz.
If Kontrol Yapisi :
Genel olarak bu komut yapisi su sekilde yazilir.
If Kosul Then
Kosul dogru ise yapilmasi istenen islemler.
Endif
Kullandigimiz her If kontrolu için mutlaka bir Endif kullanmaliyiz. Bu kontrol yapisinin sonlandigini belirtir.
Örnek:
If ad="FATIH" Then
Maas=10000000
Endif
Eger kosul gerçeklesmemis ise yapilmasi istenen bazi islemler varsa o zaman su sekilde bir kontrol yapisini kullanabiliriz.
If Kosul Then
Kosul dogru ise yapilmasi istenen islemler.
Else
Kosul yanlis ise yapilmasi istenen islemler.
Endif
Ayni anda bir kaç kosul için karsilastirma yapilmak isternirse;
If Kosul Then
Kosul dogru ise yapilmasi istenen islemler.
Elseif Kosul1 Then
Kosul1 dogru ise yapilmasi istenen islemler.
Elseif Kosul2 Then
Kosul2 dogru ise yapilmasi istenen islemler.
Else
Bütün kosullar yanlis ise yapilmasi istenen islemler.
Endif
yapisi kullanilir. Bu yapida mutlaka Else blogunun bulunmasina gerek yoktur. Burada eger Kosul dogru ise ilk Then’den sonraki satirlar çalistirilarak Elseif ifadesine kadar icra edilirler. Daha sonra Endif ifadesinden sonraki satir icra edilir.Eger Kosul yanlis ise Kosul1 ifadesi kontrol edilir.Dogru ise buradaki then den sonraki satirlar çalistirilir. Yanlis ise Kosul2’ye bakilir. Eger bu kosulda yanlis ise Else ifadesinden sonraki satirlar çalistirilir.
Örnek :
If Isim="Ali" Then
Maas=Maas * 1.2
Elseif Isim="Murat" Then
Maas=Maas * 1.4
Elseif Isim="Kemal" Then
Maas=Maas * 1.1
Endif
Örnek :
If Bolen=0 Then
Msg.Text=" Bolen sayi sifir olamaz."
Else
Sonuc= Sayi / Bolen
Msg.Text = Sonuc
Endif
Ornek :
If name="Ali" AND no="1301920035"
Not=4
ElseIf name="Ahmet" AND no="1301940023" Then
Not=3
ElseIf name="Hakan" AND no="1301930045" Then
Not=2
ElseIf name="Hatice" AND no="1301940005" Then
Not=7
Endif
Select Case:
Bu kontrol yapisinda sadece bir degiskenin durum kontrolü yailir.Kontrolü yapilacak degiskenin genel olarak alabilecegi degerler belirli ise bu yapinin kukllanilmasi If yapisina göre daha avantajlidir. Yazilis biçimi genel olarak asagidaki sekildeki gibidir
Select Case Degisken
Case Deger1
Degisken=Deger1 oldugu durumda yapilmasi istenen islemler
Case Deger2
Degisken=Deger2 oldugu durumda yapilmasi istenen islemler
Case Else
Degisken yukaridaki degerler den hicbirine esit degil ise yapilacak islemler
End Select
Kullandigimiz her Select ifadesi için bir End Select kullanmaliyiz.
Örnek :
Select Case No
Case 1304
Name="Murat Tuna"
Case 1306
Name="Ayse Sinem"
Case 1307
Name="Hakan Kaya"
Case 1312
Name="Abdullah Kahyali"
Case 1324
Name="Hatice Uygun"
End Select
Örnek :
Select Case Ay
Case 1
Max_date=31
Case 2
Dim Artik as Integer
Artik = Yil Mod 4
If Artik=0 Then
Max_date=29
Else
Max_date=28
Endif
Case 3
Max_date=31
Case 12
Max_date=31
Case Else
Mesaj="Error : Bir yilda 12 ay vardir."
End Select
Visual Basic'te Döngü Komutlari
*********************************
Bu komutlar belirli islemleri belirli sayida veya herhangi bir sart saglanana kadar tekrarlamak amaci ile kullanilirlar. Bu komutlar asagida verilmistir.
For ….. Next Döngüsü
Do While …. Loop Döngüsü
Do Until ……Loop Döngüsü
Do …… Loop While Döngüsü
Do …… Loop Until Döngüsü
Asagidada bu döngülerin nasil kullanildiklari açiklanmis ve örneklerle pekistirilmistir.
For Next Döngüsü :
Bütün dillerde bulunan döngü yapisidir. Genel yazim sekli asagidaki sekildeki gibidir.
For sayac=baslangiç To bitis Step artim
Arada isletilecek komutlar
Next sayac
Bu döngü sayac baslangic degerinden bitis degerine kadar çalistirilir. Sayaç baslangic degerinde iken döngü içindeki komutlar isletilir. Next ifadesine gelindiginde tekrar For satirina gelinir. Sayac degeri artim kadar artirilir. Eger Sayac degeri Bitis degerini geçmis ise Next adimindan sonraki adim isletilir. Burada step degerine pozitif veya nekatif bir deger versilebilir. Eger nekatif deger verilirse sayac her seferinde 1 azaltilir.Step adimini vermezsek bu pozitif 1 (+1) anlamindadir ve her adimda sayac bir artirilacaktir.Biz içiçe For Next döngüleride kurabiliriz. Ancak burada suda dikkat edilmelidir. En son baslatilan For döngüsü ilk önce bitirilmelidir.
For sayac1=basla1 To son1
Komutlar
For sayac2=basla2 To son2
Komutlar
Next sayac2
Next sayac1
Biz buradaki sayiyi daha da artirabiliriz.
Asagidaki sekideki gibi bir kullanim hatalidir
For sayac1=basla1 To son1
Komutlar
For sayac2=basla2 To son2
Komutlar
Next sayac1
Next sayac2 Burada For döngüsü isletilirken hata olusacaktir
Örnek :
Factöriyel=1
For I=1 To Sayi
Factöriyel= Factöriyel * I
Next I
Bu örnekte girmis oldugunuz pozitif sayinin faktoriyeli hesaplanmaktadir.
Do While Döngüsü :
Bu dögünün genel yazim sekli asagidaki sekildeki gibidir.
Do While Kosul
Komutlar
Loop
Burada önce Kosula bakilir. Eger kosul dogru ise aradaki satirlar çalistirilir taki Loop satirina kadar. Loop satirinda tekrar While satirina dönülür. Kosul tekrar kontrol edilir. Eger dogru ise ara satirlar tekrar çalistirilir. Kosul yanlis ise Loop ‘tan sonraki ilk satirdan program çalismaya devam eder. Içiçe Do While döngüleride kurabiliriz.
Do While Kosul1
….
Do While Kosul2
…
Komutlar
Loop
…..
Loop
Her Do While için mutlaka bir Loop yerlestirmeliyiz.
Örnek :
Fact=1 I=2
Do While I<=Sayi
Fact=Fact * I
I=I+1
Loop
Buradaki örnekte te faktöriyel hesabini Do While döngüsü ile yapiyoruz. Burada sayac olarak I degeri kullaniliyor. Eger faktöriyeli hesaplanacak deger 2 den kücükse (1 veya 0 ise) döngü içine girilmemektedir. Döngü içinde sayac artimini kendimiz veriyoruz. Sayac sayi degerine esit iken döngü son kez çalitiriliyor.
Do ….. Loop While Döngüsü :
Bu döngü yapisinin genels yazim sekli asagida verilmistir.
Do
…..
Komutlar
…..
Loop While Kosul
Bu ifade de döngü içinde komutlar mutlaka bir defe icra edilir. Daha sonra Kosul kontrol edilir. Eger kosul dogru ise tekrar Do satirina dallanilir ve aradaki komutlar tekrar icra edilir. Yanlis ise döngüden çikilir.Bu yapiyida içiçe kullanmamiz mümkündür.
Örnek :
Fact =1 I=1
Do
Fact=Fact *I
I=I+1
Loop While I<=Sayi
Faktöriyel hesapini yapan bir baska örnek verilmistir.
Do Until Döngüsü:
Bu döngünün genel yazim sekli asagidaki sekildeki gibidir.
Do Until Kosul
Komutlar
Loop
Burada önce Kosula bakilir. Eger kosul yanlis ise aradaki satirlar çalistirilir'taki Loop satirina kadar. Loop satirinda tekrar While satirina dönülür. Kosul tekrar kontrol edilir. Eger yanlis ise ara satirlar tekrar çalistirilir. Kosul dogru ise Loop‘tan sonraki ilk satirdan program çalismaya devam eder. Içiçe Do Until döngüleride kurabiliriz. Do While döngüsünden tek farki kosul yanlis iken çalistirilir.
Do Until Kosul1
…
Do Until Kosul2
…
Komutlar
Loop
…..
Loop
Her Do Until için mutlaka bir Loop yerlestirmeliyiz.
Örnek :
Fact=1 I=Sayi
Do Until I<=1
Fact=Fact * I
I=I-1
Loop
Buradaki örnekte'de faktöriyel hesabini Do Until döngüsü ile yapiyoruz. Burada sayac olarak I degeri kullaniliyor. Eger faktöriyeli hesaplanacak deger 2 den küçükse (1 veya 0 ise) döngü içine girilmemektedir.Döngü içinde sayac azaltimini kendimiz veriyoruz. Sayac 2 degerine esit iken döngü son kez çalistiriliyor
Do … Loop Until Döngüsü :
Bu döngü yapisinin genel yazim sekli asagida verilmistir.
Do
…
Komutlar
…
Loop Until Kosul
Bu ifade de döngü içinde komutlar mutlaka bir defa icra edilir. Daha sonra Kosul kontrol edilir. Eger kosul yanlis ise tekrar Do satirina dallanilir ve aradaki komutlar tekrar icra edilir. Kosul dogru ise döngüden çikilir.Bu yapiyida içiçe kullanmamiz mümkündür
Örnek :
Fact =1 I=1
Do
Fact=Fact *I
I=I+1
Loop While I>Sayi
Faktöriyel hesapini yapan bir baska örnek verilmistir
Kes, Kopyala, Yapıştır
************************
Bir TextBox'ta Kes, Kopyala, Yapıştır, Geri Al işlemlerinin yapılması için iki tane çok kolay yol mevcut. Aşağıdaki örnekler SendKeys methodunu kullanıyor.
İşte birinci örnek:
Sub DoEditThing(whatThing As String, onWhat As Object)
Select Case whatThing
Case "Copy"
onWhat.SetFocus
SendKeys "^C"
Case "Cut"
onWhat.SetFocus
SendKeys "^X"
Case "Paste"
onWhat.SetFocus
SendKeys "^V"
Case "Undo"
onWhat.SetFocus
SendKeys "^Z"
End Select
End Sub
Aşağıdaki kod aynı işi yapan ikinci örnek:
Sub DoEditThing(whatThing As String, onWhat As Object)
Dim Send$
Select Case whatThing
Case "Copy"
Send = "^C"
Case "Cut"
Send = "^X"
Case "Paste"
Send = "^V"
Case "Undo"
Send = "^Z"
End Select
If Len(Send) Then
onWhat.SetFocus
SendKeys Send
End If
End Sub
Şimdi, yukarıdaki iki örnekten birini formunuza ekledikten sonra aşağıdaki kod satırıyla istediğiniz işlemi yapabilirsiniz.
DoEditThing Copy|Cut|Paste|Undo*, On_Which_Object**
* - Bir tanesini seçin; Copy, Cut, Paste veya Undo
** - TextBox'ı seçin; (ör. Text1)
System Dizinini Bulmak
Örneğin INI dosyalarını kullanan bir uygulama yazdığınızda, çoğunlukla \System dizinine ihtiyaç duyarsınız. Genellikle bu dizinin yolu "C:\Windows\System\" şeklindedir.
Fakat bazı kullanıcılar windows'u farklı sürücü veya dizine kurabilirler. Ve işte bu sorunu çözmek için kullanacağınız kod aşağıda.
Bu kodu bir Module'nin declarations section kısmına kopyalayın:
Declare Function GetSystemDirectory Lib "Kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Function VBSysDir() As String
Dim Gwdvar As String, Gwdvar_Length As Integer
Gwdvar = Space(255)
Gwdvar_Length = GetSystemDirectory(Gwdvar, 255)
VBSysDir = Left(Gwdvar, Gwdvar_Length)
End Function
Daha sonra aşağıdaki kodu kullanarak \System dizininin yolunu bulabilirsiniz:
MsgBox VBSysDir & " is the System Directory", vbInformation, "System Directory"
Hızlı Form
Move methodunun, Left ve Top ayarlarından %45 daha hızlı çalıştığını biliyormuydunuz? Özellikle yavaş sistemlerde çok işe yarıyor.
Move methodu için kullanacağınız kod aşağıda:
Sub ...
Form.Move x, y
End Sub...
Bu kadar kolay.
Tüm Formlar Kapansın
Çok sayıda açık form içeren uygulamalardaki tüm formları bir kerede kapatmak mı istiyorsunuz. İşte aşağıda bu işi yapan kod parçası.
Public Sub UnloadAllForms(sFormName As String)
Dim Form As Form
For Each Form In Forms
If Form.Name <> sFormName Then
Unload Form
Set Form = Nothing
End If
Next Form
End Sub
Aşağıdaki kodu Ana formunuzun Form_Unload olayına yerleştirin.
Call UnloadAllForms Me.Name
Tüm TextBox'lar Temizlensin
Bazen bir form üzerindeki tüm textboxları temizlemek zorunda kalırsınız. İşte aşağıda bunu yapmak için kullanacağınız kod.
Sub ClearAllTextBoxes(frmTarget As Form)
For i = 0 To (frmTarget.Controls.Count - 1)
Set ctrlTarget = frmTarget.Controls(i)
'If it's a textbox, clear it
If TypeOf ctrlTarget Is TextBox Then
ctrlTarget.Text = ""
End If
Next i
End Sub
Aşağıdaki kodu da örneğin bir komut butonunun Click olayına yerleştirerek textboxları temizleyebilirsiniz.
ClearAllTextBoxes FormName
Dosya Kopyalamak
Aşağıdaki kod parçası da yüzde ölçüsünü kullanarak dosya kopyalamaya yarıyor. Göze güzel görünen uygulamalar yapmak için iyi bir şey.
Function CopyFile (src As String, dst As String) As Single
'L. Serflaten 1996
Static Buf$
Dim BTest!, FSize!
Dim Chunk%, F1%, F2%
Const BUFSIZE = 1024
'This routine will copy a file while providing a means
'to support a percent gauge. Ex. your display routine
'is called "PercentDone" and accepts the values 0-100.
'Error support is provided.
'
'A larger BUFSIZE is best, but do not attempt to exceed
'64 K (60000 would be fine)
'
'The size of the copied file is returned on success
'0 is returned on failure
If Dir(src) = "" Then MsgBox "File not found": Exit Function
If Len(Dir(dst)) Then
If MsgBox(UCase(dst) & Chr(13) & Chr(10) & "File exists. Overwrite?", 4) <> 6 Then Exit Function
Kill dst
End If
On Error GoTo FileCopyError
F1 = FreeFile
Open src For Binary As F1
F2 = FreeFile
Open dst For Binary As F2
FSize = LOF(F1)
BTest = FSize - LOF(F2)
Do
If BTest < BUFSIZE Then
Chunk = BTest
Else
Chunk = BUFSIZE
End If
Buf = String(Chunk, " ")
Get F1, , Buf
Put F2, , Buf
BTest = FSize - LOF(F2)
' __Call percent display here__
'PercentDone ( 100 - Int(100 * BTest/FSize) )
Loop Until BTest = 0
Close F1
Close F2
CopyFile = FSize
Exit Function
FileCopyError:
MsgBox "Copy Error!"
Close F1
Close F2
Exit Function
End Function
Önce formunuza bir ProgressBar kontrolü ekleyip ardından aşağıdaki kodu kullanarak dosya kopyalayabilirsiniz.
ProgressBar1.Value = CopyFile (Which_File*, To_Where**)
* = Kopyalanacak dosya
** = Kopyalanacağı yer
Dosya Adını Çıkarmak
Bazen full path'i olan bir dosyanın (ör: C:\windows\hello.txt) sadece dosya adı (hello.txt) gerekebilir. İşte onu aradan çıkarmak için aşağıdaki kodu kullanabilirsiniz.
Function StripPath(T$) As String
Dim x%, ct%
StripPath$ = T$
x% = InStr(T$, "\")
Do While x%
ct% = x%
x% = InStr(ct% + 1, T$, "\")
Loop
If ct% > 0 Then StripPath$ = Mid$(T$, ct% + 1)
End Function
Aşağıdaki kodu kullanarakta dosya adını File değişkenine aktarabilirsiniz.
File = StripPath("c:\windows\hello.txt")
NotePad'ı Çalıştırmak
Bazen yazdığınız uygulamanın Readme dosyasını görüntülemek için Not defterini çalıştırmak kullanışlı olur.
1. Formun üzerine bir CommandButton yerleştirin.
2. Aşağıdaki kodu formun Declarations Section bölümüne kopyalayın.
Private Declare Function CreateProcess Lib "kernel32" Alias "CreateProcessA" (ByVal lpApplicationName As String, ByVal lpCommandLine As String,
lpProcessAttributes As Any, lpThreadAttributes As Any, ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, lpEnvironment As Any, ByVal lpCurrentDriectory As String,
lpStartupInfo As STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) As Long
Private Declare Function OpenProcess Lib "kernel32.dll" (ByVal dwAccess As Long, ByVal fInherit As Integer, ByVal hObject As Long) As Long
Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Const SYNCHRONIZE = 1048576
Const NORMAL_PRIORITY_CLASS = &H20&
Private Type PROCESS_INFORMATION
hProcess As Long
hThread As Long
dwProcessId As Long
dwThreadId As Long
End Type
Private Type STARTUPINFO
cb As Long
lpReserved As String
lpDesktop As String
lpTitle As String
dwX As Long
dwY As Long
dwXSize As Long
dwYSize As Long
dwXCountChars As Long
dwYCountChars As Long
dwFillAttribute As Long
dwFlags As Long
wShowWindow As Integer
cbReserved2 As Integer
lpReserved2 As Long
hStdInput As Long
hStdOutput As Long
hStdError As Long
End Type
3. Şimdi, aşağıdaki kodu da Command1_Click olayına kopyalayın:
Dim pInfo As PROCESS_INFORMATION
Dim sInfo As STARTUPINFO
Dim sNull As String
sInfo.cb = Len(sInfo)
success& = CreateProcess(sNull, "notepad.exe e:\anexis\vbpage\vbisland.html", ByVal 0&, ByVal 0&, 1&, NORMAL_PRIORITY_CLASS, ByVal 0&, sNull, sInfo, pInfo)
MsgBox "Notepad has been started. Click OK to end it."
ret& = TerminateProcess(pInfo.hProcess, 0&)
ret& = CloseHandle(pInfo.hThread)
ret& = CloseHandle(pInfo.hProcess)
MsgBox "Notepad has been shut down.
4. F5 basarak uygulamayı çalıştırın.
Windows Kapansın
Bu kod setup programlarında sistemi resetlemek istediğiniz zaman kullanışlı olur. İşte aşağıdaki kodu kullanarak bu işi kolaylıkla yapabilirsiniz.
1. Aşağıdaki kodu bir formun Declarations section bölümüne kopyalayın:
Const EWX_LogOff As Long = 0
Declare Function ExitWindows Lib "User32" Alias "ExitWindowsEx" (ByVal dwOptions As Long, ByVal dwReserved As Long) As Long
2. Aşağıdaki kodu da bir nesnenin olayına kopyalayın (ör: Command1_Click):
ExitWindows EWX_LogOff, &HFFFFFFFF
Not: Bu kod sadece Exe dosyasından çalışır. Eğer VBasic içinden çalıştırırsanız tüm programlarınızı kapatın.
Ses Kartı Var mı?
Şimdi bir çok programda bir olay gerçekleştiğinde küçük sesler duyuluyor. Eğer sizde böyle bir şey yapmak için sisteminizde ses kartı olup olmadığını öğrenmek istiyorsanız aşağıdaki kodu kullanabilirsiniz.
Denemek için aşağıdaki kodu bir Modulenin içine kopyalayın.:
Declare Function waveOutGetNumDevs Lib "winmm.dll" Alias "waveOutGetNumDevs" () As Long
Bu kodu da formunuzun Form_Load olayı altına kopyalayın:
Dim i As Integer
i = waveOutGetNumDevs()
If i > 0 Then
MsgBox "Your system supports a sound card.", vbInformation, "Sound Test"
Else
MsgBox "Your system cannot play Sound Blaster Files.", vbInformation, "Sound Test"
End If
Şimdi F5 tuşuna basarak kodu deneyebilirsiniz.
Textbox Popup Menüleri Çıkmasın
Bildiğiniz gibi textboxların üzerinde sağ tuşa bastığınızda bir Popup Menu çıkar. Bunun çıkmasını istemiyorsanız aşağıdaki kodu kullanabilirsiniz.
Kodu formun General Declarations bölümüne kopyalayın:
Sub Text1_MouseDown
if button=2 then
text1.enabled=false
popupmenu <MENUNAME>
text1.enabled=true
text1.setfocus
end if
End Sub
Dosya Uzantısını Bulmak
Aşağıdaki fonksiyon bir dosyanın uzantısını döndürüyor.
Function GetExtension(Filename As String)
Dim PthPos, ExtPos As Integer
For i = Len(Filename) To 1 Step -1 ' Go from the Length of the filename, to the first character by 1.
If Mid(Filename, i, 1) = "." Then ' If the current position is '.' then...
ExtPos = i ' ...Change the ExtPos to the number.
For j = Len(Filename) To 1 Step -1 ' Do the Same...
If Mid(Filename, j, 1) = "\" Then ' ...but for '\'.
PthPos = j ' Change the PthPos to the number.
Exit For ' Since we found it, don't search any more.
End If
Next j
Exit For ' Since we found it, don't search any more.
End If
Next i
If PthPos > ExtPos Then
Exit Function ' No extension.
Else
If ExtPos = 0 Then Exit Function ' If there is not extension, then exit sub.
GetExtension = Mid(Filename, ExtPos + 1, Len(Filename) - ExtPos) 'Messagebox the Extension
End If
End Function
Fonksiyonu aşağıdaki gibi çağırabilirsiniz.
FileExt = GetExtension("c:\windows\vb\vb.exe")
Dosya Taşımak
Bazı kişiler dosyayı taşımanın kopyalamaktan daha kolay olduğunu düşünürler. E gerçektende öyle ama bu yaptığımız işe bağlı. Neyse aşağıdaki kodu kullanarak dosya taşıyabilirsiniz.
Name "File to move" As "Filename To move it as"
Task Bar'ı Gizlemek
Windows95 Taskbarı saklayıp, geri getirmek için bir çözüm yolu var. Aşağıdaki kodu kullanarak bu işi kolaylıkla yapabilirsiniz.
Önce, aşağıdaki kodu formun General Declarations bölümüne kopyalayın:
Dim hWnd1 As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetWindowPos Lib "user32"
(ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Const SWP_HIDEWINDOW = &H80
Const SWP_SHOWWINDOW = &H40
Saklamak için aşağıdaki kodu kullanın:
hWnd1 = FindWindow("Shell_traywnd", "")
Call SetWindowPos(hwnd1, 0, 0, 0, 0, 0, SWP_HIDEWINDOW)
ve görüntülemek içinde aşağıdakini kullanın:
Call SetWindowPos(hwnd1, 0, 0, 0, 0, 0, SWP_SHOWWINDOW)
Masaüstü İkonlarını Dizmek
Aşağıdaki kod aktiv desktop ta bulunan ikonları düzenliyor.
Önce, Bu kodu bir formun General Declarations bölümüne kopyalayın:
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Const GW_CHILD = 5
Private Const LVA_ALIGNLEFT = &H1
Private Const LVM_ARRANGE = &H1016
İkonları düzenlemek için de aşağıdaki kodu kullanın:
Dim hWnd1 As Long
Dim hWnd2 As Long
Dim Ret As Long
hWnd1 = FindWindow("Progman", vbNullString)
hWnd2 = GetWindow(hWnd1, GW_CHILD)
hWnd1 = GetWindow(hWnd2, GW_CHILD)
Ret = SendMessage(hWnd1, LVM_ARRANGE, LVA_ALIGNLEFT, 0)
API ile Disket Formatlamak
API kullanarak bir diskete format atmak için aşağıdaki kodu kullanabilirsiniz.
Not: Bu kod harddiske format atabilir, bu nedenle dikkatli olmalısınız.
Önce, Bu kodu bir formun General Declarations bölümüne kopyalayın:
Private Declare Function SHFormatDrive Lib "shell32" _
(ByVal hwnd As Long, ByVal Drive As Long, ByVal fmtID As Long, _
ByVal options As Long) As Long
Private Declare Function GetDriveType Lib "kernel32" Alias _
"GetDriveTypeA" (ByVal nDrive As String) As Long
Forma iki CommandButtons ekleyin:
Birincinin adı: "cmdFormatDrive"
İkincinin adı: "cmdDiskCopy"
Private Sub cmdFormatDrive_Click()
Dim DriveLetter$, DriveNumber&, DriveType&
Dim RetVal&, RetFromMsg%
DriveLetter = UCase(Drive1.Drive)
DriveNumber = (Asc(DriveLetter) - 65) ' Change letter to Number: A=0
DriveType = GetDriveType(DriveLetter)
If DriveType = 2 Then 'Floppies, etc
RetVal = SHFormatDrive(Me.hwnd, DriveNumber, 0&, 0&)
Else
RetFromMsg = MsgBox("This drive is NOT a removeable" & vbCrLf & _
"drive! Format this drive?", 276, "SHFormatDrive Example")
Select Case RetFromMsg
Case 6 'Yes
' UnComment to do it...
'RetVal = SHFormatDrive(Me.hwnd, DriveNumber, 0&, 0&)
Case 7 'No
' Do nothing
End Select
End If
End Sub
Private Sub cmdDiskCopy_Click()
' DiskCopyRunDll takes two parameters- From and To
Dim DriveLetter$, DriveNumber&, DriveType&
Dim RetVal&, RetFromMsg&
DriveLetter = UCase(Drive1.Drive)
DriveNumber = (Asc(DriveLetter) - 65)
DriveType = GetDriveType(DriveLetter)
If DriveType = 2 Then 'Floppies, etc
RetVal = Shell("rundll32.exe diskcopy.dll,DiskCopyRunDll " _
& DriveNumber & "," & DriveNumber, 1) 'Notice space after
Else ' Just in case 'DiskCopyRunDll
RetFromMsg = MsgBox("Only floppies can" & vbCrLf & _
"be diskcopied!", 64, "DiskCopy Example")
End If
End Sub
Forma birde Drive1 adlı ListDrive ekleyin:
Private Sub Drive1_Change()
Dim DriveLetter$, DriveNumber&, DriveType&
DriveLetter = UCase(Drive1.Drive)
DriveNumber = (Asc(DriveLetter) - 65)
DriveType = GetDriveType(DriveLetter)
If DriveType <> 2 Then 'Floppies, etc
cmdDiskCopy.Enabled = False
Else
cmdDiskCopy.Enabled = True
End If
End Sub
Office 97 Araç Çubuğu Yaratmak
Office 97 ile gelen araç çubuğu uygulamaya güzel bir görünüm katıyor. Aslında bunu VBasic ile yapmak içi bir kontrol gelmiyor.
Fakat API fonksiyonlarını ve eski Common Controls ToolBar'ı kullanarak bu tür araç çubukları oluşturmak mümkün.
1. Önce yeni bir proje hazırlayın ve Common Controls ActiveX kontrolünü ekleyin.
2. Bir formun üzerine ToolBar kontrolünü yerleştirin ve butonları oluşturun.
3. Şimdi projeye bir Module yerleştirin ve aşağıdaki kodu modülün General Declarations kısmına yerleştirin:
Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Public Declare Function SendTBMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Any) As Long
Public Const WM_USER = &H400
Public Const TBSTYLE_FLAT = &H800
Public Const TBSTYLE_TRANSPARENT = &H8000
Public Const TB_SETSTYLE = (WM_USER + 56)
Public Const TB_GETSTYLE = (WM_USER + 57)
Public Sub MakeToolbarFlat(theToolbar As Control)
Dim Res As Long
Dim Style As Long
Style = SendTBMessage(FindWindowEx(theToolbar.hwnd, 0&, "ToolbarWindow32", vbNullString), TB_GETSTYLE, 0&, 0&)
Style = Style Or TBSTYLE_FLAT Or TBSTYLE_TRANSPARENT
Res = SendTBMessage(FindWindowEx(theToolbar.hwnd, 0&, "ToolbarWindow32", vbNullString), TB_SETSTYLE, 0, Style)
theToolbar.Refresh
End Sub
4. Aşağıdaki kodları da formun Form_Load olayına kopyalayın:
Call MakeToolbarFlat(Toolbar1)
Toolbar1, tabiki ToolBar kontrolünün adı.
Web Sayfası İçin Kısayol Yaratmak
Çoğu kişi bunun nasıl yapılacağını bilmek istiyor. Aslında çok kolay. Aşağıdaki kod varsayılan tarayıcınızı açarak yazmış olduğunuz adresi getirmeye başlar.
Aşağıdaki kodu bir modulenin içine kopyalayın:
Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA"
(ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
5. BÖLÜM
5. VB’DE DEĞİŞKEN TANIMLAMA
GW ve Quick Basic’te programcı ne zaman bir
değişkene gereksinim duyarsa her hangi bir bildiri değimini kullanmadan
değişkeni tanımlayıp kullanabilir. Bu değişkene aktarılacak bilgiler,
değişkenin adının son karakterine bağlı olarak değişiyordu.
VB’de ise değişken yapısı
daha da gelişmiştir. Değişkenler için önemli durum, değişkenlerin karışıklığa
meydan vermemesi için tanımlanması mecburiyeti olmasıdır. Daha önceki iki kuşak Basic’te bu mecburiyet
yoktur ve değişkenleri benzerlikten dolayı her zaman karıştırmak mümkündür.
VB’de değişkenleri kullanmadan önce tanımlama mecburiyeti programcının seçimine
bırakılmıştır. Programcı isterse
Tools-Options menüsü Require Variable Declaration seçeneğini işaretleyerek
derleyicinin tanımlanmamış değişken
kullanımda hata mesajı vermesini sağlayabiliriz.
Bir değişken
tanımlanırken aşağıdaki kuralları göz önünde bulundurulması gerekir.
·
Değişken ismi bir harf ile başlamalıdır.
Ad1, Ad2
·
Değişken isminde boşluk bulunmaz. Bunun yerine
alt çizgi karakteri kullanılabilir.
·
Değişken isminde sadece harfler, rakamlar ve alt
çizgi karakterleri bulunabilir.
Adı_Soyadı, No1
·
Değişkene verilecek isim VB komutlarından
oluşmamalıdır.
Not, Dim, Val ......vs
·
Değişken ismi 255 karakterden fazla olmamalıdır.
5.1. VB’de Kullanılan Standart Veri Tipleri
VB’de değişken tipleri Dim değimi
ile tanımlanır. Bu değimin yazılımı;
Dim
deg_adı [(Dizi boyutu)] As tipi
deg _adı : Tanımlanacak değişkenin
ismidir.
Dizi boyutu : Değişken dizi olarak
tanımlanacaksa dizinin boyutu değişken isminden
sonra parantez içine yazılır.
Dim x (5) tanımıyla 6 elemanlı dizi tanımlamış oluruz.
Dizinin ilk
elemanı 0
son elemanı 5 dir.
Dim x (3 to 6) tanımıyla ilk elamanı x (3) ve son elamanı x
(6)
olan bir
dizi tanımlanmıştır.
Tipi : Tanımlanacak değişkenin tipi
belirlenir. Bunlar ;
Byte : 1 Baytlık tamsayı tipidir. 0 ile 255 arasında değer
alabilir.
Integer : 2
Baytlık işaretli tamsayı tipidir. –32768 ile 32767 arasında değer alabilir.
Long : 4 Baytlık
işaretli tamsayı tipidir. –2.147.483.648 ile 2. 147.483.647 arasında değer
alabilir.
Not: Yukarıdaki
değişken tiplerine ondalık sayı atanması durumunda sayı en yakın tamsayıya
yuvarlatılacaktır. ( x=4,3 ise x= 4 atanır, y=3.6 ise y=4 atanır)
Single : 4
Baytlık ondalık sayı tipidir.
3.402823 x 1038 ile
1.401298 x 10-45 arasında değer alabilir.
Double : 8
Baytlık ondalık sayı tipidir.
1.79769313486232 x 10308 ile
4.94065645841247 x 10-324 arasında değer alabilir.
Currency : 8
Baytlık ondalık sayı tipidir. Ancak sayının ondalık kısmı 4 basamaktan fazla olamaz.
–92337203685477.5808 ile 922337203685477.5807 arasında değer alabilir.
Decimal : 14
Baytlık bir sayı tipidir. Bu tipin en
önemli özelliği sayıdaki bütün basamakların tutulmasıdır.
Boolean : 2
Baytlık bir veri tipidir. Sadece True ve
False değerleri alabilir.
Ogrenci=True
Ogernci=1 Bu
atamaların hepsi aynı işi
Ogernci=100 görür.
String : Karakter
sınırı verilmezse 2 milyar karaktere kadar atama yapılabilen sayısal veri tipidir. +10 bayt yer kaplar. Karakter
sayısını sınırlamak için ;
Dim a
As String * sınır yazılır.
Dim a
String İstenildiği kadar karakter
ataması yapılabilir.
Dim b String *
3 3 tane karakter ataması yapılabilir.
Variant : VB’de
değişken tanımlanırken tip ismi verilmemişse bu tip Variant olarak ele alınır
ve değişkenin tipi atanacak değere göre
değişir. Variant tipler yukarıdaki tiplerden herhangi biri gibi işleme
girebilir ve programın çalışması esnasında değişebilir.
Date : 8 Baytlık
yer kaplayan bu değişken tipi 1/1/100 ile 31/12/9999 arasındaki tarih ve
0:00:00 ile 23:59:59 arasında saat atamaları yapılabilir.
Object : 4
Baytlık bir veri tipidir. OLE işlemlerinde kullanılmak amacıyla tasarlanmıştır.
Bu tipte değişkenlere atama yapılırken Set operatörü kullanılır.
5.2. Kullanıcı Tarafından Yeni Tip Tanımlanması
Type tip_adı
Deg_adı As tipi
Deg_adı As tipi
.........................
.........................
.........................
End Type
Bu sekil de tanımlanan
tipte bir değişken tanımlamak için de;
Dim deg_adı As tip_ismi
olarak tanımlanabilir.
Tip tanımı bir form içerisinde ancak Private olarak
tanımlanabilir. Yani tanımlanan tip sadece o formda kullanılır. Genel yani
Public bir tip ise ancak bir modül içerisinde kullanılabilir.
Bir formda tip;
Private Type Ad
..............
End Type
şeklinde tanımlanır.
Örnek 5.1:
Type Rehber
Ad As String
Soyadı As
String
Tel As
Integer
Adres As
String
End Type
Burada Rehber değişkenini
değil Rehber tipini tanımladık. Artık Rehber yapısındaki değişkenleri
tanımlayabiliriz.
Dim adı As Rehber şeklinde tanımlayabiliriz.
Bu
değişkene değer atamak için “.” operatörünü kullanalım ;
Adı.Ad =
“Bahadır”
5.2.1.
Enum
Enum Tip İsmi
Elemen1=Sayı1
Eleman2=Sayı2
........................
Eleman3=SayıN
End Enum
Bu tip her bölüme bir numara verir.
VB bu bölümü bir sayı olarak kullanmasına rağmen bunu bir string gibi kullanma
imkanı verir.
Örnek 5.2:
Enum bolum
Bilgisayar=1
Elektronik=2
Makine=3
Metal=4
Yapı=5
YapıRes=6
End Enum
Tanımını yaptıktan sonra
bolum tipinde değişkenler tanımlayarak bu değişkenlere değer atamak mümkündür.
Dim eğitim As bolum
Bolum=Bilgisayar
Satırı ile bolum
değişkenine Bilgisayar atamaktayız. Bu işlem eğitim=1 satırı ile aynı işi yapmasına karşın anlaşılması
daha kolaydır.
5.3. Dinamik Dizi Tanımlama
Programda
tanımlanacak dizinin boyutu her zaman belli
olmayabilir. Bu durumda diziyi dinamik olarak tanımlamamız gerekir.
Diziyi dinamik olarak tanımlayabilmek için ReDim değimi kullanılır. Diziyi
dinamik olarak tanımlamak demek dizinin boyunun ihtiyaç olduğunda artırılması veya azaltılması demektir. Üstelik dizinin
eski halini koruyarak.
ReDim [Preserve] deg_adı (dizi
boyutu] As tipi
ReDim ile dizin ilk defa
tanımlanacağı gibi yine ReDim’le tanımlanmış dizinin boyutunu değiştirmek için
de kullanılabilir. Burada Dim’den farklı olarak Preserve parametresi vardır.
Preserve, dizinin yeniden
boyutlandırılması durumunda dizide bulunan elaman içeriklerini yeni dizide de
bulunmasını sağlar.
Tanımlanacak dizi local
bir dizi olmayacaksa dizi öncelikle Dim veya Global değimiyle aşağıdaki gibi
tanımlanmalıdır.
Dim deg_adı () As tipi
Görüldüğü dizi
tanımlanırken parantez içerisinde dizi boyutu verilmemiştir. Bu VB’ye dizinin dinamik olarak tanımlanacağını
belirtecektir. Daha sonra dizinin elaman sayısı ReDim değimi kullanılarak
belirlenir.
Private Type takip
Ad As String * 25
Soyad As String *
25
Sınıfı As String * 2
No As String *6
End Type
Dim Ogr () As takip “Diziyi dinamik olarak
tanımla
Dim dizi_boyu As Integer
‘En son tanımlanan dizinin boyutu
Dim eleman_say As Integer
‘Dizideki son eleman indeksi
5.4. Global ve Local Değişkenler
Global
değişkenler programın bütün fonksiyonları kullanılabilen değişkenlerdir. Local
değişkenler ise sadece tanımlandıkları fonksiyonda kullanılabilirler.
Dim değimi ile yapılan tanımlamalar
yerine Global ve Local’dır. Dim ile tanımlana değişkenler;
·
General-Declarations kısmında tanımlanmışsa
modül veya form içerisinde Global’dır. Buna VB’de Modüle Level denir.
·
Bir fonksiyon veya alt programda tanımlanmışsa
Local’dır. Sadece o prosedür tarafından kullanılabilir.
·
Bir formun General Declarations kısmında Public
değimi ile tanımlanmışsa diğer modüller ve formlarda bu değişkeni
kullanabilirler. Ancak değişkenin isminden önce modülün/formun ismini vermesi
gerekir.
Form1 . x = 4
·
Bir değişkeni programın her tarafında
kullanılacak şekilde tam olarak global tanımlamak için o değişkeni bir modülün
General-Declaration kısmında Public değimi ile tanımlamak gerekir.
Public x
Local değişkenlerin önemli bir avantajı bellekte fazladan
yer işgal
etmemeleridir
(Static olarak kullanılmamışlarsa). Global değişkenler program çalıştığı sürece
bellekte tutulmalarına rağmen local değişkenler, değişkenin bulunduğu fonksiyona girince
değişken belleğe alınır ve fonksiyonun çalışması bitince bellekten atılır.
5.5. Static Değişkenler
Local olarak tanımlanan
bir değişken tanımlandığı alt program veya fonksiyonun çalışması bittikten
sonra bellekten atılır. İlgili prosedür ikinci kez çalıştırıldığında Local
değişkenler eski değerlerinden değil baştan başlarlar.(string ise “ ”, sayı ise
0 )
Local olarak tanımlanan
bir değişkenin değerinin tanımlandığı alt program veya fonksiyonun çalışması
bittikten sonra da değerinin korunması isteniyorsa Dim yerne Static değimiyle
tanımlama yapılır. Static değimi bir alt program veya fonksiyon altında
tanımlanabilir:
Static deg_adı [(dizi
boyutu)] As tipi
5.6. Sabit Tanımlama
Programda değerlerinin
değişmesi istenmeyen değerler sabit olarak tanımlanır. VB sabit tanımlama;
Cost Sabit ismi=Değeri
Örnek 5.3:
Cost PI=3.1415
5.7. Değişkenlere İlk Değer Ataması
Local değişkenlere ilk değer ataması
şu şekildedir.
·
Dim değimiyle ile tip ismi kullanılmadan yapılan
tanımlamalarda ilk değer ataması direk olarak tanımın yapıldığı satırda yapılabilir.
Dim x=5, y=10
·
Tip ismi kullanılarak yapılan tanımlamalarda ise
ikinci bir satırda ilk değer ataması yapılır.
Dim x As Integer
x=5
Global
olarak tanımlanan değişkene ilk değer ataması Declarations kısmında yapılır ve
burası bir alt program değildir.
Dolayısıyla Global olarak tanımladığımız değişkenlerimize ilk değer
atamasını Form_Load veya projenin çalışmaya başladığı alt program altında
yapmalıyız.
Static değişkenlere de
ilk değer ataması IsEmpty () fonksiyonu
ile yapılır. Bu fonksiyon bir değişkene değer atanıp atanmadığını kontrol eder.
Verilen değişkene değer ataması yapılmamışsa fonksiyondan geri dönen değer
TRUE’dir. Fonksiyonun bu özelliğinden yararlanarak static olarak tanımlanan
değişkene daha önce değer atanıp atanmadığını yani ilk defamı kullanıldığını
öğrenebiliriz.
Static i;
If IsEmpty(i) then i=5
Böylece alt program ilk
defa çalıştığında i’ye her hangi bir değer ataması olmadığı için şartımız
çalışacak ve ilk değer atanacaktır. Alt programın sonraki seferlerde çalışması
durumunda ise i’nin static olmasından dolayı atanmış bir değer olacak ve
şartımız çalışmayacaktır. Böylece sadece alt program ilk defa çalıştığında ilk
değerimizi atamış olacağız.
VB’de bir diziye değer
ataması da değişkeni Variant olarak tanımladıktan sonra Array fonksiyonu ile o
değişkenin bir dizi olduğunu belirtmek ve ilk değer atamak mümkündür.
Dim Dizi [As Variant]
Dizi=Arrray(eleman)
Örnek5.4:
Dim gün
Gün= Array(“Pazar”, “Pazartesi”, “Salı”, “Çarşamba”,
“Perşembe”, “Cuma”, “Cumartesi”)
5.8.Kullanılan Değişkenlerin Tipini Belirlemek
Tipi belirtilmeyen
Variant tipi değişkenlere programın işletimi sırasında istenen tipteki bilgi
aktarılabilir. VarType fonksiyonu ile Variant bir değişkenin hangi tipte bilgi
içerdiği öğrenilebilir.
VarType (Variant Değişken
Adı)
Yazılımında da görüldüğü gibi bu
fonksiyon dışarıdan içerdiği bilginin tipi öğrenilmek istenen değişkenin adını
almaktadır. Geriye ise değişkenin içerdiği bilginin tipini temsil eden sayısal
bir değeri döndürmektedir. Eğer Variant değişken karaktersel bilgi içeriyorsa
VarType() fonksiyonu geriye 8 sayısal değerini döndürür. VarType fonksiyonu ile
döndürülecek sayısal değer ve bu değerlerin temsil ettikleri veri tipleri
aşağıdaki tabloda verilmiştir.
|
Veri
Tipi
|
Sayısal
Değer
|
|
Boş-Empty
|
0
|
|
Null
|
1
|
|
Integer
|
2
|
|
Long
|
3
|
|
Single
|
4
|
|
Double
|
5
|
|
Currency
|
6
|
|
Date
|
7
|
|
String
|
8
|
|
Object
|
9
|
|
Error
|
10
|
|
Boolen
|
11
|
|
Variant
|
12
|
|
Data
Object
|
13
|
Tablo-5.1. Veri
Tipleri
5.9. Tip Değiştirme İşlemleri
Ccur(ifade): Parantez içinde verilen ifadeyi Currency tipine
dönüştürür.
CDbl(ifade): Parantez içinde verilen ifadeyi Double tipine
dönüştürür.
CInt(ifade): Parantez içinde verilen ifadeyi Integer tipine
dönüştürür.
CLng(ifade): Parantez içinde verilen
ifadeyi Long tipine dönüştürür.
CSng(ifade): Parantez içinde verilen ifadeyi Single tipine
dönüştürür.
CVar(ifade): Parantez içinde verilen ifadeyi Variant tipine
dönüştürür.
CBool(ifade): Parantez içinde verilen ifadeyi Boolen tipine
dönüştürür.
CByte(ifade): Parantez içinde verilen ifadeyi Byte tipine
dönüştürür.
CDec(ifade): Parantez içinde verilen ifadeyi Decimal tipine
dönüştürür.
CDate(ifade): Parantez içinde verilen ifadeyi Date tipine
dönüştürür. İki tarih arasında işlem yapabilmek için bu dönüşüm kullanılır.
5.10. Değişkenlerle İlgili Komutlar
5.10.1. IsDate
Değişkenin içeriği geçerli
bir tarih ise geri dönen tarih True, değilse False’dir kabul edilen tarih
formatı Windows’da tanımlanan formattır.
IsDate (değişken)
Örnek 5.4:
Dim
a
a=IsDate(“30/02/1999”) ‘ Verilen tarih geçerli değildir.
A=True (Şubat ayı 29 gündür.
a=IsDate(“13bfg”) ‘Verilen tarih
geçerli değildir. A=False
5.10.2. IsNumeric
Verilen değişkenin
içeriğinin bir sayı olup olmadığını kontrol eder. Değişkenin içeriği sayı ise
geri dönen değer True değilse False’dir.
IsNumeric(değişken)
5.10.3. IsArray
Girilen değişken bir dizi
ise True değilse falese üretir. Yani bir değişkenin dizi olup olamadığını
öğrenmek için kullanılır.
IsArray(değişken)
5.10.4. IsEmpty
Tanımlanmış bir değişkene henüz bir değer
atanmamışsa o değişken Empty’dir. Bir değişkene değer atanıp atanmadığını
öğrenmek için kullanılır. Dönen değer False ise değişkene bir atama
yapılmıştır.
IsEmpty (Değişken)
5.10.5. IsMissing
VB’de fonksiyon veya alt
programlara giriş parametresi olarak Optional değimi kullanılırsa o parametre
kullanılmadan da o fonksiyon çağrılabilir. IsMissing fonksiyonu bu tip
parametrelerin verilip verilmediğini kontrol etmek için kullanılır.
IsMissing (Değişken)
5.10.6. IsObject
Verilen değişkenin tipi
Object tipinde ise fonksiyondan geriye True değeri döner.
IsObject (Değişken)
5.10.7. Erase
İsmi verilen diziyi
siler.
Erase Diziismi
OPERATÖRLER
1.
Aritmetik Operatörler
|
İşaret
|
Anlam
|
Örnek
|
|
=
|
Atama |
a=10 |
|
+
|
Toplama |
MsgBox 30+12 ‘42
|
|
-
|
Çıkarma
|
MsgBox 20-5
‘15
|
|
*
|
Çarpma |
MsgBox 4*3 ‘12 |
|
/
|
Bölme |
MsgBox 7/2
‘3.5
|
|
\
|
Tam Bölme |
MsgBox 7\2
‘3
|
|
&
|
String Toplama |
MsgBox “Ela” & “zığ” ‘Elazığ
|
|
^
|
Üst |
MsgBox 2^3
‘8
|
Mod |
Bölmede Kalan |
MsgBox 7 Mod 2 ‘1
|
2. Mantıksal Operatörler
|
İşaret
|
Anlam
|
Örnek
|
And |
Ve |
MsgBox 7 And 2 ‘111 And 010= 010
|
|
Or
|
Veya
|
MsgBox 5 Or 2 ‘101 And 010= 111
|
|
Xor
|
Xor
|
MsgBox 7 And 2 ‘111 And 010= 101
|
|
Not
|
Değil
|
MsgBox Not 6 ‘110=001
|
3. Karşılaştırma Operatörleri
|
İşaret
|
Anlam
|
Örnek
|
|
=
|
Eşit
|
If x = 2
|
|
<>
|
Farklı
|
If x <> 2
|
|
<
|
Küçük
|
If x < 2
|
|
>
|
Büyük
|
If x > 2
|
|
<=
|
Küçük eşit
|
If x <= 2
|
|
>=
|
Büyük eşit
|
If x >= 2
|
VB’de Like operatörü ile
stringler üzerinde daha detaylı karşılaştırma işlemleri yapılabilmektedir. 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.
|
İşaret
|
Anlamı
|
|
?
|
Herhangi bir karakter
|
|
#
|
Herhangi bir rakam
|
|
*
|
Bir veya daha fazla karakter
|
|
[Aralık]
|
Verilen aralıkta bir karakter
|
|
[!Aralık]
|
Verilen aralık dışında karakter
|
4. Like Operatörleri Joker karekterleri
If bolum Like “*bilgisayar” Then
İfadesi ile bolum değişkeninin sonunda bilgisayar
olup olmadığını kontrol eder.
If bolum
Like “*bilgisayar*” Then
İfadesi ile bolum değişkeninin herhangi bir
yerinde bilgisayar olup olmadığını
kontrol eder.
If bolum
Like “*?ilgisayar*” Then
İfadesi ile bolum değişkeninin ilk harfinin her
hangi bir karakter ancak diğer karakterlerin ilgisayar olup olmadığını kontrol
eder.
5.
İşlem Önceliği
Aritmetik
|
Karşılaştırma
|
Mantıksal
|
|
^
Negatif İşareti (-)
*,/
\
Mod
+,-
&
|
=
<>
<
>
<=
>=
Like
Is
|
Not
And
Or
Xor
Eqv
Imp
|
Hiç yorum yok:
Yorum Gönder