Anda di halaman 1dari 15

1

Pertemuan 04. Prosedur dan Fungsi


Prosedur dan fungsi merupakan blok program yang dapat dipanggil dalam sebuah program
aplikasi. Untuk penggunaan prosedur dapat dilakukan hanya dengan memanggil nama prosedur
tersebut. Dengan prosedur penulisan program menjadi lebih modular dan terstruktur. Prosedur
tidak mengembalikan nilai sedangkan fungsi mengembalikan nilai. Secara garis besar ada tiga
jenis prosedur yaitu : Sub prosedur, Function prosedur dan event prosedur.

4.1 Sub Prosedur
Pada Sub prosedur dapat memiliki parameter ataupun tidak. Parameter tersebut bisa
berjumlah lebih dari satu. Pernyataan yang ada didalam prosedur akan dieksekusi ketika
prosedur tersebut dipanggil. Sebuah prosedur didefinisikan dengan kata kunci Sub dan End Sub.
Prosedur dapat ditulis pada module, class atau structure. Penentu akses dari prosedur adalah
private, protected, Friend, dan Public. Secara default penentu akses prosedur adalah public
artinya prosedur dapat dipanggil dari mana saja di dalam proyek tersebut. Parameter pada
prosedur ada dua jenis yaitu : ByVal dan ByRef. Parameter ByVal nilai yang dimasukkan dalam
prosedur hanya berubah pada prosedur tersebut sedangkan diluar prosedur nilai tersebut tidak
akan berubah.

Cara memanggil prosedur :
Call [nama_prosedur] ([parameter])

Format penulisan Sub prosedur adalah sebagai berikut :
Sub procedure-name(parameter-list)
declarations and
statements
End Sub

Contoh penggunaan
prosedur :


4.2 Function Prosedur
Hampir sama dengan sub prosedur, namun pada fungsi terdapat nilai kembalian. Fungsi dapat
dibuat sendiri ataupun menggunakan fungsi yang sudah disediakan oleh VB.NET.

Cara memanggil Fungsi
2

Cara pemanggilan fungsi yang dibuat sendiri atau fungsi yang sudah disediakan oleh VB.NET
sama saja yaitu :
[nama_variabel_penampung] = [nama_fungsi] ( parameter)


Format penulisan Fungsi :
Function procedure-name(parameter-list) As return-type
declarations and statements
Return expression
End Function

Atau
Function name [(arg-list)] [As type ]
declarations and statements
[exit Function]
[statements]
End Function


Contoh Penggunaan Fungsi :

3




Beberapa fungsi yang telah tersedia pada VB.NET



4.3 Option Strict
Visual basic menyediakan beberapa cara untuk mengendalikan data type. Pilihan pertama
adalah pada saat Option Explicit On maka pendeklarasian semua variabel sebelum digunakan
didalam program harus dilakukan untuk menghindari kesalahan. Pilihan kedua adalah :
mengubah nilai default option sctric yang biasanya adalah off. Option strict berfungsi untuk
mengurangi waktu debugging dan meningkatkan clarity dari program.

Pada saat option strict di set menjadi on maka compiler akan memeriksa semua konversi,
sehingga programmer harus melakukan conversi secara ekspilisit untuk menghidari hilangnya
data (misalnya konversi dari double menjadi integer) atau program tiba-tiba akan berhenti bila
terjadi conversi data dari string hello menjadi integer.

Contohnya adalah penggunaan method Convert yang mensyaratkan agar perubahan tipe data
dilakukan secara eksplisit. Misalnya untuk menyimpan input bertipe string kedalam sebuah
variabel angka yang bertipe interger( yang direpresentasikan dalam VB.NET sebagai TYPE Int32,
32-bit integer). Pada saat option explicit di set menjadi ON maka kita gunakan perintah sebagai
berikut :

number = convert.ToInt32(textbox1.text)

namun pada saat option explicit di set menjadi off maka VB akan melakukan conversi tersebut
secara implisit. Jika data yang dikonversikan tidak sesuai dengan tipe data yang baru maka,
akan terjadi kesalahan runtime.

