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