Anda di halaman 1dari 14

PRAKTIKUM 1 - STRUKTUR DATA

ARRAYS

Learning outcomes:

1. Mampu menjelaskan konsep dan implementasi array pada prog ram


2. Mampu melakukan manipulasi data array: menambahk an item,
melakuk an pencarian, dan mengh apus item pada array
3. Mampu mengimplementasikan ordered array pada program.
4. Mampu mengimplementasikan binary search pada ordered array.
5. Mampu menyimp an dan manipulasi objek pada array.

IDENTITAS PRAKTIK AN

NIM : 361955401007

Nama Len gkap : Refita Dinda Cahyani Putri

_
Praktiku m 1 |

A. PENDAHULUAN
1. Format penulisan code yang digunakan untuk mendeklarasikan sebuah array adalah:
TipeData namaVariable[ ] = new TipeData[panjang/ukuranArray];
S edangkan format penulisan code untuk menambahkan item pada array yang telah
dideklarasikan adalah:
namaVariable[index]= value;
Tulis dan jalank an listing program berikut:
public class classArray {

public static void main(String[] args) {


int[] array = new int[10];
array[0] = 10;
array[1] = 20;
array[2] = 30;
array[3] = 40;
array[4] = 50;

for (int i = 0; i < array.length; i++) {


System.out.print(array[i] + " ");
}
System.out.println("");

Pada listing program tersebut, ukuran array yang did eklarasik an adalah 10. Insert
item dil akukan hingg a index ke-4, artinya hany a t erdap at 5
item. Tuliskan output pro gram tersebut dan jelaskan
kenapa demikian !

jawaban

2. Ta mbahkan baris code berikut ini pada listing program nomer 1


...

array = new int[20];

for (int i = 0; i < array.length; i++) {


System.out.print(array[i] + " ");
}
System.out.println("");

Jalankan program tersebut, apa output yang dihasilkan ?

jawaban
Apakah item yang awal dimasukk an (pada listing no 1) masih tersimpan
didal am array? Jelaskan ken apa demikian?

jawaban

Masih tersimpan, karena kita telah menginsert item


kedalam array yang telah dideklarasikan sebelumnya.

Hingg a tahap ini, yang dap at disimpulkan adalah:

Ukuran array bersifat fixed / not fixed *)

*)coret salah satu

3. Lakukan experiment menggunakan listing nomer 1 untuk menjawab pertanyaan


berikut (beri keterangan benar/salah untuk soal berupa statemen dan tulis jawaban
untuk soal isian)
Insert item pada ar ray hanya bisa dilakukan secara SALAH
berurutan mulai index ke-0.
Insert item pada array hanya bisa dilakukan hingga SALAH
ukuran array – 1.
Cell array untuk semua tipe data primitive yang belum BENAR
diberi value secara default bernilai 0.
Cell array untuk tipe data String yang belum diberi value BENAR
secara default bernilai null.
Keterangan yang muncul jika memasukkan item Exception in thread "main"
melebihi ukuran array adalah ………… … java.lang.ArrayIndexOutOfB
oundsException: 4

4. Lengkapi listing berikut:

public class ClassArray {

public static void main(String[] args) { int[] array = new int[100];


int nElemen = 0; array[0] = 30;
array[1] = 20;
array[2] = 60;
array[3] = 70;
array[4] = 50;
array[5] = 10;

nElemen = 6;

for (int i = 0; i < nElemen; i++) { System.out.print(array[i] + " ");


}
System.out.println("");

}
}

Jal ankan dan tuliskan penjel asan dari listing yang telah Anda lengkapi!
jawaban
Vabiabel nElemen berfungsi sebagai pencacah(counter) yang berfungsi
sebagai pembatas dari sebuah looping. Saat nElemen bernilai 0 output dari
program di atas adalah kosong karena looping bernilai 0. Sesudah di
inisalisasi dengan 6 looping akan tampak seperti hasil output di atas, karena
tag for akan melakukan perulangan sejumlah 6 sehingga dapat memanggil
elemen dalam array.