Untuk mengaktifkan Option Strict adalah sebagai berikut :
4


Programmer juga dapat membuat option strict on hanya untuk sebagian file, pembuatannya
diletakkan pada bagian code program , dengan mengetikkan :

Option strict on

Lalu letakkan kata tersebut di bagian paling atas dari program, sebelum deklarasi atau
statement imports.

4.4. ByVal dan ByRef
ByVal adalah default keyword yang baru untuk method parameter. Visual Studio akan
menambahkannya secara otomatis ketika anda membuat method parameter. Jika parameter
pada method di deklarasikan ByVal berarti nilai dari parameter tersebut adalah kopian dari nilai
parameter method pemanggil. Jadi ketika parameter pada method diubah maka tidak
berpengaruh ke parameter method pemanggil.
Lain halnya jika anda menggunakan keyword ByRef, dengan ByRef maka parameter pada
method mereferensi ke object yang sama dengan parameter pada method pemanggil, maka
jika parameter pada method berubah ini juga berpengaruh ke parameter di method pemanggil.

Perbedaan ByVal dan ByRef
5

































Public Class ConValRef
Function LuasPersegi(ByRef panjang As Double,ByRef lebar As Double) As
Double
panjang += 2
lebar += 2
Return panjang * lebar
End Function

Function Segitiga(ByVal alas As Double, _
ByVal tinggi As Double) As Double
alas += 2
tinggi += 2
Return 0.5 * alas * tinggi
End Function

Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click

Dim alas As Double = 12
Dim tinggi As Double = 14
'ByVal = nilai dari method pemanggil dicopy ke method
Dim luas As Double = Segitiga(alas, tinggi)
ListBox1.Items.Add(luas.ToString)
'tetap bernilai 12 walaupun pada method ditambah 2
ListBox1.Items.Add(alas.ToString)
'tetap bernilai 14 walaupun pada method ditambah 2
ListBox1.Items.Add(tinggi.ToString)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button2.Click

Dim panjang As Double = 12
Dim lebar As Double = 14
'karena menggunakan ByRef maka parameter pada
'method pemanggil mempunyai referensi yang
'sama dengan parameter pada function, jika
'nilai parameter pada function dirubah maka
'nilai variabel pada method pemanggil juga berubah
Dim luas As Double = LuasPersegi(panjang, lebar)
ListBox2.Items.Add(luas.ToString)
'menjadi 14 karena ditambah 2 pada function

ListBox2.Items.Add(panjang.ToString)
'menjadi 16 karena ditambah 2 pada function
ListBox2.Items.Add(lebar.ToString)
End Sub
End Class
6





Perbedan antara ByRef dan ByVal secara sederhana adalah :
1. ByRef = Parameter yang dikirimkan adalah object sehingga perubahan Nilai dari object
tersebut yang diolah/diubah pada sub/function akan berakibat mengubah juga nilai dari
object tersebut secara langsung.
2. ByVal = Parameter yang dikirimkan adalah Nilai dari sebuah object sehingga anda tidak
dapat mengubah Nilai Object tersebut, anda hanya dapat mengolah/mengubah nilai
object tersebut di dalam sub/function saja, setelah sub/function tersebut selesai,
perubahan nilai object di sub/function tidak akan mengubah nilai object yang
sebenarnya.
contoh :

Dim a As Integer = 0
Dim b As Integer = 0
Sub ubahnilai(ByVal a As Integer, ByRef b As Integer)
a = 100
b = 500
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click

Call ubahnilai(a, b)
Label4.Text = a
Label3.Text = b
End Sub

Penjelasan dari contoh diatas adalah :
1. Pertama deklarasi variable a dan b dengan default value = 0
2. Panggil fungsi untuk mengubah nilai, b dikirim dengan ByRef (berarti object b nya yang
dikirim) sedangkan a dengan ByVal (berarti nilai a nya yang dikirim yaitu 0)
3. Fungsi tersebut mengubah nilai a menjadi 100 dan b menjadi 500
4. Setelah fungsi itu selesai, kita test nilai variable a dan b dengan menampilkannya ke
label dan hasilnya adalah B=500 (Berubah) dan A=0 (tetap)
7


