pemetaan array ke storage Seperti halnya struktur data
yang lain, ada beberapa cara untuk menyajikan array di dalam memori. Skema
penyajian dapat dievaluasi berdasarkan 4 karakteristik, yakni :
1. kesederhanaan dari akses elemen
2. mudah untuk ditelusuri
3. efisiensi dari utilitasi storage
4. mudah dikembangkan
1. kesederhanaan dari akses elemen
2. mudah untuk ditelusuri
3. efisiensi dari utilitasi storage
4. mudah dikembangkan
Umumnya tidaklah mungkin untuk
mengoptimalkan keempat faktor tersebut
sekaligus. Pandang array satu dimensi NOPEG dengan batas bawah subscript 1, dan batas
atas subscript = N. Salah satu cara untuk menyimpan array ini adalah sedemikian sehingga urutan fisik dari elemen sama dengan urutan logik dari elemen. Storage untuk elemen NOPEG(I+1) adalah berdampingan dengan storage untuk elemen NOPEG(I), untuk setiap I = 1, 2, 3,..., N-1.
sekaligus. Pandang array satu dimensi NOPEG dengan batas bawah subscript 1, dan batas
atas subscript = N. Salah satu cara untuk menyimpan array ini adalah sedemikian sehingga urutan fisik dari elemen sama dengan urutan logik dari elemen. Storage untuk elemen NOPEG(I+1) adalah berdampingan dengan storage untuk elemen NOPEG(I), untuk setiap I = 1, 2, 3,..., N-1.
Untuk menghitung alamat (address)
awal dari elemen NOPEG(I), diperlukan untuk mengetahui 2 hal yakni :
1. address awal dari ruang storage yang dialokasikan bagi array tersebut.
2. ukuran dari masing-masing elemen array.
1. address awal dari ruang storage yang dialokasikan bagi array tersebut.
2. ukuran dari masing-masing elemen array.
Address awal dari
array, kita nyatakan dengan B, disebut juga base-location. Misalkan
bahwa masing-masing elemen dari array menduduki S byte.
Maka, address awal dari elemen ke-I adalah :
B + (I-1) * S
Sekarang kita perluas persamaan di atas untuk mendapat address dari elemen ke-I dari
array yang mempunyai batas bawah subscript tidak sama dengan 1. Perhatikan array
Z(4:10), maka address awal dari Z(6) adalah :
B + (64) * S
Untuk array Z2 (-2:2) misalnya, address awal dari Z2(l) adalah :
B + (I -(-2)) * S
Maka secara umum, untuk array :
ARRAY(L:U),
elemen ARRAY(I) mempunyai address awal
B + (U-L) * S
bahwa masing-masing elemen dari array menduduki S byte.
Maka, address awal dari elemen ke-I adalah :
B + (I-1) * S
Sekarang kita perluas persamaan di atas untuk mendapat address dari elemen ke-I dari
array yang mempunyai batas bawah subscript tidak sama dengan 1. Perhatikan array
Z(4:10), maka address awal dari Z(6) adalah :
B + (64) * S
Untuk array Z2 (-2:2) misalnya, address awal dari Z2(l) adalah :
B + (I -(-2)) * S
Maka secara umum, untuk array :
ARRAY(L:U),
elemen ARRAY(I) mempunyai address awal
B + (U-L) * S
Array
Array merupakan bagian dasar pembentukan suatu struktur data yang lebih kompleks. Hampir setiap jenis struktur data kompleks dapat di sajikan secara logik oleh array.
Array adalah suatu tipe data terstuktur yang berupa sejumlah data sejenis (bertipe data sama) yang jumlahnya tetap dan diberi suatu nama tertentu.
Elemen-elemen array tersusun secara sekuensial di dalam memori sehingga memiliki alamat yang berdekatan. Array dapat berupa array 1 dimensi, 2 dimensi, bahkan n-dimensi. Elemen-elemen array bertipe data sama tapi bisa bernilai sama atau berbeda-beda. Array digunakan untuk menyimpan data-data yang diinputkan masing-masing kedalam memory komputer. Jadi jumlah datanya banyak namun satu jenis.
Array merupakan bagian dasar pembentukan suatu struktur data yang lebih kompleks. Hampir setiap jenis struktur data kompleks dapat di sajikan secara logik oleh array.
Array adalah suatu tipe data terstuktur yang berupa sejumlah data sejenis (bertipe data sama) yang jumlahnya tetap dan diberi suatu nama tertentu.
Elemen-elemen array tersusun secara sekuensial di dalam memori sehingga memiliki alamat yang berdekatan. Array dapat berupa array 1 dimensi, 2 dimensi, bahkan n-dimensi. Elemen-elemen array bertipe data sama tapi bisa bernilai sama atau berbeda-beda. Array digunakan untuk menyimpan data-data yang diinputkan masing-masing kedalam memory komputer. Jadi jumlah datanya banyak namun satu jenis.
Karaktersitik
Array :
1. mempunyai batasan dari pemesanan alokasi memory (bersifat statis)
2. mempunyai type data sama (homogen)
3. dapat di akses secara acak.
4. berurutan (terstruktur)
1. mempunyai batasan dari pemesanan alokasi memory (bersifat statis)
2. mempunyai type data sama (homogen)
3. dapat di akses secara acak.
4. berurutan (terstruktur)
1. ARRAY DIMENSI
SATU
Deklarasi
: Type_Data Nama_Variabel [index]
Rumus untuk
menentukan jumlah elemen dalam array adalah :
p = Perkalian dari index sebelumnya (untuk arraybdimensi dua dan tiga).
PEMETAAN
(MAPPING) ARRAY DIMENSI SATU KE STORAGE
Rumus
:
@A[i] = B + (i – 1) * L
Dimana
: @A[i] :
Posisi array yang dicari
B : Posisi awal index di
memori computer
i : Subkrip
atau index array yang di cari
L : Ukuran atau
besar memori suatu tipi data
PEMETAAN KE
STORAGE TERHADAP ARRAY DIMENSI BANYAK
Karena memori komputer adalah linear, maka array dimensi banyak harus dilinearkan
apabila akan dipetakan ke dalam storage. Salah satu alternatif untuk pelinearan tersebut adalah menyimpan pertama kali baris pertama dari array, kemudian baris ke-2, baris ke-3 dan seterusnya. Ini disebut row major order.
Karena memori komputer adalah linear, maka array dimensi banyak harus dilinearkan
apabila akan dipetakan ke dalam storage. Salah satu alternatif untuk pelinearan tersebut adalah menyimpan pertama kali baris pertama dari array, kemudian baris ke-2, baris ke-3 dan seterusnya. Ini disebut row major order.
Misalkan B adalah
base-location dari array RATE tersebut, dan masing-masing elemen
dari array berukuran S. Address awal dari elemen RATE(I,J) adalah :
B + (I-1) * 6 * S + (J-1) * S
karena ada I-1 baris, masing-masing dengan panjang 6 * S, sebelum baris elemen
RATE(I,J) terletak, dan terdapat J- 1 elemen, masing-masing dengan panjang S sebelum
elemen RATE(I,J) pada baris ke-I. Jadi, pada contoh di atas RATE(2,4) mempunyai
address awal :
dari array berukuran S. Address awal dari elemen RATE(I,J) adalah :
B + (I-1) * 6 * S + (J-1) * S
karena ada I-1 baris, masing-masing dengan panjang 6 * S, sebelum baris elemen
RATE(I,J) terletak, dan terdapat J- 1 elemen, masing-masing dengan panjang S sebelum
elemen RATE(I,J) pada baris ke-I. Jadi, pada contoh di atas RATE(2,4) mempunyai
address awal :
2. Array
Dimensi banyak
- Dimensi dua (matrix / tabel )
- Dimensi tiga (kubik)
Array multi dimensi berarti array yang kita deklasaikan dapat dikembangkan ke array dimensi 2 dan seteruanya. Array multi dimensi merupakan topik yang menarik dalam matematika. Setiap dimensi dalam array direpresentasikan sebagai sub bagian dalam array.
Oleh karena itu, array dua dimensi array memiliki dua sub bagian, sebuah array tiga-dimensi memiliki tiga sub bagian dan sebagainya. Sebuah contoh bentuk nyata yang baik dari array dua dimensi adalah sebuah papan catur. Satu dimensinya merupakan delapan baris, sedangkan dimensi lainnya merupakan delapan kolom.
- Dimensi dua (matrix / tabel )
- Dimensi tiga (kubik)
Array multi dimensi berarti array yang kita deklasaikan dapat dikembangkan ke array dimensi 2 dan seteruanya. Array multi dimensi merupakan topik yang menarik dalam matematika. Setiap dimensi dalam array direpresentasikan sebagai sub bagian dalam array.
Oleh karena itu, array dua dimensi array memiliki dua sub bagian, sebuah array tiga-dimensi memiliki tiga sub bagian dan sebagainya. Sebuah contoh bentuk nyata yang baik dari array dua dimensi adalah sebuah papan catur. Satu dimensinya merupakan delapan baris, sedangkan dimensi lainnya merupakan delapan kolom.
Array dua dimensi
sering kali digambarkan/dianalogikan sebagai sebuah matriks atau bentuk grid.
Jika array berdimensi satu hanya terdiri dari 1 baris dan banyak kolom, array
berdimensi dua terdiri dari banyak baris dan banyak kolom yang bertipe sama.
Array dua dimensi merupakan array yang terdiri dari M buah baris dan N buah kolom. Bentuknya dapat berupa matriks atau tabel.
Bentuk Umum :
Tipe_Data Nama_Variabel [index-1] [index-2]
Inisialisasi array dua dimensi
Seperti array berdimensi satu, array berdimensi dua juga bisa diinisialisasi.
Fungsi Array.
Jika suatu fungsi memberikan hasil balik, maka nilai hasil balik yang diberikan oleh fungsi dapat dilakukan oleh statement return yang diikuti oleh nilai hasil baliknya yang ditulis tanda kurung.
Array dua dimensi merupakan array yang terdiri dari M buah baris dan N buah kolom. Bentuknya dapat berupa matriks atau tabel.
Bentuk Umum :
Tipe_Data Nama_Variabel [index-1] [index-2]
Inisialisasi array dua dimensi
Seperti array berdimensi satu, array berdimensi dua juga bisa diinisialisasi.
Fungsi Array.
Jika suatu fungsi memberikan hasil balik, maka nilai hasil balik yang diberikan oleh fungsi dapat dilakukan oleh statement return yang diikuti oleh nilai hasil baliknya yang ditulis tanda kurung.
Keuntungan
penggunaan array sebagai tipe data dibandingkan dengan penggunaan tipe data
yang lain adalah kemampuannya yang dapat mengumpulkan beberapa data yang
bertipe sama dalam satu variabel, sehingga dalam pembuatan program yang terdiri
dari beberapa tipe yang sama, tidak membutuhkan banyak variabel.
Array juga dapat berfungsi sebagai pointer untuk menunjukan index yang sedang kita
gunakan.
Array juga dapat berfungsi sebagai pointer untuk menunjukan index yang sedang kita
gunakan.
Matrik merupakan
Implentasi dan penggunaan Array / larik multidimensi, dan matrik yang terbentuk
akan dapat di tambahkan, dikalikan dan lain-lain. Vektor merupakan ADT (abstrak
data type), dimana struktur data Vektor sesungguhnya cukup serupa dengan lank I
dimensi. keduanya baik lank maupun vektor dapat menyimpan beberapa nilai yang
bertipe data yang sama serta dapat diakses secara acak, banyak kemudahan pada
ADT Vektor java, method method yang diperlukan untuk melakukan
manipulasi data vektro sudah tersedia di java Interface Vektor, sebelum dapat
digunakan class program java hams memanggil java.util.Vector;,sehingga semua
interface vektor (method) akan dapat dikenali Konstruktor new Vector() membuat
vektor tanpa elemen.
Mendeklarasikan
variabel bertipe Vektor dengan nama vektor
Vector<Integer>
vector;
Membuat objek
vektor dengan tipe integer dgn ukuran vektor tertentu
vector = new
Vector<Integer>(ukuranVector);
Misalnya vec
adalah suatu Vector. Maka:
a. vec.size()
adalah fungsi untuk mengembalikanjumlah elemen di dalam vektor.
b.
vec.addElement(obj) akan menambahkan Object obj di akhir vektor.
c. Vec. add(obj)
dapat digunakan menambah Objek data pada vektor
d.
vec.removeEiement(obj) menghapus obj dan dalam vektor. kaiau ada. I—Ianya objek
pertama yang ditemui akan dihapus. Sama dengan remove(obj) pada kelas ArrayList
e.
vec.removeElementAt(N) menghapus elemen ke-N. N harus berada pada rentang 0
hingga
f. vec.get()
untuk mengembalikan elemen yang terseimpan di index yang dispesifikasi.
g. Vec.set()
nilal index path posis indek berubah dan nilai lama dikembalikan ke program
pemanggil
h. vec.size() -
1. Sama dengan remove(N) pada ArrayList
i.vec.setSize(N)
akan mengubah ukuran vektor menjadi N. Jika di dalam vektor terdapat elemen
yang jumlahnya lebih banyak dan N, maka elemen lainnya akan dihapus. Jib lebih
sedikit, maka tempat kosong akan diisi dengan null.
Kelas ArrayList
tidak memiliki metode seperti mi. Kelas Vector memiiki banyak metode lagi, akan
tetapi mi adalah metode yang sering digunakan.
Ada tiga jenis
matrik dasar yaitu :
1.
Matrik
yang semua elemennya bernilai satu : A =
ones (3,3) maka semua elemen matriks A (3×3) bernilai satu
ones (3,3) maka semua elemen matriks A (3×3) bernilai satu
2. Matrik yang semua elemennya bernilai nol : A =
zeros (3,3) maka semua elemen matriks A bernilai nol
zeros (3,3) maka semua elemen matriks A bernilai nol
3. Matriks acak : A = rand (3,3) atau A = randn
(3,)
Kelas Vector
memiiki banyak metode lagi, akan tetapi mi adalah metode yang sering
digunakan.
Berikut source codenya :
package tugas;
/**
*
* @author
hendrik
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Matriks {
static
int[][] Matriks1=new int[10][10];
static
int[][] Matriks2=new int[10][10];
static
int[][] MatriksHasil=new int[10][10];
static
int ukuran;
public
static void main(String[] args){
System.out.print("Masukkan ukuran Matriks:\n ");
ukuran=inputData();
bacaMatriks();
tambahkanMatriks();
tulisHasil();
}
private static
void tulisHasil(){
System.out.println("\n\nMatriks
Hasil Perkalian: ");
for (int i=0; i<ukuran; i++){
for (int j=0; j<ukuran; j++){
System.out.print(MatriksHasil[i][j]
+ " ");
}
System.out.println("");
}
}
private static
void tambahkanMatriks(){
for (int i=0;
i<ukuran; i++){
for (int j=0; j<ukuran; j++){
MatriksHasil[i][j]=Matriks1[i][j]+Matriks2[i][j];
}
}
}
private static
void bacaMatriks(){
System.out.println("\nMasukkan
Data Matriks 1 : ");
for (int i=0;
i<ukuran; i++){
for (int j=0;
j<ukuran; j++){
System.out.print("Matriks
["+(i+1)+"]["+(j+1)+"]:");
Matriks1[1][j]=inputData();
}
}
System.out.println("\n\nMasukkan
Data Matriks 2: ");
for(int i=0;
i<ukuran; i++){
for(int j=0;
j<ukuran; j++){
System.out.println("Matriks["+(i+1)+"]["+(j+1)+"]
:");
Matriks2
[i][j]=inputData();
}
}
}
private static
int inputData()
{BufferedReader
bfr=new BufferedReader(new
InputStreamReader(System.in));
String
angkaInput=null;
Try{
angkaInput=bfr.readLine();
}catch
(IOException e){
}
int
Data=Integer.valueOf(angkaInput).intValue();
return Data;
}
}
Seperti halnya struktur data yang lain, ada beberapa cara
untuk menyajikan array di dalam memori.
Skema penyajian
dapat dievaluasi berdasarkan 4 karakteristik, yakni :
1.
kesederhanaan
dari akses elemen
2. mudah untuk ditelusuri
3. efisiensi dari utilitasi storage
4. mudah dikembangkan
Sebagai contoh,
array yang dideklarasikan sebagai RATE(1:4,1:6), yang secara logika
tergambar sebagai
pada Gambar.