5. B erikut ini adalah listing program ar ray yang dituliskan dalam bentuk object
oriented programming. Class HighArray memiliki method untuk manipulasi array,
yaitu insert, find/search, dan delete serta method display untuk menampilkan isi
ar ray. Method dalam class HighArray tersebut dipanggil dan dijalankan pada class
HighArray App.
Pahami listing berikut dengan menulis dan menjalankannya, kemudian
tuliskan penjelas an tiap barisnya!

class HighArray { Awal sebuah kelas bernama HighArray

Deklarasi variable integer bertipe array


private int[] arr;
bernama “arr” dengan akses private
private int nElemen; Deklarasi variabel bertipe integer bernama
nElemen dengan akses privat.

public HighArray(int max) { Awal sebuah method bernama HighArray


yang mengembalikan nilai integer.
arr = new int[max];
Creating Array bertipe iteger
nElemen = 0; Inisialisasi nElemen dengan nilai 0
} Kurung kurawal akhir dari method

Awal sebuah method yang bertipe void


public void insert(int value) { bernama insert yang akan menerima inputan
arr[nElemen] = value; bernilai integer
Mendeklarasikan array yang memiliki nomor
nElemen++;
index berdasarkan variable nElemen yang
} memiliki nilai data bertipe integer
Increment variable nElemen
Akhir Sebuah method
public boolean find(int key) {
int i; Awal sebuah method bertipe boolean bernama
for (i = 0; i < nElemen; i++) { find yang menerima inputan bertipe integer
if (arr[i] == key) { Mendeklarasikan variable bernama i
Perulangan yang difungsikan untuk
break; melooping data dalam array
} Percabangan yang memiliki kondisi “apakah
} array index ke-i sama dengan data dalam
variable key
if (i == nElemen) { Menghentikan looping saat kondisi telah
return false; terpenuhi
} else { Akhir dari percabangan if
Akhir dari perulangan for
return true;
Percabangan yang memiliki kondisi “
} apakah i sama dengan nElemen”
} Mengembalikan nilai boolean yang bernilai
false
akhir dari percabangan if dan awal dari else
public boolean delete(int value) {
Mengembalikan nilai boolean bernilai true
Akhir dari else
Akhir dari sebuah method bernama find

Awal sebuah method bertipe boolean bernama


delete yang menerima inputan bertipe integer
int i; Mendeklarasikan variabel bernama i
for (i = 0; i < nElemen; i++) { Perulangan yang difungsikan untuk
if (value == arr[i]) { melooping data dalam array
Percabangan yang memiliki kondisi “ jika
break; value/ inputan samadengan array indek ke-i
} Menghentikan perulangan jika kondisi telah
} terpenuhi
Akhir dari percabangan
if (i == nElemen) {
Akhir dari perulangan
return false;
Sebuah percabangan yang memiliki kondisi i
} else { sama dengan nElemen
for (int j = i; j < nElemen; j++) { Mengembalikan boolean bernilai false
arr[j] = arr[j + 1]; Akhir dari if dan awal dari else
} Perulangan yang difungsikan untuk
memindahkan nilai yang besar ke kanan.
nElemen--;
Deklarasi Array indek ke-j yang berfungsi
return true; menukar nilai dengan array index ke j+1
} Akhir dari perulangan for

} Decrement variable nElemen


Mengembalikan boolean bernilai true
Akhir dari else
public void display() {
Akhir sebuah method bernama delete
for (int i = 0; i < nElemen; i++) {
System.out.print(arr[i] + " "); Awal sebuah method bertipe void yang
} bernama display
System.out.println(""); Perulangan yang difungsikan untuk
melooping data dalam array
}
Mencetak/menampilkan array index tertentu
} dan menampilkan string berupa spasi
Akhir dari perulangan for

