Programlar farkli islemleri yerine getirmekten sorumlu alt programlardan olusur. Ana programla alt programlar arasindaki çalisma iliskisini basitçe su sekilde özetleyebiliriz:
Programin kodlarinin çalismasi esnasinda hangi islem gerçeklestirilecekse o islemden sorumlu alt program çalistirilir. Alt programin çalismasi bittikten sonra ana program kodlari çalistirilmaya devam edilir. Ayrica bir alt programdan baska bir alt program da çagrilabilir.
Programlarin alt programlardan olusmasinin çesitli yararlari vardir. Programlarda bazi islemler birden fazla gerçeklestirilir. Islemin gerçeklestirilecegi her yerde kodlari tekrar tekrar yazmaktansa kodlar alt program içine yazilir ve ne zaman bu kodlara ihtiyaç duyulursa alt program çagrilir ve kodlar çalistirilir.
Böylelikle alt programlar fazladan ve gereksiz kod yazimini azaltarak programlarin daha küçük boyutlu olmalarini saglar.
Alt programlarin kullanimini modüllerimizdeki sözlük bölümünün kullanimina benzetebiliriz. Modülü okumaya baslariz, karsimiza bilmedigimiz Ingilizce bir kelime çikinca sözlük bölümüne geçer, kelimenin Türkçe’sine bakar, tekrar kaldigimiz yerden okumaya devam ederiz. Okumaya devam ettikçe bilmedigimiz Ingilizce bir kelimeye her rastladigimizda sözlükten kelimenin anlamini ögrenir, ardindan modüle kaldigimiz yerden devam ederiz. Ingilizce kelimenin her geçtigi yerde Türkçe açiklamasini yazmakla ugrasmayiz.
Alt programlarin diger bir yarari karmasik, zor bir problemin çözümü için hazirlanan programin daha küçük parçalara ayrilmasini saglamasidir. Ayrica programda bir hata oldugunda programin hepsiyle ugrasmaktansa sadece hatali olan alt programla ugrasilarak zaman ve emekten tasarruf saglanmis olunur.
Programcilikta alt program kavramini ifade etmek için alt rutin, fonksiyon, prosedür, yordam kelimeleri de kullanilmaktadir. Alt programlar farkli programlama dillerinde farkli isimlerle kullanilirlar. VB.NET, belirli bir görevi, islemi gerçeklestirmek için kullanilan ve ana programa bir deger döndürmeyen alt programlar için Subroutine kelimesini (kisaca Sub), ana programa bir deger geri döndüren alt programlar için ise Function kelimesini kullanir.
Alt Programlar (Subroutines)
Bir eylemi yerine getirmek için kullanilan, ana programa deger göndermeyen alt programlara VB.NET’te subroutine adi verilir. Yazim biçimi asagidaki sekildedir :
Sub isim [parametreler]
Kodlar
End Sub
Alt program olusturma islemi Subroutine kelimesinin kisaltilmis hâli olan Sub kelimesiyle baslar. Ardindan alt programin ismi yazilir ve istenirse parantez içerisinde parametreler belirtilir. Parametreler sayesinde ana programdan veriler alt programa aktarilir.
Eger, gerçeklestirilen islem sonucunda geriye deger dönüsü istenmiyor ise Sub, geriye deger dönüsü isteniyorsa Function yapisi kullanilir...
Alt programlar, parametreler vasitasiyla alt program disindan degerler alir. Asagida bu durumla ilgili bir örnek verilmistir.
Parametre kullanimi zorunlu degildir. Son olarak kodlar yazilir ve end sub ifadesiyle alt program sonlandirilir. Alt programlarin kullanimiyla ilgili olarak toplama ve çikarma islemi yapmayi saglayan basit bir örnek yapalim.
Programimizin arayüzü ve kodlar :
Partial Class _Default
Inherits System.Web.UI.Page
Dim sonuc As Integer
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
If islem1.checked Then Toplama(sayi1.text, sayi2.text)
If islem2.Checked Then cikarma(sayi1.Text, sayi2.Text)
If islem3.Checked Then carpma(sayi1.Text, sayi2.Text)
If islem4.Checked Then bolme(sayi1.Text, sayi2.Text)
End Sub
Sub toplama(deger1 As Integer, deger2 As Integer)
sonuc = deger1 + deger2
sonuc_kutusu.Enabled = True
sonuc_kutusu.Text = sonuc
End Sub
Sub cikarma(deger1 As Integer, deger2 As Integer)
sonuc = deger1 - deger2
sonuc_kutusu.Enabled = True
sonuc_kutusu.Text = sonuc
End Sub
Sub bolme(deger1 As Integer, deger2 As Integer)
sonuc = deger1 * deger2
sonuc_kutusu.Enabled = True
sonuc_kutusu.Text = sonuc
End Sub
Sub carpma(deger1 As Integer, deger2 As Integer)
sonuc = deger1 / deger2
sonuc_kutusu.Enabled = True
sonuc_kutusu.Text = sonuc
End Sub
Sub goster(sender As Object)
Button1.Visible = True
Button2.Visible = True
Button3.Visible = True
End Sub
Protected Sub Button4_Click(sender As Object, e As System.EventArgs) Handles Button4.Click
goster(sender)
End Sub
Sub gizle(sender As Object)
sender.visible = False
End Sub
Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
gizle(sender)
End Sub
End Class
Topla Checkbox;zina tiklandiginda islem1;in check edilip edilmedigi kontrolü gerçeklesiyor. Hangi kosul dogruysa ilgili subroutine 2 parametreyle çagiriliyor. Bu örnegimizdeki parametrelerimiz textbox’larin içerisine girilen degerler. Yani sayi1.text ve sayi2.text. Toplama ve Cikarma olarak olusturdugumuz 2 alt program, 2 parametre aliyor( hangi sirayla oldugu önemli ). Ve aldigi bu parametrelerle gerekli islemi gerçeklestirip, sonuckutusu.text ‘ e degeri atiyor. Yukaridaki örnekte if bloguyla kontrolü yapip ona göre islemleri de gerçeklestirebilirdik. Ancak yazdigimiz programlar uzadikça isler çok ama çok karisik bir hal alir bu yüzden alt programlanin mantigini çok iyi oturtmak gerekmektedir.
ve birde parametreler vasitasi ile bir deger alalim bu islemi class dosyamizda gerçeklestirelim....
Class1 dosyamiz ve içerigi;
Imports Microsoft.VisualBasic
Public
Class Class1
Public Sub özellik(ByVal ifade As Integer)
If ifade = 1 Then
MsgBox("Girilen deger 1", MsgBoxStyle.Information, "Uyari")
Else
MsgBox("1 degeri girmediniz", MsgBoxStyle.Exclamation, "Uyari")
End If
End Sub
End
Class
.aspx dosyamiz ve içerigi
Partial Class _Default
Inherits System.Web.UI.Page
Dim sonuc As Integer
Dim t_class As New Class1
Protected
Sub s_btn_Click(sender As Object, e As System.EventArgs) Handles s_btn.Click
t_class.özellik(TextBox1.Text)
End Sub
End Class
Örnek çalismayi buradan indirebilirsiniz...
Fonksiyonlar (Functions)
Alt programlarla benzer isleyisine sahip olan fonksiyonlarin alt programlardan farki,ana programa deger döndürmesidir. Alt programlar, tek baslarina bir eylemi yerine getirir,fonksiyonlar ise sadece çagrildiklari yere deger gönderirler. Fonksiyonlarin yazim biçimi asagidaki gibidir:
Function isim (parametreler) as veri tipi
Kodlar
End Function
Fonksiyon tanimlamasinda parametrelerden sonraki veri türü, döndürülecek verinin türünü tanimlamaktadir. Alt program kullanarak yaptigimiz toplaCikar.aspx uygulamasini simdi de fonksiyonlarla yapalim.
Partial
Class _Default
Inherits System.Web.UI.Page
Dim sonuc As Integer
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
If islem1.Checked = True Then sonuckutusu.Text = topla(TextBox1.Text, TextBox2.Text)
End Sub
Function topla(ByVal deger1 As Integer, ByVal deger2 As Integer) As Integer
sonuc = deger1 + deger2
Return sonuc
End Function
End Class
ve birde KrakterDüzelt fonksiyonumuzu inceleyelim...
Partial
Class _Default
Inherits System.Web.UI.Page
Dim sonuc As Integer
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
End Sub
Public Shared Function KarakterDuzelt(ByVal kelime As String) As String
Dim sonuc1 As String = kelime.Replace(" ", "_").Replace("ç", "c").Replace("g", "g").Replace("ü", "u").Replace("s", "s").Replace("""", "").Replace("ö", "o").Replace("i", "i").Replace("I", "i").Replace("I", "i").Replace("?", "_").Replace("Ü", "u").Replace("Ç", "c").Replace("G", "g").Replace("&", "_").Replace("-", "_").ToLower().Replace("'", "").Replace("(", "").Replace(")", "").Replace("/", "_").Replace(":", "_")
Return sonuc1
End Function
Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
Dim deneme1 As String
deneme1 = KarakterDuzelt(TextBox3.Text)
TextBox4.Text = deneme1
End Sub
End Class
' Karakter düzenle fonksiyonumuza Textbox3.Text;e içerilen degeri gönderiyor… Fonksiyon içerisindeki Dim sonuc as String = kelime.Replace programi çalistirilip ç harfini c harfine düzelterek sonuc1 degiskeni ile krakterdüzelt fonksiyonuna tekrar gönderiyor ve textbox3 deki ç harfi c harfine çevrilerek deneme1 degiskenine aktariyor oda Textbox4.Text;de yazdirma islemini gerçeklestiriyor...
Fonksiyonumuzu bir class üzerinden erismek istersek eger , bir örnek uygulama ile onuda anlatalim...
projemize bir Class(Sinif) dosyamizi ekliyoruz.
Class1 adindan class dosyamiz...
Imports Microsoft.VisualBasic
Public
Class Class1
Public Function Toplama(ByVal sayi1 As Integer, ByVal sayi2 As Integer) As Integer
Dim topla As Integer = sayi1 + sayi2
Return topla
End Function
End Class
.aspx dosyamizdan ise olusturdugumuz class dosyamizi cagirarak islemlerimizi gerçeklestiriyoruz...
Partial Class _Default
Inherits System.Web.UI.Page
Dim sonuc As Integer
Dim t_class As New Class1
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
If islem3.Checked = True Then sonuckutusu.Text = t_class.Toplama(TextBox1.Text, TextBox2.Text)
End Sub
ve islem sonucumuza bakiyoruz...
function ve Subroutines kavraminin genel olarak kullanimi bu sekildedir...
Örnek çalismayi buradan indirebilirsiniz.