Kamis, 12 Mei 2016

Array di VisualBasic

Mengenal Array di Visual Basic

Array adalah sekumpulan nilai data yang dikelompokkan dalam sebuah variabel. Array sendiri digunakan jika ada sebuah nilai data yang mempunyai tipe sama dan akan mendapatkan perlakukan yang sama. Misalnya kita mempunyai 100 data dengan tipe yang sama dan akan diperlakukan yang sama pula, maka lebih mudah menggunakan array dibanding 100 variabel yang berbeda.



Setiap nilai data di dalam array disebut elemen array dan masing-masing dibedakan dengan nomor indeks. Array sendiri dideklarasikan dengan cara yang sama dengan variabel, yaitu menggunakan perintah Dim, kemudian diikuti tanda kurung dan jumlah elemennya dikurangi satu (karena indeks dimulai dari angka nol)
Menggunakan Array
Sebuah array dideklarasikan dengan cara yang sama dengan variabel, yaitu menggunakan perintah Dim,
kemudian diikuti dengan tanda kurung dan jumlah elemen arraynya dikurangi 1 :
Dim nama_array(jumlah_elemen - 1) As tipe_data
Contoh :
Dim NamaSiswa(99) As String  Æ array NamaSiswa akan mempunyai elemen sebanyak 100 dengan
     nomer indeks mulai dari 0 s/d 99.
Selanjutnya untuk mengisi nilai data ke dalam array :
nama_array(no_indeks) = nilai_data
Contoh :
NamaSiswa(0) = “umar”
Namasiswa(1) = “fatimah”
Untuk “mengosongkan” nilai data, bisa menggunakan struktur kontrol For…Next :
For i = 0 To 99
      NamaSiswa(i) = “”
Next i
Lebih mudah bukan ?
Catatan :
ƒ  Agar nomer indeks array dimulai dari 1 (bukan 0), bisa menggunakan perintah Option Base 1
sebelum perintah Dim-nya, contoh :
Option Base 1
Dim NamaSiswa(100) As String
ƒ  Atau bisa juga menggunakan kata  To di dalam penentuan jumlah elemen array, contoh :
Dim NamaSiswa(1 To 100) As String
ƒ  Untuk mengetahui berapa jumlah elemen di dalam sebuah array, bisa menggunakan perintah
Ubound(nama_array), contoh :
Dim NamaSiswa(1 To 100) As String
Dim JmlElemen As Integer
JmlElemen = Ubound(NamaSiswa)  Æ  hasilnya = 100
Bila jumlah elemen array yang dibutuhkan tidak diketahui atau ingin bisa diubah-ubah, maka
bagian jumlah_elemen pada perintah Dim tidak perlu diisi, contoh :
Dim NamaSiswa() As String
Teknik ini biasa disebut sebagai array dinamis, biasanya untuk mengisi data yang berkembang terus, dan
belum bisa ditentukan di awal jumlah elemennya.
ƒ  Untuk mengubah jumlah elemen array digunakan perintah Redim :
Redim [Preserve] nama_array(jumlah_elemen)
Contoh :
Redim NamaSiswa(1 To 150)  Æ jumlah elemen array NamaSiswa menjadi 150 dengan
    nomer indeks dari 1 s/d 150.
 #Dimensi satu             
DIM NAMA VARIABEL (JUMLAH ELEMEN) AS TIPE DATA  PUBLIC COBA  (JUMLAH ELEMEN)  AS TIPT DATA 
Contohnya : 
DIM MAHASISWA (10 0) AS INTEGER OPTION BASE 1
DIM SEMENTARA (20) AS NUMERIC 
DIM PENGADAAN (25) AS CURRENCY  
Keterangan : 
Variabel pengadaan dan sementara Nomor awal indexnya =1, maka jumlah elemen data yang dapat ditampung variable pengadaan sebanyak 20; variable sementara sebanyak 25 
Variabel Mahasiswa Nomor awal indexnya 0, maka jumlah elemen data yang dapat ditampung sebanyak 101; Cara lain untuk mengubah awalan index adalah dengan menambahkan batas bawah saat mendeklarasikan variable array. Misalnya :    
 –DIM COBA  (1 TO 15)  AS INTEGER   
 –PUBLIC COBA  (15 TO 46)  AS LONG  

#Dimensi Dua   
       DIM NAMA VARIABEL (index1, index2) AS TIPE DATA 