Pertemuan 06. Pencarian dan Pengurutan dalam Array
Untuk menyimpan data yang besar dapat dilakukan pada database. Kita ketahui bahwa dengan
database maka tipe data seperti apa saja dapat disimpan. Namun tidak semua aplikasi
memerlukan database untuk menyimpan data-datanya. Misalnya saja untuk menyimpan
banyak data mengenai daftar alamat seseorang beserta nomor-teleponnya, maka kita dapat
saja tidak menggunakan database untuk menyimpan data tesebut, sebagai gantinya kita dapat
menyimpan data-data tersebut dapat saja menyimpannya dalam sebuah arraylist. Class
System.Array pada VB.Net menyediakan method untuk melakukan pengurutan dan pencarian
elemen-elemen pada array.

5.1 Melewatkan Array kedalam sebuah prosedur
Untuk melewatkan sebuah array kedalam sebuah prosedur, tentukan nama dari array tanpa
menggunakan tanda kurung. Sebagai contoh :



















'Option Explicit On
'Imports System
'Imports Microsoft.VisualBasic

Dim Digit() As Byte = {0, 1, 2, 3, 4, 5}
Public Module ModArr
Function sumArray(ByVal ParamArray Digit() As Byte)
Dim Total As Long = 0
For I As Integer = 0 To UBound(Digit)
Total += Digit(I)
Next I
Return Total
End Function

Sub Main()
MsgBox(" Total adalah " & sumArray(Digit),
MsgBoxStyle.Information, " Array dalam Prosedur")
End Sub
End Module

Public Class Form1
Private Sub Button1_Click(ByVal sender As
System.Object, ByVal e As system.EventArgs) Handles
Button1.Click
Call Main()
End Sub
End Class
8




Hasil interface :


6.1 Pengurutan Array
Pengurutan adalah : pengaturan data menjadi kedalam suatu urutan tertentu seperti
berdasarkan urutan terbesar atau terkecil yang bertujuan untuk memudahkan dalam
mengakses suatu data. Contohnya adalah pengurutan nama perserta matakuliah pemrograman
visual berdasarakan nim terbesar.

Secara garis besar berasar data yang akan diurutkan, pengurutan dibedakan menjadi dua yaitu :
pengurutan terhadap array dan pengurutan terhadap file sekuensial. Pengurutan terhadap
array disebut juga sebagai pengurutan internal (internal sorting) karena array disimpan didalam
ruang penyimpanan internal komputer (memory) yang cepat dan memungkinkan akses
secara acak dengan memanfaatkan indeks array. Sedangkan jenis pengurutan kedua disebut
sebagai pengurutan eksternal (external sorting) karena file disimpan dalam ruang penyimpanan
eksternal yang didasarkan pada pergerakan piranti secara mekanik,seperti floppy disk atau hard
disk.

Perbedaan kedua jenis pengurutan tersebut dapat dijelaskan dengan contoh pengurutan kartu-
angka. Pengurutan internal dapat diilustrasikan seperti mengurutkan sekumpulan kartu-angka-
diasosiasikan dengan array- yang disebar di depan orang yang mengurutkan sehingga dapat
diakses satu persatu. Lihat gambar


Pengurutan eksternal dapat digambarkan seperti mengurutkan kartu-angka yang masih dapat
dibagi beberapa tumpukan, sehingga yang dapat dilihat hanya kartu teratas.
9


Ada beberapa algoritma yang dapat digunakan untuk melakukan pengurutan antara lain adalah
: Bubble sort, selection short, shell sort, quick short dan lain sebagainya.

Pertimbangan ketika akan melakukan sorting antara lain : 1) perlu tidaknya data disorting,
2)Besarnya atau banyaknya data yang akan disortir, 3)Kemampuan atau kapasitas komputer
atau media penyimpanan datanya. 4) metode sortir yang digunakan.