public class HighArrayApp { Mencetak/menampilkan string


Akhir sebuah method bernama display
Akhir sebuah class bernama HighArray
public static void main(String[] args) {
int maxSize = 100;
Awal Sebuah class bernama HighArrayApp
HighArray arr;
arr = new HighArray(maxSize);
Awal dari sebuah fungsi dalam java
Inisialisasi variable maxsize bertipe integer
arr.insert(70); dengan nilai 100
arr.insert(80); Deklarasi variable arr dalam class HighArray
arr.insert(75); Membuat array dengan jumlah elemen yang
telah ditentukan.
arr.insert(55);
arr.insert(85); Memanggil method insert yang berfungsi untuk
arr.insert(25); menambahkan nilai 70 pada array
arr.insert(30); Memanggil method insert yang berfungsi untuk
menambahkan nilai 80 pada array
arr.insert(00); Memanggil method insert yang berfungsi untuk
arr.insert(90); menambahkan nilai 75 pada array
Memanggil method insert yang berfungsi untuk
arr.insert(40)
menambahkan nilai 55 pada array
Memanggil method insert yang berfungsi untuk
arr.display(); menambahkan nilai 85 pada array
Memanggil method insert yang berfungsi untuk
menambahkan nilai 25 pada array
Memanggil method insert yang berfungsi untuk
menambahkan nilai 30 pada array
Memanggil method insert yang berfungsi untuk
menambahkan nilai 00 pada array
Memanggil method insert yang berfungsi untuk
menambahkan nilai 90 pada array
Memanggil method insert yang berfungsi untuk
menambahkan nilai 40 pada array

Menampilkan Array

int key = 25; Inisialisai variable key bertipe integer dengan


if (arr.find(key)) nilai 25
Percabangan yang berfungsi memanggil
{ System.out.println(key +
method find
" ditemukan"); Mencetak nilai dalam variable key dan
} else { string “ditemukan”
System.out.println(key + Akhir dari percabangan if dan awal dari else
" tidak ditemukan"); Mencetak nilai dalam variable key dan
} string “tidak ditemukan”
Akhir dari percabangan else
arr.delete(00);
arr.delete(80); Memanggil method delete yang di
fungsikan untuk menghapus nilai 00 yang
arr.delete(55);
ada pada array
Memanggil method delete yang di
arr.display(); fungsikan untuk menghapus nilai 80 yang
} ada pada array
Memanggil method delete yang di
}
fungsikan untuk menghapus nilai 55 yang
ada pada array

Menampilkan array
Akhir dari sebuah fungsi
Akhir sebuah class HighArrayApp
Output program tersebu t adalah… .

jawaban

6. Ta mbahkan sebuah method size pada class HighArray yang m empu mengembalikan
nilai jumlah elemen array. Panggil method tersebut pada class HighArrayApp untuk
m enampilkan jumlah elemen.
Tulis code dan penjelasannya!

jawaban

Pada class HighArrayApp


Pada class HighArray tambahkan
tambahkan program di atas .
method di atas .
Program di atas di gunakan
Properti length untuk menentukan
untuk pemanggilan method size
panjang elemen array.
yang ada di class HighArray.
System.out.println digunakan untuk
mencetak hasil yang berada dalam ()
B. PRAKTIK UM
1. Pada listing nomer 5 (tugas pendahuluan), method insert digunakan untuk
menambahkan item pada cell yang belum terisi tanpa memberhatikan value item
yang ditambahkan sehingga elemen pada array disimpan secara tidak berurutan
(unordered).
Agar item dapat disimpan pada urutan yang sesuai dengan value-ny a maka
perlu dilakukan pencarian posisi cell yang tepat bagi item yang akan
dimasukk an dengan cara membandingkan tiap item pad a cell dengan item
yang akan dimasukkan, yaitu pencarian secara linier. Setelah cell tepat
ditemukan, l angkah selanjutnya adalah menyiapkan cell tersebut untuk diisi
jika sudah ada item yang tersimpan pada cell tersebut. Hal ini bis a dilakuk an
dengan cara menggeser item yang memiliki value lebih bes ar dari item yang
akan dimasukk an, dengan demikian terdapat cell kosong untuk diisi deng an
item baru. Langk ah-langk ah insert item pada ordered array ditunjukkan pada
Gambar 1.1 berikut ini.

66Cari posisi yang sesuai

15 30 45 53 77 79 81

Geser value yang lebih besar dari item

66 insert

15 30 45 53 77 79 81

15 30 45 53 66 77 79 81

Ordered Array
Gambar 1.1 Langkah insert item pada ordered array
Tuliskan listing untuk method insert untuk menyimpan elemen array secara
berurutan (ordered)!
Pada class HighArray

