Visual Basic 6.0: Yordamlar (Procedures)
Bu ayki Visual Basic köşesinin konusu yordamlar. Visual basic öğretmenin yanında "SAVAŞA HAYIR" mesajını da veren bu yazının hoş mesajını destekliyoruz.
Bu ayki konumuz olan Yordamlar aslında bize o kadar da yabancı değil çünkü bu güne kadar uygulamalarımızda farkında olmadan bir çok olay yordamı kullandık örneğin "Command1" adlı komut düğmemiz "Click" olayını algıladığı zaman yapacağı işlemleri,
Private Sub Command1_Click() olay algılandığında yapılacak olan işlemler End Sub |
şeklinde gösteriyorduk. Burada olay yordamımız "Private Sub" ile başlıyor ve "End Sub" ile bitiyor. Programımızı yazarken bazen bir olay yordamının içine çok uzun kodlar yazmak zorunda kalırız bu da bize hata yakalamada ve programa hakim olmamızda zorluk çıkarır işte bu durumda yazacağımız kodları ünitelere bölerek bunları yordam olarak tanımlarız ve olay yordamından oluşturduğumuz kodlar zincirini çağırırız. Bu ünitelere de genel yordamlar ismini veririz dolayısıyla genel yordamlar bir olaya bağlı olmaksızın geliştirilen yordamlar olur. Genel yordamlar bulundukları ortam bakımından ikiye ayrılırlar
A.) Forma bağlı genel yordamlar : Bunlar form içinde tanımlı ve geçerli olan yordamlardır
B.) Modül Yordamları : Bunlar modüller içinde kayıtlıdırlar ve bütün formlar tarafından çağırılabilirler
Yordamlar kendi içlerinde dört kısıma ayrılırlar;
1.) Function tipi yordamlar : Bu tip yordamlar bir değer hesaplayarak bunu geri gönderirler
2.) Sub Tipi yordamlar : Bunlar belli bir değer göndermezler sadece tanımlanan işlemi yerine getirirler
3.) Property tipi yordamlar : Bunlar VB bileşenlerine ek özellikler eklemeye yarayan yordamlardır bu sayede yeni bileşenler oluşturma imkanı verirler.
4.) Event tipi yordamlar : Bir olay algılandığında tanımlanmış olan işlemi yerine getirir
A.) Forma bağlı genel yordamlar
Bu tip yordamları oluşturmak için "kod penceresini" açtıktan sonra Tools / Add Procedure seçeneğini seçeriz
karşımıza gelen ekranda ise "Name" kısmına yordamımızın ismini sonrada tipini (Type) belirleriz. Hareket alanı (Scope) kısmında ise yordamımızın Genel (Public) ya da Özel (Private) mi olduğunu belirtiriz. Eğer yordamımız Genel ise bu yordama programımızın her yerinden ulaşabiliriz ama Özel ise sadece bulunduğu formdan ulaşılabilir.Genel olarak tanımlanmış bir yordama diğer formlardan ulaşmak için yordamın bulunduğu formu referans vermek gereklidir. Örneğin,
FormAdi.KDVliFiyat() gibi
B.) Modül Yordamları
Yazdığımız kod parçalarını eğer formlardan bağımsız olarak yazarsak bunları daha sonra geliştireceğimiz diğer uygulamalar içerisinde de kullanabiliriz bu sayede zamandan büyük tasarruf etmiş oluruz bunu yapabilmek için ise yazdığımız yordamları bir modül içine kayıt etmeliyiz VB 'de bunu "Project / Add Module" seçeneğini tıklayarak projemize bir modül ekleyerek daha sonrada yordamlarımızı buraya yazarak gerçekleştirebiliriz. Modül içerisine yazdığımız yordamlar bütün formlar tarafından çağırılabilir eğer bazı yordamların sadece bulunduğu modül içerisinden çağırılmasını istiyorsak yordamın Hareket Alanını (Scope) Özel (Private) olarak atamalıyız. Örnek verecek olursak DLL dosyaları içerisinde bir çok yordam bulunan modüllerdir ( Bir DLL dosyasının nasıl oluşturulacağı konusunu ileriki derslerimizde öğreneceğiz) ve biz bir program yazarken Windows 'un bazı DLL dosyalarını kullanarak bunları tekrardan yazma zahmetinden kurtuluruz.
1.) Function tipi yordamlar
Function tipi yordamların geriye değer gönderebilen yordamlar olduğundan bahsetmiştik isterseniz şimdide kullanım şeklini verdikten sonra bunu bir örnekle pekiştirelim
[Private | Public | Friend] [Static] Function isim [(ArgümanListesi)] [ifadeler] [Exit Sub] [ifadeler] End Sub |
Kısım | Açıklama |
Public | İsteğe bağlı. Yordamımızın bütün formlar ve modüller tarafından çağırılabileceğini gösterir |
Private | İsteğe bağlı. Yordamımızın sadece bulunduğu formdan veya modülden çağırılabileceğini gösterir |
Friend | İsteğe bağlı. Sadece Class Modül (*) içerisinde kullanılabilir. Yordamımız projemiz tarafından çağırılabilir fakat bileşenler tarafından çağırılamaz |
Static | İsteğe bağlı. Yordamımızda ki yerel değişkenlerin değerlerini koruyacağını belirtir. |
isim | Gerekli. Yordamımıza vereceğimiz isim |
ArgümanListesi | İsteğe bağlı. Yordamımızda kullanacağımız değişken vb. neler olduğunu tanımlar eğer birden fazla argüman kullanacaksak bunlar birbirinden virgül ile ayrılır |
ifadeler | İsteğe bağlı. Yordamımızda çalışmasını istediğimiz kod parçaları |
* Class Modüllerinin neler olduklarını "Bir DLL dosyasının nasıl oluşturabiliriz" adlı dersimizde öğreneceğiz
Şimdi de küçük bir iki örnekle öğrendiklerimizi pekiştirelim
PrivateSub Command1_Click() MsgBox Olecek_Kisi_Sayisi(InputBox("Bomba Sayısını Giriniz", "Savaşa Hayır")) End Sub Public Function Olecek_Kisi_Sayisi(BombaSayisi As Long) |
Yukarda ki örneğimizde Function tipi yordamımız "BombaS
ayisi" değişkenine bağlı olarak kaç kişinin öleceğini hesaplayan ve bu hesapladığı değeri MsgBox fonksiyonuna geri gönderen bir yordam sanırım burada Function tipi yordamların geriye nasıl değer gönderdiği açıkça görülüyor
Şimdi de notlarımızın ortalamasını hesaplayan bir program yazalım
Private Sub Form_Load() Me.Caption = "Not Hesaplama" End Sub Private Sub Command1_Click() Matematik = Hesapla("A", 5) Ortalama = (Matematik + Ingilizce + Turkce + Tarih) / 11 MsgBox Ortalama Public Function Hesapla(Notu As String, Saat As Integer) As Double |
2.) Sub Tipi yordamlar
Sub tipi yordamların kullanım şekli aşağıdaki gibidir
[Private | Public | Friend] [Static] Sub isim [(ArgümanListesi)] [ifadeler] [Exit Sub] [ifadeler] End Sub |
Bu tip yordamların sadece belirli bir işlemler dizisini yerine getiren yordamlar olduğundan bahsetmiştik isterseniz şimdi bunları bir kaç örnekle pekiştirelim
Private Sub Command1_Click() Topla 15, 10 End Sub Private Sub Topla(x As Integer, y As Integer) |
Yukarda ki örneğimizde Sub tipi yordamımız geriye değer gönderemediği için sonucu gene "Toplam" yordamı içerisinden MsgBox fonksiyonu ile görüntülüyoruz. Sub tipi yordamları genelde dosya işlemlerinde (açma,kapatma,kaydetme vb) ve veritabanı işlemleri gibi geriye değer gönderilmesi zorunlu olmayan durumlarda kullanıyoruz
3.) Property tipi yordamlar
Bu tip yordamların detaylı açıklamasını "Bir OCX dosyası nasıl oluşturulur" adlı dersimizde ele alacağız.
Yordamlarla Haberleşme Yöntemleri
Yordamlara haberleşmek için kullanılan argümanların yordama gönderilmesi için kullanılan iki yol vardır bunlar "Değer" ile argüman gönderme ve "Referans" ile argüman gönderme
Değer (ByVal) ile argüman gönderme
Bu metot kullanılırsa çağıran programın gönderdiği değerin bir kopyası çağırılan program içerisinde oluşturulur çağırılan program içinde, değişkenin değeri değişse bile çağıran program içerisindeki değer bundan etkilenmez. Bu tip işlemlerde anahtar sözcük "ByVal" 'dır
Private Sub Command1_Click() y = 15 Deger y MsgBox y, , "y" End Sub Public Sub Deger(ByVal d As Integer) |
Örneğimizde de görüldüğü gibi "y" değeri değişmemiş sadece "d" değeri değişmiştir.Eğer "ByRef" kullansaydık bu durumda "y" değeri de 14 olacaktı bunun uygulamasını da sizlere bırakarak bu ayki yazımı bitiriyorum
Sevgiyle Kalın,