6.1.1 Bubble sort
Bubble sort merupakan algoritma pengurutan yang paling lambat diantara lainnya. Namun
merupakan algoritma pencarian yang paling mudah untuk dipahami dan digunakan. Metode ini
menggunakan serangkaian perbandingan dan operasi pertukaran sampai semua item data
mencapai kondisi urut. Sebagai contoh lihat gambar berikut :

Bubble Sort
Dimisalkan ingin dilakukan pengurutan nilai integer berdasarkan nilai yang paling kecil hingga
yang paling besar. Untuk setiap putaran setiap pasang elemen yang bersebelahan akan
dibandingkan nilainya dan isinya akan ditukar jika nilainya tidak membentuk urutan seperti
yang dimaksud. Proses ini diulang-ulang hingga beberapa putaran proses, dan akan berhenti
sampai dicapai kondisi urut untuk semua item. Pada gambar terlihat bahwa nilai yang lebih
besar akan bergeser ke kanan sedangkan nilai yang lebih kecil akan bergeser ke sebelah kiri. Ini
terjadi karena nilai-nilai ini bergerak berkali-kali melewati daftar, saling membandingkan nilai-
nilai yang bersebelahan, dan menukar tempatnya jika nilai yang disebelah kiri lebih besar
daripada nilai disebelah kanan. Sebagai contoh adalah penambahan nilai pada list (yaitu nilai 2
dan 72). Dari gambar terlihat pergerakan nilai 72, dari awal array hingga menuju pertengahan
array.


10









Algoritma Bubble Sort :


6.1.2. Selection Sort (pengurutan dengan pemilihan)
Ide dasar pengurutan dengan pemilihan adalah mencari nilai ekstrim dalam array dan
menukarkannya dengan elemen terujung. Elemen terujung tidak diikutkan dalam proses
selanjutnya. Hal yang sama dilakukan pada array sisanya. Pemilihan nilai ekstrim tersebut
tergantung pada hasil akhir pengurutan yang diinginkan. Jika hasil akhir pengurutan yang
diinginkan array terurut mengecil maka nilai ekstrim yang dipilih adalah nilai terbesar, dan
sebaliknya. Ilustrasi dan Algoritma pengurutan dengan seleksi adalah sebagai berikut :
Pada VB.NET
Function BubbleSort(ByVal ArraySementara As Integer)
Dim Temp As Integer
Dim i As Integer
Dim tidakberubahs As Integer

'loop hingga tidak ada lagi perubahan yang dibuat.
Do
tidakberubahs = True

' Loop dilakukan untuk setiap elemen didalam array

For i = 0 To UBound(nilai) - 1

' Jika elemen dengan indeks yang lebih kecil
' nilainya lebih besar dari nilai pada indeks disebelahnya
' maka tukarkan kedua elemen tersebut.

If nilai(i) > nilai(i + 1) Then
tidakberubahs = False
Temp = nilai(i)
nilai(i) = nilai(i + 1)
nilai(i + 1) = Temp
End If
Next i
Loop While Not (tidakberubahs)
End Function
11


Selection Sort



























Pada VB.Net
Public Function selectionsort(ByVal arraysementara As Integer)
Dim MaxVal As Integer 'nilai maksimal
Dim MaxIndex As Integer 'indeks nilai maksimal
Dim i, j As Integer

' lakukan langkah melewati setiap elemen dalam array
' dimulai dari elemen terakhir dalam array.

For i = UBound(nilai) To 1 Step -1

' Tetapkan nilai maksimal (MaxVal) pada elemen didalam array dan simpan indeks dari elemen ini
sebagai MaxIndex

MaxVal = nilai(i)
MaxIndex = i

' Lakukan looping melewati seluruh elemen yang tersisa untuk melihat Apakah ada elemen lain
yang lebih besar dari MaxVal.Jika ada maka tetapkan elemen ini sebagai elemen MaxVal yang
baru.
For j = 0 To i
If nilai(j) > MaxVal Then
MaxVal = nilai(j)
MaxIndex = j
End If
Next j

' JIka index dari elemen terbesar bukan i maka tukar elemen ini dengan elemen i.

