Objek disimpan dalam variabel Varian
Objek dapat disimpan dalam variabel Varian. Ini bisa berguna ketika Anda perlu menangani berbagai tipe data secara efisien, termasuk Objek. Misalnya, semua elemen dalam array harus memiliki tipe data yang sama. Atur tipe data array ke Varian untuk menyimpan Objek bersama dengan tipe data lain dalam array yang sama.
susunan
Jika Anda memiliki pengalaman pemrograman dalam bahasa lain, Anda pasti sudah familiar dengan konsep array. Berkat array, Anda dapat merujuk ke serangkaian variabel dengan nama yang sama dan mengidentifikasinya secara numerik (diindeks). Dalam banyak situasi, penggunaan array dapat mempersingkat dan menyederhanakan program karena Anda dapat merancang loop menggunakan nilai indeks untuk menangani berbagai situasi secara efisien. Array mempunyai batas atas dan bawah, dan elemen-elemen array bersifat kontinu dalam batas atas dan bawah. Karena Visual Basic mengalokasikan ruang untuk setiap nilai indeks, jangan mendeklarasikan array yang terlalu besar.
Perhatikan bahwa array yang dibahas pada bagian ini adalah array variabel yang dideklarasikan dalam program. Array ini berbeda dengan array kontrol, yang ditentukan pada waktu desain dengan mengatur properti Index pada kontrol. Array variabel selalu berdekatan; tidak seperti array kontrol, elemen array tidak dapat dimuat atau diturunkan dari tengah array.
Semua elemen dalam array mempunyai tipe data yang sama. Tentu saja, jika tipe datanya adalah Varian, setiap elemen dapat berisi tipe data yang berbeda (objek, string, nilai, dll.). Array tipe data dasar apa pun dapat dideklarasikan, termasuk tipe yang ditentukan pengguna (lihat "Membuat tipe data Anda sendiri" di Bab 8, "Pemrograman Lagi") dan variabel objek (lihat Bab 9, "Pemrograman dengan Objek") .
Ada dua jenis array dalam Visual Basic: array berukuran tetap - yang ukurannya selalu sama, dan array dinamis yang ukurannya dapat berubah saat runtime. Array dinamis dibahas secara rinci dalam "Array Dinamis" nanti di bab ini.
Deklarasikan array berukuran tetap
Ada tiga cara untuk mendeklarasikan array berukuran tetap, dan metode mana yang Anda gunakan bergantung pada rentang valid yang harus dimiliki array:
Untuk membuat array publik, deklarasikan array menggunakan pernyataan Publik di bagian deklarasi modul.
Untuk membuat array tingkat modul, deklarasikan array menggunakan pernyataan PRIvate di bagian deklarasi modul.
Buat array lokal dan deklarasikan array dengan pernyataan Private dalam prosesnya.
Tetapkan batas atas dan bawah
Saat mendeklarasikan array, nama array diikuti dengan batas atas yang diapit tanda kurung. Batas atas tidak boleh melebihi rentang tipe data Long (-2,147,483,648 hingga 2,147,483,647). Misalnya, deklarasi array berikut mungkin muncul di bagian deklarasi modul:
DimCounters(14)AsInteger '15 elemen.
DimSum(20)Sebagai elemen Ganda '21.
Untuk membuat array publik, langsung ganti Dim dengan Publik.
PublicCounters(14)SebagaiInteger
Jumlah Publik(20)SebagaiGanda
Deklarasi yang sama menggunakan Dim dalam prosedurnya: DimCounters(14)AsIntegerDimSums(20)AsDouble Deklarasi pertama membuat array dengan 15 elemen, diindeks dari 0 hingga 14. Deklarasi kedua membuat array dengan 21 elemen, diindeks dari 0 hingga 20. Batas bawah default adalah 0.
Untuk menentukan batas bawah, gunakan kata kunci To untuk memberikan batas bawah eksplisit (untuk tipe data Panjang):
DimCounters (1To15) Sebagai Integer
DimSum(100To120)AsString
Pada pernyataan sebelumnya, Counter memiliki nilai indeks yang berkisar antara 1 hingga 15, sedangkan Sums memiliki nilai indeks yang berkisar antara 100 hingga 120.
Array yang berisi array lain
Dimungkinkan untuk membuat array tipe data Varian dan menempatkannya bersama dengan array tipe data berbeda. Kode berikut membuat dua array, satu berisi bilangan bulat dan lainnya berisi string. Kemudian deklarasikan array Variant ketiga dan tempatkan array integer dan string di dalamnya:
PrivateSubCommand1_Klik()
DimintXAsInteger 'Deklarasikan variabel penghitung.
'Deklarasikan dan tempatkan array bilangan bulat.
DimcounterA(5)SebagaiInteger
ForintX=0Ke4
penghitungA(intX)=5
BerikutnyaX
'Deklarasikan dan tempatkan array string.
DimcounterB(5)AsString
ForintX=0Ke4
countersB(intX)=halo
BerikutnyaX
DimarrX(2)AsVariant 'Deklarasikan array baru dengan dua anggota.
arrX(1)=countersA() 'Pindahkan array lain ke array.
arrX(2)=penghitungB()
MsgBoxarrX(1)(2) 'Tampilkan setiap anggota array.
MsgBoxarrX(2)(3)
Sub Akhir
array multidimensi
Terkadang perlu untuk melacak informasi yang relevan dalam sebuah array. Misalnya, untuk melacak setiap piksel di layar komputer, Anda perlu mereferensikan koordinat X dan Y-nya. Saat ini, array multidimensi harus digunakan untuk menyimpan nilai. Array multidimensi dapat dideklarasikan dengan Visual Basic. Misalnya, pernyataan berikut mendeklarasikan array dua dimensi 10×10 dalam suatu prosedur.
Matriks StatisA(9,9)SebagaiGanda
Anda dapat mendeklarasikan salah satu atau kedua dimensi dengan batas bawah yang eksplisit:
StaticMatrixA(1To10,1To10)AsDouble
Semua ini dapat digeneralisasikan ke array lebih dari dua dimensi. Misalnya:
DimMultiD(3,1To10,1To15)
Deklarasi ini membuat array tiga dimensi berukuran 4×10×15. Jumlah seluruh unsur merupakan hasil kali tiga dimensi, yaitu 600.
Perhatikan bahwa ketika dimensi array ditingkatkan, ruang penyimpanan yang ditempati oleh array akan meningkat secara signifikan, jadi array multidimensi harus digunakan dengan hati-hati. Berhati-hatilah saat menggunakan array Varian karena memerlukan ruang penyimpanan yang lebih besar.
Menggunakan loop untuk memanipulasi array
Anda dapat menggunakan loop For bersarang untuk memproses array multidimensi secara efektif. Misalnya, di MatrixA, setiap elemen diberi nilai berdasarkan posisinya dalam array:
DimIAsInteger,JAsInteger
StaticMatrixA(1To10,1To10)AsDouble
Untuk Saya = 1 Sampai 10
UntukJ=1Ke10
MatriksA(I,J)=I*10 J
BerikutnyaJ
selanjutnyaSaya
Informasi lebih lanjutUntuk informasi lebih lanjut tentang loop, lihat bagian "Struktur Loop" nanti di bab ini.
susunan dinamis
Seberapa besar seharusnya sebuah array terkadang tidak diketahui. Jadi saya berharap memiliki kemampuan untuk mengubah ukuran array saat runtime.
Array dinamis dapat berubah ukurannya kapan saja. Dalam Visual Basic, array dinamis adalah yang paling fleksibel dan nyaman, membantu mengelola memori secara efektif. Misalnya, Anda dapat menggunakan array besar untuk waktu yang singkat dan kemudian melepaskan ruang memori ke sistem saat array tidak digunakan.
Jika Anda tidak menggunakan array dinamis, deklarasikan array dengan ukuran sebesar mungkin, lalu hapus elemen yang tidak diperlukan. Namun, jika metode ini digunakan secara berlebihan, akan menyebabkan lingkungan pengoperasian memori melambat.
Untuk membuat array dinamis, ikuti langkah-langkah berikut:
1. (Jika Anda ingin array menjadi array publik, maka) deklarasikan array dengan pernyataan Public, atau (jika Anda ingin array menjadi level modul, maka) deklarasikan array dengan pernyataan Dim pada level modul , atau (jika Anda ingin array menjadi array lokal, maka) di Gunakan pernyataan Static atau Dim untuk mendeklarasikan array selama prosedur. Deklarasikan array sebagai dinamis dengan menambahkan tabel dimensi kosong ke dalamnya.
RedupDynArray()
2. Gunakan pernyataan ReDim untuk mengalokasikan jumlah elemen sebenarnya.
ReDimDynArray(X 1)
Pernyataan ReDim hanya dapat muncul dalam prosedur. Berbeda dengan pernyataan Dim dan pernyataan Statis, pernyataan ReDim adalah pernyataan yang dapat dieksekusi. Karena pernyataan ini, aplikasi melakukan operasi pada waktu proses. Pernyataan ReDim mendukung sintaksis yang sama dengan yang digunakan dengan array tetap. Untuk setiap dimensi, setiap pernyataan ReDim dapat mengubah jumlah elemen serta batas atas dan bawah. Namun, dimensi array tidak dapat diubah.
ReDimDynArray (4 hingga 12)
Misalnya, gunakan array dinamis Matrix1 yang dibuat pada tingkat modul untuk pertama kalinya:
DimMatrix1()SebagaiInteger
Kemudian, alokasikan ruang untuk array dalam prosedur:
SubCalcValuesNow()
.
.
.
ReDimMatrix1(19,29)
Sub Akhir
Pernyataan ReDim di sini mengalokasikan matriks bilangan bulat 20×30 ke Matriks (ukuran elemen total adalah 600). Ada cara lain menggunakan variabel untuk menetapkan batas array dinamis:
ReDimMatrix1(X,Y)
Perhatikan bahwa Anda dapat menetapkan string ke array byte berukuran variabel. Array byte juga dapat ditugaskan ke string dengan panjang variabel. Penting untuk dicatat bahwa jumlah byte dalam string akan bervariasi menurut platform. String yang sama memiliki byte dua kali lebih banyak pada platform Unicode dibandingkan pada platform non-Unicode.
Pertahankan konten array dinamis
Setiap kali pernyataan ReDim dijalankan, semua nilai yang saat ini disimpan dalam array akan hilang. Visual Basic mereset nilai elemen array ke Kosong (untuk array Varian), ke 0 (untuk array Numerik), ke string dengan panjang nol (untuk array String), atau ke Nothing (untuk array objek) .
Ini berguna ketika menyiapkan array untuk data baru, atau ketika Anda ingin mengurangi ukuran array untuk menghemat memori. Terkadang Anda ingin mengubah ukuran array tanpa kehilangan data dalam array. Hal ini dapat dilakukan dengan menggunakan pernyataan ReDim dengan kata kunci Preserve. Misalnya, menggunakan fungsi UBound untuk mereferensikan batas atas menyebabkan array meluas dan menambahkan elemen tanpa kehilangan nilai elemen yang ada:
Redupkan UlangDynArray(UBound(DynArray) 1)
Saat menggunakan kata kunci Preserve, Anda hanya dapat mengubah batas atas dimensi terakhir dalam array multidimensi; jika Anda mengubah batas bawah dimensi lain atau dimensi terakhir, kesalahan akan terjadi saat runtime. Jadi bisa diprogram seperti ini:
ReDimPreserveMatrix(10,UBound(Matriks,2) 1)
Daripada memprogram seperti ini:
ReDimPreserveMatrix(UBound(Matriks,1) 1,10)
Untuk informasi lebih rinci tentang array dinamis, lihat "Fungsi ReDim" dalam referensi bahasa. Untuk informasi tentang array objek, lihat Bab 9, "Pemrograman dengan Objek."
->