" Umut, hiç görmeyen birine gökkuşağını anlatmak kadar zor ve imkansız... "

Categories

-

Vb.Net Nesne Yönelimli Programlama 1-d

Bir öncekli yazimizda vb.net programlama dili kullanilarak Sinif Uyeleri, Yordamlar, Return Deyimi, Parametreler ve Deger ve Referans yoluyla parametre aktarmak bahsetmistik. Simdi ise Yordamlara farkli sayida parametre gondermek, Yinelemeli / Rekürsif Yordamlar ve Main yordamina göz atacagiz.

1-h Yordamlara farkli sayida parametre gondermek

Yordamlara sadece belirlenmis sayida parametre gönderebiliriz. Eksik veya fazla parametre gönderdigimizde hata aliriz. Fakat, bazen kullanicinin degisken sayida parametre gönderebilecegi yordamlarada ihtiyaç duyariz. Örnegin kullanicinin belirledigi sayidaki degerlerin en büyügünü, en küçügünü, ortalamasini veya toplamasini bulacak bir yordam için sayisi belirlenmis bir parametre listesi olusturmamiz sorun olacaktir. Bunu iki sekilde çözebiliriz. Öncelikle parametre yapisi dizi olan bir yordam tanimlayacagiz; daha sonrada kullanicinin bu yordama tanimladigi bir diziyi göndermesini saglayacagiz ya da yordam parametrelerini ParamArray anahtar sözcügüyle tanimlayacagiz. Asagidaki örnekte kullanici kendisinin belirledigi sayida degeri dizi haline getirip OrtalamaAl() yordamina göndermektedir. Yordam, gelen degerin ortalamasini verir.

Module nyp
    Sub Main()
        Dim degerler() As Byte = {10, 20, 30}
        Dim ortalama As Byte
        ortalama = OrtalamaAl(degerler)
        Console.WriteLine("Sayilarin Ortalamasi : {0}", ortalama)
        Console.ReadLine()
    End Sub

    Function OrtalamaAl(ByVal sayilar() As Byte) As Byte
        Dim toplam As Byte
        For x = 0 To sayilar.Count - 1
            toplam += sayilar(x)
        Next
        Return toplam / sayilar.Count
    End Function
End Module

ParramArray sözcügü tek farki dizi tanimlamaniza gerek kalmamasidir. Diziye istedigimiz kadar parametre gönderebiliriz. Bir yordam için sadece bir ParamArray niteleyicisi kullanilabilir. Ek olarak ayni yordama yukaridaki gibi dizi de gönderebiliriz.

Module nyp
    Sub Main()
        Dim ortalama As Byte
        ortalama = OrtalamaAl(10, 20, 30)
        Console.WriteLine("Sayilarin Ortalamasi : {0}", ortalama)
        Console.ReadLine()
    End Sub

    Function OrtalamaAl(ParamArray sayilar() As Byte) As Byte
        Dim toplam As Byte
        For x = 0 To sayilar.Count - 1
            toplam += sayilar(x)
        Next
        Return toplam / sayilar.Count
    End Function
End Module

1-i Özyineli / Recursive Yordamlar

Kendi kendini çagiran fonksiyonlara özyineli (recursive) fonksiyon denilir. Özyineli fonksiyonlar, ileri bilgisayar uygulamalarinda çok kullanilir. Bilgisayar biliminin zor sayilan konularindan birisidir. Çogunlukla, döngülerle çözülebilen problemler, özyineli fonksiyonlarla çok daha kolay olarak çözülebilir. Özyineleme eylemi, problemi, en üstten baslayarak adim adim daha küçük parçalarina ayirir. Daha çok parçalanamayan en basit parçasina taban parçasi denilir. Özyineleme en üstten baslayarak tabana kadar iner. Sonra tabanda buldugu degeri geriye dogru en üste kadar tasir. Bu niteligi, döngülerden farklidir.

Bir çok programlama dili tarafindan desteklenen bu yöntemin en güzel örnegi bir sayinin faktöriyelinin bulunmasidir.

Imports System

Module Module1

    Public Function f(ByVal x As Byte) As Byte
        If x = 0 Then
            Return 1
        Else
            Return x * f(x - 1)
        End If
    End Function

    Sub Main()

        Dim x As Byte = 4
        Dim faktor As Byte = 0
        faktor = f(x)
        Console.WriteLine("{0}'nin faktöriyeli : {1} dir.", x, faktor)
        Console.ReadLine()

    End Sub

End Module

Birde 1'den 10'na kadar olan sayilarin toplaminin örnegini Recursive Fonksiyonu ile toplayalim.

Imports System

Module Module1

    Public Function topla(ByVal deger As Byte) As Byte

        If deger = 1 Then
            Return 1
        Else
            Return deger + topla(deger - 1)
        End If

    End Function

    Sub Main()

        Dim deger As Byte = 10
        Dim sonuc As Byte = 0
        sonuc = topla(deger)
        Console.WriteLine("1'den  {0} kadar kadar olan sayilarin toplami : {1} dir.", deger, sonuc)
        Console.ReadLine()

    End Sub

End Module


 

1) Döngü ve özyineleme eyleminde bir blok deyim sürekli tekrar edilir.
2) Her ikisi tekrari sona erdiren kodlara sahip olmalidir.
3) Döngü, onu kontrol eden mantiksal ifadenin degerinin olumsuz olma-
siyla sonlanir.
4) Yinelemede ise ardisik çagrilar, taban denilen en küçük parçaya eri-
since sonlanir.
5) Döngü bir yerde sonlanmiyorsa, sonsuz kez ayni isi yapabilir.
6) Benzer sekilde özyinemele eyleminde, çagrilar taban parçaya inemi-
yorsa, özyineleme sonsuz kez tekrarlanir.
7) Genel olarak döngüde, ayni degisken adresine her adimda bulunan
yeni deger yazildigi için daha az bellek kullanilir.
8) Özyinelemede ise, üstten baslayarak tabana ininceye kadar çagrilan
fonksiyon degerleri bellekte tutulur. Dolayisiyla, çagri sayisi arttikça,
bellek kullanimi artar.
9) Genellikle, özyineleme yöntemiyle çözülen her problem döngü ile de
çözülebilir.

Neden Özyineleme Kullanilir ?
Bunun iki yaniti olabilir:

1) Özyineleme yöntemiyle karmasik problemlerin çözümü, çogunlukla, döngülerle yapilan çözümlerden daha basit ve daha kisadir. Özyineleme yöntemi, karmasik problemi taban denilen en basit haline indirger, oradan baslayarak adim adim asil problemi çözer.

2) Bazi dillerde döngü yoktur, onun yerine kendi kendisini çagiran özyineli fonksiyonlar kullanilir.

1-j Main Yordami

Consol Uygulamalari hazirlarken baslangiç noktasi olarak Main Yordami kullaniliyor. Program çalismaya basladigi zaman Main() yordamina konumlanir ve islemeye ordan baslar. Eger projede Main() yordami içeren birden fazla sinif varsa projenin “Properties” bölümünde “Startup Object” alaninda programin ilk baslayacagi sinifin adi seçilmelidir.

  • 0
  • 1190
  • 0

- BUNLARIDA GÖZDEN GEÇİREBİLİRSİNİZ -

HENÜZ YORUM YAPILMAMIŞ !

Yorum yazın

HAKKIMDA

KONULARI TAKİP EDİN

SOSYAL AĞLAR

  • Mesajınızı Gonderin