If MaxIndex < i Then
nilai(MaxIndex) = nilai(i)
nilai(i) = MaxVal
End If
Next i
End Function
12


Code : Untuk VB.Net
Public Class Form1
' mendeklarasikan dan memberi nilai pada sebuah variabel array yang bernama nilai yang
bersifat global

Dim nilai() As Integer = {7, 4, 3, 1, 9, 8}

Function BubbleSort(ByVal ArraySementara As Integer)
Dim Temp As Integer
Dim i As Integer
Dim tidakberubahs As Integer

' loop hingga tidak ada lagi perubahan yang dibuat.
Do
tidakberubahs = True

' Loop dilakukan untuk setiap elemen didalam array
For i = 0 To UBound(nilai) - 1

' Jika elemen dengan indeks yang lebih kecil nilainya lebih besar dari nilai pada indeks
disebelahnya maka tukarkan kedua elemen tersebut.
If nilai(i) > nilai(i + 1) Then
tidakberubahs = False
Temp = nilai(i)
nilai(i) = nilai(i + 1)
nilai(i + 1) = Temp
End If
Next i
Loop While Not (tidakberubahs)
13

End Function

Public Function selectionsort(ByVal arraysementara As Integer)
Dim MaxVal As Integer 'nilai maksimal
Dim MaxIndex As Integer 'indeks nilai maksimal
Dim i, j As Integer

' lakukan langkah melewati setiap elemen dalam array dimulai dari elemen terakhir dalam
array.

For i = UBound(nilai) To 1 Step -1

'Tetapkan nilai maksimal (MaxVal) pada elemen didalam array dan simpan indeks dari elemen
ini sebagai MaxIndex

MaxVal = nilai(i)
MaxIndex = i

' Lakukan looping melewati seluruh elemen yang tersisa untuk melihat
' Apakah ada elemen lain yang lebih besar dari MaxVal.
' Jika ada maka tetapkan elemen ini sebagai elemen MaxVal yang baru.
For j = 0 To i
If nilai(j) > MaxVal Then
MaxVal = nilai(j)
MaxIndex = j
End If
Next j

' JIka index dari elemen terbesar bukan i maka tukar elemen ini dengan elemen i.
If MaxIndex < i Then
nilai(MaxIndex) = nilai(i)
nilai(i) = MaxVal
End If
Next i
End Function

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button1.Click
' lakukan selection Sorting pada array dan tampilkan nilainya secara terurut.
Dim i As Integer
selectionsort(nilai(i)) 'panggil fungsi selectionsort
For i = 0 To UBound(nilai)
ListBox2.Items.Add(nilai(i))
Next i
14

End Sub


Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button2.Click
Dim i As Integer
For i = 0 To nilai.GetUpperBound(0)
ListBox1.Items.Add(nilai(i))
Next
End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button3.Click
ListBox2.Items.Clear()
End Sub

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button4.Click
Dim i As Integer
BubbleSort(nilai(i)) ' panggil fungsi bubblesort
For i = 0 To nilai.GetUpperBound(0)
ListBox2.Items.Add(nilai(i))
Next
End Sub
End Class

Selain dengan menggunakan cara diatas, sorting juga dapat dilakukan dengan menggunakan
method yang sudah disediakan pada VB.NET dengan penjelasan seperti berikut :

Array.Sort(arrayName)












15

Berikut contoh :

















Private Sub Button3_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles Button3.Click
Dim people(4) As String
people(0) = ("Rod")
people(1) = ("Sergio")
people(2) = ("Terry")
people(3) = ("Homer")
people(4) = ("Eoin")
Dim txt As String = "People:" & vbCrLf
For i As Integer = 0 To people.Length - 1
txt &= " " & people(i).ToString() & vbCrLf
Next i
' Mengurutkan.
Array.Sort(people)
txt &= "Sorted:" & vbCrLf
For i As Integer = 0 To people.Length - 1
txt &= " " & people(i).ToString() & vbCrLf
Next i
MsgBox(txt & vbCrLf)
End Sub

Anda mungkin juga menyukai