public void orderedArrays (){


for (int i = 0; i < nElemen; i++) {
for (int j = 0; j < nElemen; j++) {
if(arr[i] < arr[j]){
int elem = arr[i];
arr[i] = arr[j];
arr[j] = elem;
}
}
}
System.out.println("");
for (int k = 0; k < nElemen; k++) {
System.out.print(arr[k] + " " );
}
System.out.println();
}

Pada HighArrayApp

arr.orderedArrays();

Output:
Sebelum menggunakan method orderedArrays

Sesudah menggunakan method orderedArrays

2. Pencarian pada method find listing nomer 5 (tugas pendahuluan) menggunakan


linier search, artinya terhadap key yang dicari, program akan melakukan pencarian
pada array secara berurutan mulai dari elemen pertama hingga elemen terakhir. Hal
ini tidak efisien. Pada ordered array, dapat dilakukan pencarian menggunakan
binary serach yang lebih efisien dibandingkan dengan linier sea rch.
Pada binar y search, range elemen array dibagi dua secara berul ang-ulang.
Hal ini menj adikan range pencarian s em akin kecil dan terpusat pad a item
yang memiliki value mendekati key pen cari an. Pembagian range pen cari an
pada binary search ditunjukkan pada Gambar 1.2 berikut ini.

Gambar 1.2 Pembagian range pencarian pada binary Search

Tuliskan listing untuk method find yang mengimplementasikan binary search!

Pada class HighArray

public boolean binarySearch (int key){

int i = 0;
int tengah;
while(i <= nElemen){
tengah = i+(nElemen - i)/2;
if(key == arr[tengah]){
return true;
}else if (key < arr[tengah]){
nElemen = tengah -1;
}else {
i = tengah +1;
}
}

return false;

Pada HighArrayApp

int key = 100;


if (arr.binarySearch(key)) {
System.out.println(key + " ditemukan");
} else {
System.out.println(key + " tidak ditemukan");
}
Output:

3. Storing object
Item data pada real world tidak direpresentasik an dalam bentuk data
primitive tapi berupa record yang merupakan kombinasi dari beberapa field.
Misalkan untuk record personal, kita dapat menyimpan nam a, tempat tanggal
l ahi r, nom er telpon, email, dsb. Untuk data mahasiswa, kita dapat menyimpan
nim, nam a, jurusan, asal, dsb. Dalam java, record data biasan ya
direpresentasikan deng an sebuah class object .
Berikut ini listing yang menunjukkan implementasi storing object. Terdapat
tiga class, yaitu class “Mahasiswa”, “DataArray”, dan “DataArrayApp”.
Record yang disimpan adal ah data mahasiswa yang terdi ri dari field nim,
nama, dan asal. Record mahasiswa ini direp resent asikan dalam sebuah class
object dengan nama “Mahasiswa”.
Tulis dan pah amilah listing program untuk menyimpan object berikut ini.
Obj ek mahasiswa disimpan dal am array. Class “DataArray” berisi method-
method untuk manipulasi object mahasiswa, yaitu insert, find, dan delete,
serta method untuk menampilk an array berisi objek mahasiswa, yaitu
displayArray.
Class yang digunakan untuk menjalank an program adal ah cl ass
“DataArrayApp”. Class ini memiliki method main yang didalamnya terdapat
listing untuk memang gil dan menjalankan fungsi-fungsi pada cl ass
DataArray yang telah dibuat.
Output:
C. K ESI MPULAN
Kesimpul an yang diperoleh dari pembahas an praktikum kali ini adalah:
1. Tentang unordered arrays dan ordered arrays

Ordered array adalah array yang disusun dalam urutan menaik atau
menurun . yang di susun menggunakan metode sorting.

Unordered arrays adalah array yang awalnya tidak berurutan akan di


geser sehingga posisi yang sesuai .

2. Tentang linier search dan binary search


Linier Search
Linier search adalah algoritma sederhana untuk mencari nilai target dalam array.
Linier serch memeriksa setiap elemen array hingga menemukan nilai yang
sesuai dengan nilai taerget.
karena linier search melakukan pencarian mulai awal hingga akhir array yang
menyebabkan kurang efisien.

Binary Search
Lebih efisien dibandingkan linier search, karena binary search memecah
pencarian ke dalam dua segmen sehingga memperkecil proses pencarian.

3. Tentang menyimpan object ( storing object)

Anda mungkin juga menyukai