Visual Basic 6.0 Ders Notları Anadolu Üniversitesi Endüstri Mühendisliği Bölümü Fonksiyon ve Alt Programlar Visual Basic 6.0 Ders Notları Kaynak: İhsan Karagülle, Zeydin Pala, Visual Basic 6.0, Türkmen Kitabevi, 1999, Beyazıt İstanbul,
Fonksiyon ve Alt Programlar Prosedür olarak adlandırılan fonksiyonlar ve alt programlar belirli bir işi yapmak için oluşturulan küçük program parçalarıdır. Aynı işi gerçekleştirmek üzere aynı kodların programın farklı yerlerinde tekrar edilmesini önlemek için kullanılır. Altprogram ve Fonksiyonların genel tanımı : Sub AltProgram Adi([giris parametreleri[As tipi]]) Komutlar [Exit Sub] End Sub Sub FonksiyonAdi([giris parametreleri[As tipi]])[As tipi] Komutlar [Exit Function] [FonksiyonAdi=geriDonusDegeri] End Function
Fonksiyon ve Alt Programlar Fonksiyon altprogramdan farklı olarak geriye bir değer gönderebilir. Bu değer gönderme işlemi fonksiyon ismine geri dönecek değerin atanması ile olur. Bir altprogram veya Fonksiyondan çıkmak için Exit Sub ve Exit Function deyimleri kullanılır. Prosedürün adı Prosedürün Tipi : Sub ile bir AltProgram, Function ile bir fonksiyon oluşturabilirsiniz. Event ile bir olay altprogramı ve Property seçeneği ile de bir özelliğe değer atama veya değer öğrenme altprogramı oluşturulur. Prosedürün genel veya özel olarak tanımlanması: Eğer prosedür, genel (public) tanımlanırsa programdaki bütün form ve modüllerden, özel tanımlanırsa (private tanımlanan) sadece tanımlandığı form veya modül içinden çağrılabilir. Eğer yandaki işaret kutusu seçili ise, Prosedürteki tüm değişkenler Static deyimi kullanmaya gerek kalmadan static olarak işleme girer.
Prosedür Çağrısı Herhangi bir altrprogramı veya fonksiyonu çağırmak için AltProgramAdi([giris değerleri]) Donendeger=FonksiyonAdi([giris değerleri]) ‘Örnek Private Sub Command1_Click() ‘Prosedur Cagrisi Sayilar val(Text1.Text) End Sub Public Sub Sayilar(x As integer) ‘ sayilar Proseduru Dim i For i = 1 to x Print i^2 ‘Sayinin karesini yaz Next Örnek : 1’den text1’den girilen sayıya kadar olan sayıların karelerini form üzerine yazacak alt program
Fonksiyon Örneği : Faktöriyel Hesaplama 1’den 20’ye kadar sayıların faktöriyelinin form üzerine yazdırılması ‘Örnek Private Sub Form_Load() Show Dim i For i=1 to 20 Print i & “!=“ & Fak(i) Next End Sub Public Function Fak(x As integer) Dim i, s s=1 For i = 1 to x s=s*i Fak= s ‘sonucu geri gönder End Function
Prosedür Parametreleri Prosedürlere değer aktarmada parametrelerden yararlanılır. Prosedür parametresiz çalıştırılabileceği gibi birden çok parametre ile de çalıştırılabilir. İstenirse aynı prosedür optional parametre kullanılarak farklı sayılarda parametre için de çalıştırılabilir. Public Function Hipotenus(x,y) hipotenus = sqr (x^2 + y^2) End Function Public Function Alan(x,y) Alan = x*y/2 Private Sub Form_Load() Show Print hipotenus(3, 4)&”-”& alan(3,4) Print hipotenus(5, 12)&”-”& alan(5,12) End Sub x y
Optional Parametre Kullanımı İstenirse bazı parametreler seçeneğe bağlı olarak da tanımlanabilir. Bu durumda prosedür o parametreler kullanılmadan da çağrılabilir. Public Function f(x, y, Optional t, Optional k) toplam = x + y If IsMissing(t) Then MsgBox ("t parametresi kullanılmamış") Else toplam = toplam + t If IsMissing(k) Then MsgBox ("k parametresi kullanılmamış") Else toplam = toplam + k f = toplam End Function Private Sub Form_Load() Show Print f(2, 3, 4) End Sub
ParamArray Bir fonksiyona girecek parametre sayısı belli değilse parametre ParamArray deyimi ile bir dizi olarak tanımlanır. Bu durumda kullanıcı o parametre yerine geçecek istediği kadar parametre kullanabilir. Public Function h(ParamArray x() ) End Function Public Function h(ParamArray x() ) dim t,i For i=0 to Ubound(x) if not IsMissing(x(i)) Then t=t+x(i)^2 Next h=t End Function Private Sub Form_Load() Show Print h() Print h(3,4,,2,4,5,6,7,8,9,0,2) Print h(5,12) End Sub
Byref ve ByVal kullanımı Bir prosedürün içine değişken, referans (byref) yada değer (byval) olarak gönderilebilmektir. Bir değişken referans olarak bir prosedüre gönderildiğinde değeri prosedür içindeki değişikliklerden etkilenir aksi halde (değer olarak gönderildiğinde ) etkilenmez. Varsayılan değer “ByRef”tir. Sub Command1_click() i = text1.text kup(i) print i End Sub Sub kup( ByRef x) print x^3 x=x+100 End Function Sub Command1_click() i = text1.text kup(i) print i End Sub Sub kup( ByVal x) print x^3 x=x+100 End Function 8 102 8 2
Olay Alt Programları Kullanıcıların tanımladığı altprogramların yanında kontollerin kendi altprogramları vardır. Kontrol ile ilgili bir işlemde (örneğin : form yüklendiğinde, buton tıklandığında, metin değiştiğinde, bir tuşa basıldığında, fare üzerinde dolaştığında vb. ) bu olay alt programları çalışır. Private Sub KontrolAdi_Olay([Giriş Parametreleri As Tipi]) End Sub
Kontrol Dizileri Eğer kontroller dizi olarak tanımlanmışsa bu durumda dizideki bütün kontrollerin olay alt programları aynı olacaktır. Burada farklı olarak kullanılan index bu olayın dizideki hangi kontrol tarafından çağrıldığını belirler. Kontrol dizileri, birden çok kontrol üzerinde döngüler yardımıyla işlem yapılmasına imkan sağlar. Private Sub KontrolAdi_Olay([index as integer][Giriş Parametreleri As Tipi]) End Sub
Kontrol Dizisi Örneği