•Dengan index yang sama dapat disimpan berupa data yang berlainan  •Variabel array dua dimensi  dengan sebuah titik pada diagram Cartisius yang memiliki sumbu X dan Y   Contohnya : 
 DIM TESTING (19,19) AS INTEGER    Option Base 1   
 DIM TESTING1 (10,20) AS INTEGER     
Dim k, l  as integer    DIM TESTING2 (K,L) AS INTEGER 
DIM COBA (1 To 15, 1 to 5 ) AS INTEGER PUBLIC COBA1 (15  To  45, 15  To  45) AS LONG  
Keterangan : 
VARIABEL Testing   DIMENSI-2 maka jumlah elemen yang dapat ditampung Sebesar 20X20 =40 Elemen data „Karena Batas bawah 0  (index1 = 0 To  19  dan Index2 = 0 To 19) 
VARIABEL Testing1   DIMENSI-2 maka jumlah elemen yang dapat ditampung Sebesar 10X20 = 200 elemen Data „Karena Batas bawah 1  (index1 = 1 To  10  dan Index2 = 1 To 20) 
VARIABEL Coba   DIMENSI-2 maka jumlah elemen yang dapat ditampung Sebesar 15X5 = 75 elemen Data „Karena Batas bawah 1  (index1 = 1 To  15  dan Index2 = 1 To 5) 
VARIABEL coba1   DIMENSI-2 maka jumlah elemen yang dapat ditampung Sebesar  30X30 = 90 Elemen Data  „Karena Batas bawah 15 (index1 = 15 To  45  dan Index2 = 15 To 45)
#Dimensi Tiga            
DIM  NAMA VARIABEL (Dimensi, Dimensi2, Dimensi3, …) AS TIPE DATA   
•Untuk meningkatkan daya tampung digunakan dimensi tambahan seperti dimensi kedua, dimensi ketiga dan seterusnya disebut multidimensi.  
•Contohnya –DIM PENJUALAN (2,3,4) AS CURRENCY   Option Base 10 –DIM KOTAK (40,30,20) AS INTEGER  
•Keterangan 
Variabel Penjualan Dimensi3, maka jumlah elemen yang dapat ditampung Sebesar 3X4X5 = 60 Elemen Data „Karena Batas bawah 0  (index1 = 0 To 2  dan Index2 = 0 To 3  serta index3 = 0 to 4) 
Variabel Penjualan Dimensi3, maka jumlah elemen yang dapat ditampung Sebesar 30X20X10 = 6000 Elemen Data „Karena Batas bawah 15  (index1 = 10 To 40  dan Index2 = 10 To 30 serta index3 = 10 to 20)  


Jenis-jenis Procedure
Pada VB6 ada 4 jenis procedure, yaitu :

- Procedure Sub – procedure yang tidak mengembalikan nilai setelah ‘tugas’-nya selesai.
- Procedure Function – procedure yang mengembalikan nilai setelah ‘tugas’-nya selesai.
- Procedure Event – procedure untuk suatu event pada sebuah object. Digunakan di dalam class module.
Procedure Property – procedure untuk mengubah (let) atau mengambil (get) nilai property pada sebuah object. Digunakan di dalam class module.
Pada bab ini akan dibahas penggunaan procedure sub dan function. Procedure event dan property akan dibahas pada bab selanjutnya. Bentuk penulisan (syntax) procedure sub :
[Public | Private] Sub <nama_sub> ([<argumen>])

<isi procedure>

End Sub
Sedangkan bentuk penulisan (syntax) procedure function :
[Public | Private] Function <nama_function> ([<argumen>]) As <tipe_data>

<isi procedure>

