Sub Procedure


Pada bagian sebelumnya kita telah membahas tentang function dan pemakaiannya, selanjutnya kita akan melihat Sub yang menyerupai Function, dimana perbedaannya adalah jika function digunakan untuk proses yang mengembalikan nilai kepada pemanggil, sedangkan Sub cenderung digunakan untuk proses yang tidak mengembalikan nilai.


Sub name [(arglist)] 
   [ statements ]
   [ Exit Sub ]
   [ statements ]
End Sub
 

Catatan :

Sebagaimana function, sebenarnya sub juga dapat digunakan untuk proses yang mengembalikan nilai melalui argumen yang dikirim secara ByRef.

Jika Exit Sub digunakan, maka Sub akan kembali ke pemanggil secara tidak bersyarat.


Contoh :

Option Explicit On
Imports System
Imports Microsoft.VisualBasic
Public Module ModArr
    Public Arr() As Integer
    Public Jd As Byte
    Sub BacaJd()
        Console.Write("Masukkan Jumlah Data :")
        Jd = Console.ReadLine()
    End Sub
    Sub BacaData()
        ReDim Arr(Jd-1)
        For I As Byte = 0 To UBound(Arr)
            Console.Write("Data Ke -{0} :",I+1)
            Arr(I) = Console.ReadLine()
        Next I
    End Sub
    Sub CariRataRata()
        Dim Total As Long = 0
        For I As Byte = 0 To UBound(Arr)
            Total +=Arr(I)
        Next I
        Console.WriteLine("Nilai Rata-rata : {0}",Total/Jd)
    End Sub
    Sub Main()
        BacaJd()
        BacaData()
        CariRataRata()
    End Sub
End Module

Teknik Rekursi pada Visual Basic

Dalam matematika, kita sering menjumpai formula yang mengandung rekursi, misalnya pada perhitungan nilai faktorial dari suatu bilangan yang dapat diformulasikan sebagai berikut :

            N! = N x (N-1)!

            Dimana 1! = 1.

Sehingga secara pemrograman komputer dapat ditulis sebagai berikut :

Option Explicit On
Imports System
Public Module modFak
   Function Fak(N as Byte)
      If (N > 1) Then
         Return N * Fak(N-1)
      Else
         Return 1
      End If
   End Function
   Sub Main()
       Console.WriteLine("Faktorial dari {0} adalah {1}",5,Fak(5))
   End Sub
End Module