Download
MATERI KEDUA : STRUKTUR DATA (REFRESH)
ARRAY
Fakultas Teknologi Informasi www.unisbank.ac.id
Dalam menyelesaikan persoalan pemrograman yang menggunakan jajaran data, penggunaan dimension sangat diperlukan. Hal ini dilakukan agar semua data yang dimasukkan akan tetap tampil , tidak hilang atau tertumpuk dengan data baru / terakhir yang dimasukkan.
Dengan penggunaan array, berarti kita memesan tempat dalam memory untuk menyimpan data yang kita buat.
Adalah sebuah variabel yang menyimpan sekumpulan data yang memiliki tipe sama. Setiap data tersebut menempati lokasi atau alamat memori yang berbeda-beda dan selanjutnya disebut dengan elemen array. Elemen array itu kemudian dapat kita akses melalui indeks yang terdapat di dalamnya. Namun penting sekali untuk diperhatikan bahwa dalam Java (seperti pada C++), indeks array selalu dimulai dari 0 bukan 1.
Untuk mendeklarasikan sebuah array dalm Java, kita harus menggunakan tanda [] (bracket). Adapun bentuk umum dari pendeklarasiannya adalah sebagai berikut :
Tipe_data nama_array[];
Atau
Tipe_data [] nama_array;
Dari bentuk deklarasi tersebut , jumlah elemen dan nilai-nilai dari setiap elemennya masih diset dengan nilai null.
VariabelArray = new tipe[JumlahElemen];
Bentuk umum penentuan jumlah elemeh elemen array adalah sebagai berikut :
Contoh deklarasi dan Penentuan Jumlah Elemen
Array :
Int [] jumlahhari;
Jumlahhari = new int[12];
Lewat contoh Penentuan Jumlah Elemen tersebut, artinya adalah Dideklarasikan variabel jumlah hari bertipe array integer, dengan jumlah elemen 12 dan default nilai yang di-set adalah nilai 0. Sedangkan untuk mengisikan nilai dari masing-masing elemen array, terlihat seperti berikut :
Jumlahhari[0] = 31;
Keterangan : [0] adalah indeks, dimulai dari 0 – 11, utk jumlah elemen 12.
Contoh bentuk penggabungan deklarasi array dengan penentuan jumlah elemen array :
int [] jumlahhari = new int[12]; atau
int jumlahhari [] = new int[12];
Contoh bentuk penggabungan deklarasi array dengan inisialisasi :
int [] jumlahhari = {31 , 28 , 31 , 30 , 31 , 30, 31, 31 , 30, 31 , 30, 31} ;
Untuk inisialisasi array tersebut, nilai-nilai untuk setiap elemennya berada pada blok diantara tanda ‘{‘ dan ‘}’. Sedangkan setiap elemennya dibatasi dengan tanda koma ‘,’ dan inisialisasi diakhiri dengan tanda titik koma
‘;’.
CONTOH 1:
class InisialisasiArray1D
{
public static void main(String[] args)
{
// mendeklarasikan variabel bertipe array dengan tipe int // sekaligus menginisialisasi nilai untuk setiap elemennya int [] jumlahHari = {31,28,31,30,31,30,31,31,30,31,30,31};
System.out.println("Bulan Maret memiliki " + jumlahHari[2] + " hari.");
}
}
CONTOH 2:
public class Array2
{
public static void main (String[]args)
{
int bilangan[] = new int [10];
System.out.println("Jumlah elemen array = "+bilangan.length);
}
}
CONTOH 3:
public class Array3
{
public static void main( String[] args )
{
int[] isi = new int[10];
int i;
for( i=1; i<10; i++ )
{
isi[i] = i;
System.out.println( isi[i] );
}
}
}
CONTOH 4:
public class Array4
{
public static void main( String[] args )
{
int[] x = new int[10];
int i;
for( i=1; i<x.length; i++ )
{
x[i] = i;
System.out.println( x[i] );
}
}
}
CONTOH 5:
public class Array5
{
public static void main(String args[])
{
int nilai[]=new int[3]; nilai[0]=70;
nilai[1]=80;
nilai[2]=90;
int i;
double jumlah=0.0;
double ratarata=0.0;
for(i=0; i<nilai.length; i++)
jumlah=jumlah+nilai[i]; //ratarata+=nilai[i];
System.out.println("Jumlah = " + jumlah);
System.out.println("i = " + i);
ratarata=jumlah/nilai.length; //ratarata/=nilai.length;
System.out.println("Nilai rata-rata = " + ratarata);
}
}
CONTOH 6:
public class CopyArray6
{
public static void main (String[]args)
{
int i; int tampung[]={10,9,8,7,6,5,4,3,2,1};
int elemen[]={1,2,3,4,5};
System.arraycopy(elemen,0,tampung,0,elemen.length);
for (i=0; i<tampung.length; i++)
System.out.print (tampung[i]+" ");
System.out.println();
}
}
Adalah Array yang terdiri dari beberapa subskrip array.
Terdiri dari :
Array 2 dimensi adalah array yang mempunyai 2 subskrip array
Array 3 dimensi adalah array yang mempunyai 3 subskrip array …..
dst
Cara mendeklarasikan Array 2 dimensi seperti berikut ini :
Tipe_data nama_array[][];
Atau
Tipe_data [][] nama_array;
Cara mendeklarasikan Array 3 dimensi seperti berikut ini :
Tipe_data nama_array[][][];
Atau
Tipe_data [][][] nama_array;
Contoh deklarasi Array 2 dimensi, dengan 2 baris
3 kolom
Int [][] duaD = new int[2][3]
Penggambaran contoh deklarasi Array dua dimensi tersebut adalah seperti berikut :
Contoh inisialisasi Array 2 dimensi, dengan 2 baris 3 kolom
Int [][] duaD = {(10,20,30),(40,50,6)}
CONTOH 1:
public class InisialisasiArray2D
{
public static void main(String[] args)
{
int[][] duaD = {{10,20,30},{40,50,60}}; for(int i=0; i<2; i++)
{
for (int j=0; j<3; j++)
{
System.out.print(duaD[i][j]);
if (j < 2) System.out.print(" ");
}
System.out.println();
}
} }
CONTOH 2:
import java.text.NumberFormat;
public class Array2Dimensi
{
public static void main(String args[])
{
NumberFormat nf=NumberFormat.getInstance(); nf.setMaximumFractionDigits(3);
int nilai[][]=new int[2][3]; nilai[0][0]=85; nilai[0][1]=81; nilai[0][2]=78; nilai[1][0]=65; nilai[1][1]=73;
nilai[1][2]=71;
String MK[]={"RPL", "PBO"}; double ratarataMK[]=new double[nilai.length]; double jumlah[]=new double[nilai.length];
for (int i=0; i<nilai.length; i++)
{
for (int j=0; j<nilai[0].length; j++)
{
jumlah[i] = jumlah[i] + nilai[i][j];
}
ratarataMK[i] = jumlah[i] / nilai[0].length;
}
System.out.println("Nilai Mata Kuliah\n");
System.out.println("MK\tMinggu1\tMinggu2\tMinggu3\tRata-Rata");
for (int i=0; i<nilai.length; i++)
{
System.out.print(MK[i] + "\t");
for (int j=0; j<nilai[0].length; j++)
{
System.out.print(nilai[i][j] + "\t");
}
System.out.print(nf.format(ratarataMK[i])+"\n");
}
}
}
a. Banyak elemennya tertentu/terhingga
b. Tipe elemennya sama
c. Membutuhkan lokasi memori yang Contigueus/menyatu sehingga letak elemen berdekatan satu sama lain (dengan tujuan agar mudah melacak/membaca kembali)
a. Model pandang data Array dalam Pemetaan Array ke dalam Memori
b. Dapat menghitung Jumlah Elemen Array
c. Dapat Menghitung Kebutuhan Memori dan Mencari Lokasi (Address) suatu elemen Array dari Pemetaan
Array ke dalam Memori
d. Melakukan Operasi-operasi Dasar dalam Array
a. Model Logika
Cara penulisan di media kertas/papan sedemikian rupa sehingga dapat dengan mudah untuk menulis atau membaca kembali.
b. Model Fisik
Menyusun sedemikian rupa elemen-elemen data yang akan diinputkan dan kemudian disimpan dalam memori komputer. Untuk lebih memperjelas pemahaman tentang model fisik ini dapat diambil contoh sebagai berikut:
CONTOH DALAM ARRAY SATU DIMENSI
CONTOH DALAM ARRAY 1 DIMENSI
Bila diketahui Bentuk umum Pendeklarasian tipe data array 1 demensi adalah sebagai berikut :
type_elemen namaarray[jumlah_elemen];
* Jumlah Elemen = n value index
Maka Contoh :
int A[10]; Jumlah Elemen Array : 10
float B[20]; Jumlah Elemen Array : 20
CONTOH DALAM ARRAY 1 DIMENSI
Rumus Menghitung Panjang Dimensi (DIM(A)) sebagai berikut:
DIM(A) = Banyak Elemen (A) * W (Word Length)
dimana W adalah Ukuran atau besar memori suatu tipe data.
Contoh :
Diketahui suatu deklarasi : int A[100]
Hitung DIM(A) !
JAWAB :
DIM(A) = 100 * 2 Byte
DIM(A) = 200 Byte
Catatan : W diketahui 2 byte, dikarenakan Variabel A direncanakan
diisi oleh data-data yang tiap elemennya maksimal 2 byte. {contoh data A : 25, 30, 13, 40 dll}
CONTOH DALAM ARRAY 1 DIMENSI
mencari lokasi atau address suatu elemen array dapat digunakan rumus:
LOC(A[i]) = Base(A) + i * W
Keterangan: i : Nomor elemen yang dicari
Base(A) : Alamat elemen pertama (biasanya diketahui)
Contoh :
Diketahui suatu deklarasi : int A[100]
Cari Posisi / Alamat dari elemen array A[3], Jika diketahui Base(A)=2500.
JAWAB :
LOC(A[3]) = 2500 + 3 * 2
LOC(A[3]) = 2506
Catatan : W diketahui 2 byte, dikarenakan Variabel A direncanakan diisi oleh data-data yang tiap elemennya maksimal 2 byte. {contoh data A : 25, 30, 13, 40 dll}
CONTOH DALAM ARRAY 2 DIMENSI
Terbagi dua cara pandang (representasi) yang berbeda :
Secara kolom per kolom (coloumn major order / CMO)
@M[i][j] = M[0][0] + {(j – 1) * K + (i – 1)} * L
Secara baris per baris (row major order / RMO)
@M[i][j] = M[0][0] + {(i – 1) * N + (j – 1)} * L
Keterangan :
@M[i][j] = Posisi array yang di cari, M[0][0] = Posisi alamat awal index array,
i = Baris,
j = Kolom,
L = Ukuran memory type data,
K = Banyaknya elemen per kolom, N = Banyaknya elemen per baris.
Terdapat dua tipe operasi, yaitu :
1. Operasi terhadap satu elemen / posisi dari array
2. Operasi terhadap array sebagai keseluruhan
Dua operasi paling dasar terhadap satu elemen / posisi adalah
1. Penyimpanan nilai elemen ke posisi tertentu di array
2. Pengambilan nilai elemen dari posisi tertentu di array
Operasi-operasi dasar terhadap array secara keseluruhan adalah :
1. Operasi penciptaan atau bisa inserting
2. Operasi penghancuran atau bisa deleting
3. Oparasi pemrosesan traversal
4. Operasi pencarian atau searching (table look-up)
5. Operasi sorting
*) Operasi pada point 4 dan 5 akan dibahas dalam materi tersendiri
Contoh :
A[10] = 78, berarti penyimpanan nilai 78 ke posisi ke-10 dari array A
C = A[10], berarti pengambilan nilai elemen posisi ke-10 dari array A
Contoh Penciptaan / inisialisasi :
int nilai[]=new int[3]; berarti menciptakan variabel array nilai dengan jumlah elemen maximal 3.
int elemen[]={1,2,3,4,5}; berarti menciptakan variabel array elemen dengan value nilai elemen 1,2,3,4,5. Berarti jumlah elemen maximal 5 buah dan isi sudah ditentukan.
Inserting
Operasi menambahkan elemen data baru ke struktur. Operasi ini hanya dapat dilakukan jika ada kelebihan alokasi memori/masih ada tempat yang kosong.
Untuk melakukan operasi inserting, dimisalkan:
• Nama arraynya = A
• Kapasitas maximum dari array = Max
• Jumlah elemen yang sudah terisi = Jml,
• Posisi penyisipan/Index = P, dan
• Elemen yang disisipkan = X, maka
Inserting
Operasi menambahkan elemen data baru ke struktur. Operasi ini hanya dapat dilakukan jika ada kelebihan alokasi memori/masih ada tempat yang kosong.
Untuk melakukan operasi inserting, dimisalkan:
• Nama arraynya = A
• Kapasitas maximum dari array = Max
• Jumlah elemen yang sudah terisi = Jml,
• Posisi penyisipan/Index = P, dan
• Elemen yang disisipkan = X, maka
DELETING
Operasi menghapus elemen data dari struktur Array. Operasi ini hanya dapat dilakukan jika ada data dalam struktur tersebut (tidak kosong).
Operasi penghancuran menyatakan ketidak berlakuan struktur data atau membebaskan memory, menyerahkan memory ke manajemen memory agar dapat di pergunakan keperluan lain.
Operasi penghancuran penting terutama bila struktur data di implementasikan secara dinamis menggunakan pointer.
Untuk melakukan operasi Deleting, dimisalkan:
• Nama arraynya = A
• Jumlah elemen yang terisi = Jml,
• Posisi penghapusan/Index = p,
Jika ingin mendapatkan file asli
Klik Download

Tidak ada komentar:
Posting Komentar