End Function Pernyataan [Public | Private] menentukan ruang lingkup (scope) procedure. Sebuah procedure dengan scope public bisa digunakan dalam lingkup project. Sedangkan procedure dengan scope private hanya bisa digunakan dalam lingkup form saja.
<nama_sub> atau <nama_function> dibuat sebagai pengenal procedure saat di-‘panggil’. Aturan penamaan sebuah procedure sama dengan aturan penamaan sebuah variabel. Nama sebuah procedure dibuat unik, tidak boleh ada yang sama.
<argumen> merupakan serangkaian nilai dan tipe data yang dipakai oleh procedure untuk mengerjakan ‘tugas’-nya. Sebuah procedure bisa saja tidak memakai argumen sama sekali.
Pernyataan As <tipe_data> pada procedure function menentukan tipe data nilai yang akan dikembalikan (return value) setelah ‘tugas’-nya selesai. Untuk menggunakan sebuah procedure, maka procedure tersebut harus di-‘panggil’ pada bagian tertentu dari kode program. Procedure sub di-‘panggil’ dengan pernyataan :
Call <nama_sub>([<argumen>])
Sedangkan procedure function bisa di-‘panggil’ langsung dengan menyisipkannya di dalam kode program yang memanggilnya
#ARRAY DINAMIS (Berubah-berubah) 
Seperti yang telah disebutkan diatas yaitu penggunaan array identik dengan jumlah elemen serta sangat berpengaruh kepada kapasitas pemakaian memory dan performance kerja program   Teknik pemrograman array dinamis dinamis untuk mendapatkan jumlah elemen sesuai dengan keperluan. Dan Untuk array dinamis deklarasikan array dengan dimensi kosong.   Contohnya 
   -DIM NAMA VARIABEL ()     Atau :  DIM NAMA VARIABEL ()  As Integer  
    -Kemudian alokasikan jumlah elemen dengan perintah “Redim “ pada saat digunakan pada suatu prosedur atau fungsi yang akan dilaksanakan, Maka deklarasinya menjadi :                          Redim  NamaVariabel (X, Y) 
-Selanjutnya bisa dideklarasikan Array tersebut berulang-ulang dengan ukuran berbeda sesuai kebutuhan  
Kelemahan penggunaan “Redim” adalah tiap kali perintah tersebut dipanggil maka semua nilai pada variable sebelumnya akan hilang.   Agar semua nilai pada variabelnya tidak hilang Gunakan perintah  “PRESERVE” Untuk menambah elemen array tanpa menghapus nilai sebelumnya.  
Pemrogramman
Perintah  “PRESERVE” Hanya dapat digunakan mengubah batas atas (UBound) dari array satu dimensi.  
Sedangkan untuk array multidimensi  yang dapat rubah hanyalah batas atas dimensi terakhirnya saja, dimensi sebelumnya tidak bias dirubah pada saat digunakan dengan dengan perintah PRESERVE”. Lihat contoh berikut nya ini :     –REDIM PRESERVE NAMAVARIABEL (10, UBOUND (NAMAVARIABEL,2) + 1 ) Atau :      REDIM PRESERVE DataMhs (10, UBOUND (DataMhs,2) + 1 )      REDIM PRESERVE DataMhs2 (10, 10, UBOUND (DataMhs2,3) + 1 ) 
Atau :      Option Base 1      REDIM PRESERVE DataMhs1 (10, UBOUND (DataMhs1,2) + 1 )      REDIM PRESERVE DataMhs2 (10, 10, UBOUND (DataMhs2,3) + 1 ) 
Dimana : -DataMhs1  dan DataMhs2 Memiliki  nilai awal/batas bawah Index1, index2, …) adalah 1 (satu) -(DataMhs1,2) adalah Variabel DataMhs1 memiliki dua dimensi -(DataMhs2,3) adalah Variabel DataMhs2 memiliki tiga dimensi  Keterangan : 
(10, UBOUND (DataMhs,2) + 1 ) = (Index1, Index2). Index1 = 0 to 10  dan  Index2= 0  to UBOUND (DataMhs,2) + 1 
Maksud dari :UBOUND (DataMhs,2) + 1 adalah batas atasnya index2.  (DataMhs,2) adalah DataMhs dimensi-2, setiap akan dilaksanakan proses otomatis menambah 1 (satu) ruang index2 pada variable DataMhs, untuk menampung data Mahasiswa  yang ke sekian (selanjutnya) 
Jadi jumlahnya ruang index2 tergantung banyaknya data mahasiswa yang akan diproses. 
-Variable  DataMhs berdimensi dua. Maka jumlah yang dapat ditampung sebesar 11X tergantung banyaknya data mahasiswa yang akan diproses. Maka segitulah jumlah elemen yang dapat ditampung pada variable DataMhs  


Array Satu Dimensi, Multi Dimensi Dengan Visual Basic
Dalam bahasa pemrograman manapun, pasti Anda akan menggunakan Array khususnya Vb. Lalu apa sih yang dimaksud dengan Definisi Array pada Visual Basic? Array adalah sekumpulan elemen data yang memiliki tipe data yang sama (meskipun pada akhirnya tidak selalu demikian, seperti penjelasan berikutnya yang akan Anda temukan). Array mengijinkan Anda untuk mengaitkan sekumpulan variabel dengan nama yang sama dan menggunakan angka (index) untuk memisahkan antara elemen yang satu dengan yang lainnya.

