VISUAL BASIC 6.0
Yordamlar (Procedures)
ResimLi Anlatım
Yordamlar aslında bize o kadar da yabancı değil cunku bu gune kadar uygulamalarımızda farkında olmadan bir cok olay yordamı kullandık orneğin "Command1" adlı komut duğmemiz "Click" olayını algıladığı zaman yapacağı işlemleri,

[IMG]http://by_netur.*********.com/visual_basic/1.jpg[/IMG]

şeklinde gosteriyorduk. 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 icine cok uzun kodlar yazmak zorunda kalırız bu da bize hata yakalamada ve programa hakim olmamızda zorluk cıkarır işte bu durumda yazacağımız kodları unitelere bolerek bunları yordam olarak tanımlarız ve olay yordamından oluşturduğumuz kodlar zincirini cağırırız. Bu unitelere 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 icinde tanımlı ve gecerli olan yordamlardır
B.) Modul Yordamları : Bunlar moduller icinde kayıtlıdırlar ve butun formlar tarafından cağırılabilirler

Yordamlar kendi iclerinde dort kısıma ayrılırlar; 1.) Function tipi yordamlar : Bu tip yordamlar bir değer hesaplayarak bunu geri gonderirler
2.) Sub Tipi yordamlar : Bunlar belli bir değer gondermezler sadece tanımlanan işlemi yerine getirirler
3.) Property tipi yordamlar : Bunlar VB bileşenlerine ek ozellikler 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 icin "kod penceresini" actıktan sonra Tools / Add Procedure seceneğini seceriz



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 Ozel (Private) mi olduğunu belirtiriz. Eğer yordamımız Genel ise bu yordama programımızın her yerinden ulaşabiliriz ama Ozel ise sadece bulunduğu formdan ulaşılabilir.Genel olarak tanımlanmış bir yordama diğer formlardan ulaşmak icin yordamın bulunduğu formu referans vermek gereklidir. Orneğin,

FormAdi.KDVliFiyat() gibi

B.) Modul Yordamları

Yazdığımız kod parcalarını eğer formlardan bağımsız olarak yazarsak bunları daha sonra geliştireceğimiz diğer uygulamalar icerisinde de kullanabiliriz bu sayede zamandan buyuk tasarruf etmiş oluruz bunu yapabilmek icin ise yazdığımız yordamları bir modul icine kayıt etmeliyiz VB 'de bunu "Project / Add Module" seceneğini tıklayarak projemize bir modul ekleyerek daha sonrada yordamlarımızı buraya yazarak gercekleştirebiliriz. Modul icerisine yazdığımız yordamlar butun formlar tarafından cağırılabilir eğer bazı yordamların sadece bulunduğu modul icerisinden cağırılmasını istiyorsak yordamın Hareket Alanını (Scope) Ozel (Private) olarak atamalıyız. Ornek verecek olursak DLL dosyaları icerisinde bir cok yordam bulunan modullerdir ( Bir DLL dosyasının nasıl oluşturulacağı konusunu ileriki derslerimizde oğ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 gonderebilen yordamlar olduğundan bahsetmiştik isterseniz şimdide kullanım şeklini verdikten sonra bunu bir ornekle pekiştirelim

[IMG]http://by_netur.*********.com/visual_basic/2.jpg[/IMG]

Kısım Ve Acıklamar:

Public:İsteğe bağlı. Yordamımızın butun formlar ve moduller tarafından cağırılabileceğini gosterir

Private:İsteğe bağlı. Yordamımızın sadece bulunduğu formdan veya modulden cağırılabileceğini gosterir

Friend:İsteğe bağlı. Sadece Class Modul (*) icerisinde kullanılabilir. Yordamımız projemiz tarafından cağırılabilir fakat bileşenler tarafından cağı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

ArgumanListesi:İsteğe bağlı. Yordamımızda kullanacağımız değişken vb. neler olduğunu tanımlar eğer birden fazla arguman kullanacaksak bunlar birbirinden virgul ile ayrılır

ifadeler:İsteğe bağlı. Yordamımızda calışmasını istediğimiz kod parcaları



* Class Modullerinin neler olduklarını "Bir DLL dosyasının nasıl oluşturabiliriz" adlı dersimizde oğreneceğiz Şimdi de kucuk bir iki ornekle oğrendiklerimizi pekiştirelim

[IMG]http://by_netur.*********.com/visual_basic/3.jpg[/IMG]





Yukarda ki orneğimizde Function tipi yordamımız "BombaSayisi" değişkenine bağlı olarak kac kişinin oleceğini hesaplayan ve bu hesapladığı değeri MsgBox fonksiyonuna geri gonderen bir yordam sanırım burada Function tipi yordamların geriye nasıl değer gonderdiği acıkca goruluyor



Şimdi de notlarımızın ortalamasını hesaplayan bir program yazalım

[IMG]http://by_netur.*********.com/visual_basic/4.jpg[/IMG]

[IMG]http://by_netur.*********.com/visual_basic/5.jpg[/IMG]



2.) Sub Tipi yordamlar Sub tipi yordamların kullanım şekli aşağıdaki gibidir

[IMG]http://by_netur.*********.com/visual_basic/6.jpg[/IMG]

Bu tip yordamların sadece belirli bir işlemler dizisini yerine getiren yordamlar olduğundan bahsetmiştik isterseniz şimdi bunları bir kac ornekle pekiştirelim

[IMG]http://by_netur.*********.com/visual_basic/7.jpg[/IMG]

Yukarda ki orneğimizde Sub tipi yordamımız geriye değer gonderemediği icin sonucu gene "Toplam" yordamı icerisinden MsgBox fonksiyonu ile goruntuluyoruz. Sub tipi yordamları genelde dosya işlemlerinde (acma,kapatma,kaydetme vb) ve veritabanı işlemleri gibi geriye değer gonderilmesi zorunlu olmayan durumlarda kullanıyoruz


3.) Property tipi yordamlar

Bu tip yordamların detaylı acıklamasını "Bir OCX dosyası nasıl oluşturulur" adlı dersimizde ele alacağız.

Yordamlarla Haberleşme Yontemleri

Yordamlara haberleşmek icin kullanılan argumanların yordama gonderilmesi icin kullanılan iki yol vardır bunlar "Değer" ile arguman gonderme ve "Referans" ile arguman gonderme

Değer (ByVal) ile arguman gonderme

Bu metot kullanılırsa cağıran programın gonderdiği değerin bir kopyası cağırılan program icerisinde oluşturulur cağırılan program icinde, değişkenin değeri değişse bile cağıran program icerisindeki değer bundan etkilenmez. Bu tip işlemlerde anahtar sozcuk "ByVal" 'dır

[IMG]http://by_netur.*********.com/visual_basic/8.jpg[/IMG]


Orneğimizde de gorulduğu 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 Yazımınızı bitiriyoruz.

Huseyin Biteker
[email protected]
Duzenleyen Baksana59

__________________