Anda di halaman 1dari 11

LABORATORIUM PEMBELAJARAN ILMU KOMPUTER 

FAKULTAS ILMU KOMPUTER 


UNIVERSITAS BRAWIJAYA 
BAB : ARRAY 1 DIMENSI NAMA : INAS AQLIYA NIM : 175150420111002 TANGGAL : 
10/09/2018 ASISTEN : CANDRA ARDIANSYAH 
A. DEFINISI MASALAH 
1. Kembangkan program di atas dengan menambahkan method berikut : 
a. Mencari posisi bilangan yang merupakan kelipatan dari x0 yang terletak diantara 
index x1 dan index x2 dengan header sebagai berikut : 
int findPosKelipatan (int x0, int x1, int x2) 
Contoh  :  Sebuah  set  {1,  2,  3,  4,  5,  6,  7}  dan  dengan  memanggil  method  findPosKelipatan(3,  1,  6)  maka 
akan  menghasilkan  2  5  karena  kelipatan  dari  nilai  3 adalah 3 dan 6, dimana keduanya ada di antara index 
1 – 6 dan memiliki indeks 2 dan indeks 5. 
b. Pengurutan dengan menggunakan algoritma pengurutan yang lain selain Selection 
Sort. 
2.  Pada  Latihan  kedua  ini  anda  diminta  untuk  melengkapi bagian dari program ADT_Larik sehingga jika 
diberikan program utama pada gambar 1 akan menghasilkan keluaran sebagaimana gambar 2. 
B. SOURCE CODE 
Soal 1 Larik.java 1 2 3 
4 5 6 7 8 9 10 11 12 13 14 15 16 17 
public class Larik { 
private int size; private int[] itemDt; 
public void buatLarik(int n) { 
this.size = n; this.itemDt = new int[this.size]; } public Larik(int n) { buatLarik(n); } public int getSize() { 
return this.size; } public Larik(int[] dt) { 
buatLarik(dt.length); for (int i = 0; i < dt.length; i++) { 
isiItem(i, dt[i]); 
 
18  19  20  21  22  23  24  25  26  27  28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 
55 56 57 58 59 60 61 62 63 64 65 66 67 68 
} } public void isiItem(int id, int dt) { 
this.itemDt[id] = dt; } public Larik copyLarik(int k, int n) { 
Larik lHasil = null; if (n <= this.size - k) { 
lHasil = new Larik(n); int j = 0; for (int i = k; i < k + n; i++) { 
lHasil.isiItem(j++, this.itemDt[i]); } } return lHasil; } public void findPosKelipatan(int x0, int x1, int x2) { 
Larik lKelipatan = copyLarik(0, size); Larik faktorial = new Larik(lKelipatan.getSize()); int index = 0; for (int i = 0; 
i < lKelipatan.getSize(); i++) { 
if (lKelipatan.itemDt[i] % x0 == 0) { 
faktorial.isiItem(index, i); index++; } } System.out.println("Kelipatan 2 berada pada index ke : "); 
for (int j = 0; j < index; j++) { 
System.out.print(faktorial.itemDt[j] + " "); } System.out.println(""); 
System.out.println("-------------------------"); } public void Sort(int[] array) { 
int temp = 0; for (int i = 0; i < array.length; i++) { 
for (int j = 0; j < i; j++) { 
if (array[i] < array[j]) { 
temp = array[j]; array[j] = array[i]; array[i] = temp; } } } System.out.println("Setelah diurutkan menjadi : "); for (int 
k = 0; k < array.length; k++) { 
System.out.print(array[k] + " "); } System.out.println(""); } public static void main(String[] args) { 
 
69 70 71 72 73 74 75 
int[] A = {2, 34, 5, 7, 10}; Larik lC = new Larik(A); lC.findPosKelipatan(2, 1, 6); Larik lD = new Larik(A); 
lD.Sort(A); } } 
Soal 2 
Larik2.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 
19 20 21 22 23 24 25 
26 27 28 29 30 31 32 33 34 35 36 37 38 39 
public class Larik2 { private int size; private double[] itemDt; public Larik2(double[] A) { 
this.size = A.length; this.itemDt = new double[this.size]; for (int i = 0; i < this.size; i++) { 
this.itemDt[i] = A[i]; } } public int getSize() { 
return this.size; } public double getItem(int i) { return this.itemDt[i]; } public static Larik2 sambung(Larik2 l1, 
Larik2 l2) { 
double[] C = new double[l1.getSize() + l2.getSize()]; 
int indexL1 = C.length - l2.getSize(); int indexL2 = 0; for (int indexC = 0; indexC < C.length; indexC++) { 
for (indexC = 0; indexC < indexL1; indexC++) { 
C[indexC] = l1.getItem(indexC); } for (indexC = indexC; indexC < C.length; indexC++) { 
C[indexC] = l2.getItem(indexL2); indexL2++; } } Larik2 L3 = new Larik2(C); return L3; } 
public void isiItem(int id, double dt) { 
this.itemDt[id] = dt; } public void cetak(String komentar) { 
System.out.println(komentar); for (int i = 0; i < this.size; i++) { 
 
40  41  42  43  44  45  46  47  48  49  50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 
77 78 79 80 81 82 83 84 85 86 87 88 89 90 
System.out.printf("%.2f ", this.itemDt[i]); } System.out.println(); } public double findBesar() { 
double besar = this.itemDt[0]; for (int i = 1; i < this.size; i++) { if (besar < this.itemDt[i]) { 
besar = this.itemDt[i]; } } return besar; } public int getPosisi(double dtCari) { 
int pos = -99; boolean ketemu = false; int i = 0; while (!ketemu && i < this.size) { 
if (dtCari == this.itemDt[i]) { 
ketemu = true; pos = i; } i++; } return pos; } public static Larik2 copyLarik(int k, int n, Larik2 l) { 
double[] copy = new double[l.getSize()]; double[] paste = new double[n]; for (int indeks = 0; indeks < l.getSize(); 
indeks++) { 
copy[indeks] = l.getItem(indeks); } for (int indeks = 0; indeks < n; indeks++) { 
paste[indeks] = copy[indeks]; } Larik2 L4 = new Larik2(paste); return L4; } public int getPosBesar(int awal, 
int akhir) { 
int posBesar = -1; double itemBesar; if (awal <= akhir) { posBesar = awal; itemBesar = this.getItem(awal); for (int i 
= awal + 1; i < akhir; i++) { 
double nilaiItem = this.getItem(i); if (itemBesar < nilaiItem) { 
itemBesar = nilaiItem; posBesar = i; } 
 
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 
} } return posBesar; } public int getPosKecil(int awal, int akhir) { 
int posKecil = 0; double itemKecil; if (awal <= akhir) { posKecil = awal; itemKecil = this.getItem(awal); for (int i = 
awal + 1; i < akhir; i++) { 
double nilaiItem = this.getItem(i); if (itemKecil > nilaiItem) { 
itemKecil = nilaiItem; posKecil = i; } } } return posKecil; } public static Larik2 SelectionSort(Larik2 lAsal, int 
status) { 
int n = lAsal.getSize(); Larik2 lhasil = Larik2.copyLarik(0, n, lAsal); if (status == 0) { // urutkan data dari kecil ke 
besar 
for (int i = 0; i < n; i++) { 
int posKecil = lhasil.getPosKecil(i, n); double itemKecil = lhasil.getItem(posKecil); double itemI = lhasil.getItem(i); 
lhasil.isiItem(i, itemKecil); lhasil.isiItem(posKecil, itemI); } } else { // urutkan data dari besar ke kecil 
for (int i = 0; i < n; i++) { 
int posBesar = lhasil.getPosBesar(i, n); double itemBesar = lhasil.getItem(posBesar); double itemI = 
lhasil.getItem(i); lhasil.isiItem(i, itemBesar); lhasil.isiItem(posBesar, itemI); } } return lhasil; } public int[] 
FindPosPos(double a){ 
int index = 0; int p[] = new int[size]; for (int i = 0; i < p.length; i++) { 
if (this.itemDt[i] == a){ 
p[index] = i; index++; } 
 
142  143  144  145  146  147  148  149  150  151  152  153  154  155  156  157  158  159  160  161  162 163 164 165 166 167 
168 169 170 171 172 173 
174 175 
176 177 178 179 180 181 182 183 184 
185 186 
} int posisi[] = new int[index]; for (int j = 0; j < index; j++) { 
posisi[j] = p[j]; } return posisi; } public static double LarikKaliLarik(Larik2 a, Larik2 b){ 
double hasil = 0; for (int i = 0; i < a.size; i++) { 
for (int j = 0; j < b.size; j++) { 
if (i == j) { hasil = hasil + a.itemDt[i] * b.itemDt[j]; 
} } } return hasil; } public static void main(String[] args) { 
double[] A = {3, 4, 1, 10, 5, 2, 10, 20, 16}; double[] B = {4, 3, 1, 11, 7}; Larik2 L1 = new Larik2(A); Larik2 L2 = 
new Larik2(B); L1.cetak("Isi Larik L1"); L2.cetak("Isi Larik L2"); Larik2 L3 = Larik2.sambung(L1, L2); 
L3.cetak("L3 = gabungan dari L1 dan L2"); Larik2 L4 = Larik2.copyLarik(0, L1.getSize(), L1); L1.cetak("Isi Larik 
L1"); L4.cetak("L4 Copy dari L1"); Larik2 L5 = Larik2.SelectionSort(L1, 0); L5.cetak("L5 Hasil Pengurutan dari 
L1 kecil -> besar"); 
Larik2 L6 = Larik2.SelectionSort(L1, 1); L6.cetak("L6 Hasil pengurutan dari L1 besar -> kecil"); 
L1.cetak("Isi Larik L1"); int []posisi = L1.FindPosPos(10); System.out.print("Posisi 10 pada L1 di index : "); for (int 
i = 0; i < posisi.length; i++) { 
System.out.print(posisi[i]+" "); } System.out.println(""); double hasil = Larik2.LarikKaliLarik(L1, L4); 
System.out.printf("HASIL KALI Larik L1*L4 = %.3f\n", hasil); 
} } 
 
C. PEMBAHASAN 
Soal 1 Larik.java 1 2 3 4 

11 14 
20 
23 
34 
51 
52 
Mendeklarasikan kelas menggunakan method public dengan nama Larik Mendeklarasikan variabel size 
beripe data integer dengan akses modifier private Mendeklarasikan array bernama itemDt dengan akses 
modifier private Mendeklarasikan method buatLarik dengan parameter bertipe integer dimana size 
diinisialisasikan dengan n dan itemDt diinstansiasi dengan n itu sendiri Mendeklarasikan method Larik 
dengan parameter bertipe integer yang di dalamnya terdapat method perintah untuk memuat larik 
Mendeklarasikan method getSize untuk mengambil nilai size Mendeklarasikan method Larik dengan 
parameter array bertipe integer yang di dalamnya terdapat perulangan untuk menampilkan larik sesuai 
dengan panjangnya Mendeklarasikan method isiItem dengan parameter bertipe integer dimana itemDt 
berindeks id sama dengan dt Mendeklarasikan method copyLarik dengan parameter bertipe integer yang 
di dalamnya memuat perintah perulangan untuk menampilkan hasil Mendeklarasikan method 
findPosKelipatan dengan parameter bertipe integer yang di dalamnya terdapat perintah untuk 
menampilkan posisi kelipatan Mendeklarasikan method sort dengan parameter array bertipe integer yang 
di dalamnya terdapat perulangan ....... Sehingga 
Mendeklarasikan  method  main  yang  di  dalamnya  berisi  instansiasi  dan  pemanggilan  method  yang  akan 
menampilkan posisi bilangan kelipatan dan juga method untuk menampilkan bilangan setelah diurutkan 
Soal 2 Larik2.java 1 2 3 4 
11 14 
17 
34 
37 
Mendeklarasikan kelas menggunakan method public dengan nama Larik2 Mendeklarasikan variabel size 
beripe data integer dengan akses modifier private Mendeklarasikan array bernama itemDt dengan akses 
modifier private Mendeklarasikan method Larik2 dengan parameter array bertipe double dimana size 
diinisialisasikan dengan panjang dari variabel A dan itemDt diinstansiasi dengan elemen array sejumlah 
panjang dari variabel A itu sendiri. Lalu terjadi perulangan selama itemDt berindeks i sama dengan A 
berindeks i Mendeklarasikan method getSize untuk mendapatkan nilai size Mendeklarasikan method 
getItem dengan parameter bertipe integer untuk fungsi untuk mendapatkan item ke i dari suatu larik 
Mendeklarasikan method Larik2 sambung bertipe data class yang berisi instansiasi nilai c untuk 
menyambungkan dua larik yaitu l1 dan l2 Mendeklarasikan method isiItem dengan parameter bertipe 
integer untuk mengisi item suatu larik Mendeklarasikan method cetak dengan parameter bertipe string 
untuk mencetak isi item 
 
44 
53 
66 
79 
95 
111 
134 
149 
160 
Mendeklarasikan method findBesar untuk mendapatkan nilai terbesar dari suatu larik Mendeklarasikan 
method getPosisi dengan parameter bertipe double untuk mencari posisi suatu data tertentu di array 
Mendeklarasikan method copyLarik dengan parameter bertipe integer yang di dalamnya memuat perintah 
perulangan untuk mencopy isi suatu larik asal Mendeklarasikan method getPosBesar dengan parameter 
bertipe integer yang di dalamnya terdapat perintah untuk mencari posisi terbesar suatu data dari posisi 
awal sampai akhir Mendeklarasikan method getPosKecil dengan parameter bertipe integer yang di 
dalamnya terdapat perintah untuk mencari posisi terkecil suatu data dari posisi awal sampai akhir 
Mendeklarasikan method SelectionSort dengan parameter bertipe integer untuk mengurutkan suatu larik 
lAsal dimana kondisi lAsal akan tetap setelah proses pengurutan Mendeklarasikan method findPosPos 
dengan parameter bertipe double untuk mencari posisi bilangan yang diurutkan Mendeklarasikan method 
LarikKaliLarik dengan parameter bertipe class untuk mendapatkan hasil kali dua buah larik 
Mendeklarasikan method main yang di dalamnya berisi instansiasi dan pemanggilan method-method yang 
akan menampilkan isi larik, gabungan dari dua buah larik,hasil copy larik dari larik asal , hasil pengurutan 
dari kecil ke besar , dari besar ke kecil, isi larik asal, dan hasil kali L1 dengan L4 
D. SCREENSHOT PROGRAM 
Soal 1 
 
Soal 2 
E. KESIMPULAN 
ADT(Abstract  Data  Type)  adalah  tipe  data  tertentu  yang  dilengkapi  dengan  model  matematika 
dari  objek  data  yaitu  dengan  cara  mengaitkan  tipe  data  tersebut  dengan  fungsi-fungsi  yang  beroperasi 
pada data yang bersangkutan. 
Contoh penerapan ADTd pada program menghitung umur ,sebagai berikut : 
Orang.java Import java.util.Calendar; public class Orang { 
private int tanggal,bulan,tahun; private static void Orang(int tanggal, int bulan, int tahun){ 
this.tanggal = tanggal; this.bulan = bulan; this.tahun = tahun; } private static int hitungUmur(int tahun) { 
int tahunIni = Calendar.getInstance().get(Calendar.Year); 
int umur = tahunIni – tahun; return umur; } public static void main(String[] args) { 
Orang a = new Orang(11,1,1998); System.out.println(“Umur anda = “ + a.umur); } } 
 
Array  adalah  sekumpulan  data  homogen  yang  memiliki  tipe  data  sama  yang  disusun  oleh yang namanya 
elemen  dan  sertiap  elemen  diakses  dengan  nomor  indeks  dimulai  dari  [0].  Array  terdiri  dari  array  1 
dimensi  dan  array  2  dimensi  .  array  1  dimensi  terdiri  dari  satu  subskrip  yaitu  jumlah  data  maksimum. 
Sedangkan array 2 dimensi terdiri dari dua subskrip yaitu jumlah elemen baris dan jumlah elemen kolom. 
Array 1 Dimensi Array 2 Dimensi Deklarasi type[] 
namaVariabelArray atau type namaVariableArray[] 
Contoh deklarasi dan cara mengakses array 1 dimensi, sebagai berikut : 
- Pendeklarasian int [] nilai; nilai = new int[4]; 
- Cara mengakses 
nilai[0] = 31; 
nilai[1] = 28; nilai[2] = 31; nilai[3] = 30; 
Contoh deklarasi dan cara mengakses array 2 dimensi, sebagai berikut : 
- Pendeklarasian 
int array [3][5] = {{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15}}; 
- Cara mengakses 
Misalnya kita ingin mengakses nilai 6 yang ingin ditampung pada sebuah variabel (misalnya tampung) , 
caranya yaitu : Tampung = array[1][0] ; 
Data-data  dalam  array  1  dimensi  dapat  dimanipulasi baik secara individu maupun kelompok dan dapat 
digunakan  dalam  mengurutkan  data  maupun  mencari  data.  Contoh  penggunaan  array  dimensi  1  dalam 
kehidupan  sehari-hari  yaitu  penyusunan  buku  dalam  perpustakaan.  penyusunan  dalam  rak  per  raknya  di 
kelompokan dengan karya atau jenis yang lebih spesifik. 
type[][] namaVariabelArray atau type namaVariabelArray[][] 
Cara Mengakses namaArray[indeks] namaArray[baris][kolom] 

Anda mungkin juga menyukai