Hal ini membantu Anda dalam menulis kode yang lebih sederhana dan lebih singkat dalam banyak situasi, karena Anda dapat melakukan perulangan secara efisien cukup hanya dengan menggunakan angka index dari array tersebut. Array memiliki batas paling bawah (lower) dan batas paling atas (upper), dan elemen-elemen array berada di antara batas-batas tersebut. Karena dengan Visual Basic mengalokasikan ruang untuk setiap angka index, hindari pendeklarasian sebuah array yang lebih besar dari yang dibutuhkan.

visual basic
Array yang sedang kita bahas ini merupakan array dari variabel, yang dideklarasikan di dalam kode Anda. Array ini berbeda dari array yang berlaku pada control (control array) yang dapat Anda buat dengan mengeset nilai property Index milik suatu control pada saat design-time. Variabel array selalu berdampingan; tidak seperti control array, Anda tidak dapat memuat dan membebaskan elemen-elemen dari tengah-tengah array.

Semua elemen di array memiliki tipe data yang sama. Tentu saja, ketika tipe datanya Variant, elemen-elemen secara individu dapat mengandung jenis data yang berbeda (object, String, angka, dan sebagainya). Anda dapat mendeklarasikan sebuah array dari tipe data umum, termasuk user-defined types dan object variables (akan kita bahas pada artikel yang lainnya).


Di Visual Basic, terdapat dua jenis array, yaitu:
1.    Array dengan ukuran tetap, yang selalu memiliki ukuran yang sama,
2.    Array Dinamis (dynamic array), yang ukurannya dapat diganti pada saat run-time.
Mendeklarasikan Array yang Berukuran Tetap

Ada tiga cara mendeklarasikan array yang berukuran tetap, tergantung pada ruang lingkup yang Anda inginkan untuk array tersebut:
1.    Untuk membuat sebuah array public, gunakan pernyataan Public di bagian pendeklarasian dari module untuk mendeklarasikan array tersebut.
2.    Untuk membuat array level module, gunakan pernyataan Private di bagian pendeklarasian dari module untuk mendeklarasikan array tersebut.
3.    Untuk membuat sebuah array level local, gunakan pernyataan Private di dalam sebuah procedure untuk mendeklarasikan array tersebut.


Menentukan Batas Bawah dan Batas Akhir
Untuk mendeklarasikan sebuah array, ikuti nama array dengan batas teratas yang diapit oleh tanda kurung. Batas teratas tidak boleh melewati range dari sebuah tipe data Long (-2,147,483,648 sampai dengan 2,147,483,647). Sebagai contoh, pendeklarasian array-array berikut berada pada bagian pendeklarasian dari sebuah module:
Dim Counters(14) As Integer         ' 15 elemen.
Dim Sums(20) As Double                ' 21 elemen
Untuk membuat sebuah array public, cukup ganti kata Dim menjadi Public:
Public Counters(14) As Integer
Public Sums(20) As Double
Pendeklarasian yang sama di dalam sebuah procedure, gunakan kata Dim:
Dim Counters(14) As Integer
Dim Sums(20) As Double
Pendeklarasian pertama membuat sebuah array dengan 15 elemen, dengan nomor index dimulai dari 0 sampai 14. Pendeklarasian kedua membuat sebuah array dengan 21 elemen, dengan nomor index dimulai dari 0 sampai 20.


Default batas terbawah array adalah 0. Untuk menentukan nilai batas bawah tertentu, gunakan secara eksplisit (sebagai tipe data Long) dengan menggunakan kata kunci To:
Dim Counters(1 To 15) As Integer
Dim Sums(100 To 120) As String
Pada pendeklarasian pertama, nomor index dari Counters dimulai dari 1 sampai 15, dan nomor index dari Sums dimulai dari 100 sampai 120.

Jika Anda ingin agar setiap index batas terbawah tidak selalu dimulai dari nol tapi dimulai dari satu, maka cukup tambahkan di bagian paling atas atau di bagian pendeklarasian dari sebuah module, pernyataan berikut:

Option Base 1
Contoh berikut akan menunjukkan kepada Anda bagaimana menggunakan pernyataan Option Base 1:

‘Setiap variabel harus dideklarasikan terlebih dulu

Option Explicit
'Setiap array index terbawah harus dimulai dengan 1
Option Base 1
Private Sub Form_Load()
  Dim a(10)
  Dim i As Integer
  For i = 1 To 10
    a(i) = i
    MsgBox a(i)
  Next i
End Sub
Pada contoh tersebut, array a memiliki 10 elemen yang dimulai dari index 1 (bukan 0) sampai dengan 10. Mengapa dimulai dari 1? Karena di bagian pendeklarasian sudah dinyatakan dengan Option Base 1 yang artinya batas terbawah dari array dimulai dengan 1.

Array yang Mengandung Array yang Lain
Sangat memungkinkan untuk membuat sebuah array yang tipe datanya berjenis Variant, lalu mengisinya dengan array lain yang memiliki tipe data yang berbeda. Kode berikut ini akan membuat dua buah array, yang satu mengandung Integer dan yang lainnya mengandung String. Setelah itu, mendeklarasikan sebuah array ketiga yang bertipe Variant, dan mengisinya dengan array Integer dan array String tadi.
Private Sub Command1_Click()
  ' Deklarasi variabel counter.
  Dim intX As Integer

  ' Deklarasi dan isi sebuah array Integer.

  Dim countersA(5) As Integer
  For intX = 0 To 4
    countersA(intX) = intX
    MsgBox countersA(intX)
  Next intX

  ' Deklarasi dan isi sebuah array String.

  Dim countersB(5) As String
  For intX = 0 To 4
    countersB(intX) = "hello-" & intX
    MsgBox countersB(intX)
  Next intX

  ' Deklarasi array dengan dua elemen.

  Dim arrX(2) As Variant

  ' Isi array dengan array lain.

  arrX(1) = countersA()
  arrX(2) = countersB()

  ' Tampilkan anggota index ke-2 dari array pertama.

  MsgBox arrX(1)(2)

  ' Tampilkan anggota index ke-3 dari array kedua.

  MsgBox arrX(2)(3)
End Sub
Seperti yang sudah kita bahas di awal artikel ini, array memiliki batas terbawah dan batas teratas, yang masing-masing disebut dengan lower dan upper bound. Anda bisa menampilkan nilai dari elemen batas terbawah dan teratas tadi masing-masing dengan menggunakan pernyataan LBound dan UBound.

Dari contoh di sebelumnya, maka untuk menampilkan batas terbawah dan teratas dari array yang bernama countersB, maka kodenya adalah:

MsgBox "LBound = " & LBound(countersB)

MsgBox "UBound = " & UBound(countersB)

Array Multidimensional
Kadang-kadang Anda ingin menyimpan jejak dari informasi yang terkait dalam sebuah array. Sebagai contoh, untuk menyimpan jejak dari setiap pixel di layar komputer Anda, Anda perlu mengaitkan ke koordinat X dan Y. Hal ini dapat dilakukan dengan menggunakan sebuah array multidimensional untuk menyimpan nilai-nilai tersebut.

Dengan Visual Basic, Anda dapat mendeklarasikan array yang multi-dimensi. Sebagai contoh, pernyataan berikut mendeklarasikan sebuah array dua dimensi 10-kali-10 di dalam sebuah procedure:
Static MatrixA(9, 9) As Double
Untuk kedua dimensi tersebut, dapat dideklarasikan dengan batas bawah secara eksplisit:
Static MatrixA(1 To 10, 1 To 10) As Double
atau jika Anda ingin menggunakan index 0 untuk batas terbawah:
Static MatrixA(0 To 9, 0 To 9) As Double
Anda dapat memperluas array tersebut sehingga lebih besar dari dua dimensi.
Sebagai contoh:
Dim MultiD(3, 1 To 10, 1 To 15)
Pendeklarasian ini membuat sebuah array yang memiliki tiga dimensi dengan ukuran: 4 kali 10 kali 15. Total jumlah elemen hasil dari array tiga dimensi ini, menjadi = 600 (4 x 10 x 15).
Ketika Anda mulai menambahkan dimensi ke sebuah array, total penyimpanan yang dibutuhkan oleh array naik secara dramatis. Oleh karena itu, gunakanlah array multidimensional dengan hati-hati. Khususnya juga dengan array Variant, karena lebih besar daripada tipe data lainnya.