STRUKTUR DATA
PERTEMUAN – 4
Disusun Oleh :
NAMA : ANNISA SALSABILA
NIM : 185410070
JURUSAN : TEKNIK INFORMATIKA
STMIK AKAKOM
YOGYAKARTA
2019
PRAKTIK 1
PROGRAM 4.1
Output Program 4.1
Jika data ditemukan
Jika data tidak ditemukan
Pembahasan :
Pada praktik diatas yaitu memodifikasi program pada pertemuan sebelumnya yaitu menambahkan
program 4.1 ke dalam program yang telah di buat. Program tersebut digunakan untuk mencari data
secara linear. Penambahan di lakukan pada baris ke 59 sampai dengan baris ke 88 untuk perulangan
menggunakan while. Lalu terdapat baris program untuk menampilkan data, data program 4.1 akan di
tampilkan melalui perintah pada baris ke 163 yaitu cariDataLinear(biodataMahasiswa); untuk
menambahkan banyak nya data yang akan diinputkan menggunakan perintah pada baris ke 154
sampai dengan 155, lalu bersamaan dengan perintah pada baris 160 sampai dengan 161 untuk
menampilkan biodataMahasiswa, disini saya memasukkan 2 data saja, outputnya seperti yang diatas.
Ketika di jalankan maka kita inputkan data yang ingin kita masukkan, yaitu data nama, alamat, umur,
jenkel, hobi (3 hobi), dan IPK. Lalu setelah data di inputkan, akan nada pertanyaan “Masukkan kata
kunci pencarian : ”. tinggal kita ketikkan ingin mencari data apa. Dilakukan pencarian dengan kata
kunci Allea, dan kata kunci ini terdapat dalam data biodataMahasiswa yaitu pada posisi 0.
Cara kerjanya yaitu terdapat variabel statusKetemu bertipe boolean dengan nilai false, lokasiKetemu
bertipe integer dengan nilai -1, dan input yang dimasukkan oleh user disimpan dalam variabel
kataKunci. Kemudian terdapat statement while dengan kondisi nilai i<N-1 dan statusKetemu bernilai
false. Dalam statement ini akan dilakukan pencarian, jika nilai kataKunci sama dengan nilai pada
biodataMahasiswa, maka statusKetemu bernilai true dan lokasiKetemu bernilai i.
PROGRAM 4.2
Pembahasan :
Pada praktik diatas yaitu memodifikasi program pada pertemuan sebelumnya yaitu menambahkan
program 4.2 ke dalam program yang telah di buat. Program tersebut digunakan untuk mencari data
secara linear. Penambahan di lakukan pada baris ke 91 sampai dengan baris ke 121 untuk perulangan
menggunakan for. Lalu terdapat baris program untuk menampilkan data, data program 4.2 akan di
tampilkan melalui perintah pada baris ke 163 yaitu mencariDataLinear(biodataMahasiswa); untuk
menambahkan banyak nya data yang akan diinputkan menggunakan perintah pada baris ke 154
sampai dengan 155, lalu bersamaan dengan perintah pada baris 160 sampai dengan 161 untuk
menampilkan biodataMahasiswa, disini saya memasukkan 2 data saja, outputnya seperti yang diatas.
Ketika di jalankan maka kita inputkan data yang ingin kita masukkan, yaitu data nama, alamat, umur,
jenkel, hobi (3 hobi), dan IPK. Lalu setelah data di inputkan, akan nada pertanyaan “Masukkan kata
kunci pencarian : ”. tinggal kita ketikkan ingin mencari data apa.
user akan menginputkan data yang akan dicari apakah ada di data tersebut atau tidak ada. Cara
kerjanya yaitu terdapat variabel statusKetemu bertipe boolean dengan nilai false, lokasiKetemu
bertipe integer dengan nilai -1, dan input yang dimasukkan oleh user disimpan dalam variabel
kataKunci. Kemudian terdapat statement while dengan kondisi nilai i<N-1 dan statusKetemu bernilai
false. Dalam statement ini akan dilakukan pencarian, jika nilai kataKunci sama dengan nilai pada
biodataMahasiswa, maka statusKetemu bernilai true dan lokasiKetemu bernilai i.
Namun ada tambahan dalam outputnya yaitu terdapat statement if dengan kondisi apabila
statusKetemu bernilai true maka akan menampilkan kalimat “Data yang anda cari KETEMU di larik
ke : ” beserta posisi data yang dicari. Dan jika data yang dicari tidak ada maka akan menampilkan
kalimat “maap, nama yang anda cari tidak ditemukan”.
Pada output pertama akan dilakukan pencarian dengan kata kunci Shani dan nama tersebut ketemu
maka akan menampilkan kalimat pertama dengan posisi larik ke 0.
Pada output kedua akan dilakukan pencarian dengan kata kunci Travelling dan kata tersebut tidak
ketemu maka akan menampilkan kalimat “map, nama yang anda cari tidak ditemukan”.
PRAKTIK 2
PROGRAM 4.3
Output Program 4.3
Pembahasan :
Pada praktik diatas yaitu memodifikasi program pada pertemuan sebelumnya yaitu menambahkan
program 4.3 ke dalam program yang telah di buat. Program tersebut digunakan untuk mencari data
secara biner. Penambahan di lakukan pada baris ke 124 sampai dengan baris ke 166. Lalu terdapat
baris program untuk menampilkan data, data program 4.3 akan di tampilkan melalui perintah pada
baris ke 208 yaitu mencariDataBiner(biodataMahasiswa); untuk menambahkan banyak nya data yang
akan diinputkan menggunakan perintah pada baris ke 199 sampai dengan 200, lalu bersamaan dengan
perintah pada baris 205 sampai dengan 206 untuk menampilkan biodataMahasiswa, disini saya
memasukkan 2 data saja, outputnya seperti yang diatas. Ketika di jalankan maka kita inputkan data
yang ingin kita masukkan, yaitu data nama, alamat, umur, jenkel, hobi (3 hobi), dan IPK. Lalu setelah
data di inputkan, akan nada pertanyaan “Masukkan kata kunci pencarian : ”. tinggal kita ketikkan
ingin mencari data apa.
Program tersebut merupakan program binary search, yaitu pencarian yang datanya harus dalam
keadaan urut terlebih dahulu. Cara kerjanya user akan memasukkan inputan berupa kataKunci yang
akan dicari dan input tersebut disimpan dalam variabel kataKunci. Selanjutnya program akan
membandingkan kataKunci yang dicari dengan setiap data yang ada mulai dari data pertama. Jika data
belum dalam keadan urut maka seperti pada output pertama yaitu akan mencari Kalimantan padahal
data tersebut ada, namun karena belum diurutkan kata kunci tersebut tidak dapat ditemukan. Syarat
awal dari pencarian data secara biner yaitu data harus terurut terlebih dahulu, jika data belum terurut
maka outputnya tidak ditemukan.
Namun jika data telah diurutkan, maka setelah dilakukan perbandingan dan kata kunci yang dicari ada
yang sama dengan data yang ada maka proses pencarian berhasil dan statusnya menjadi ketemu.
TUGAS
import java.util.Scanner;
class p2_formatBiodata{
public static int N=0;
//--------------------------------------------------
//---Fungsi untuk menambah data didepan---
//--------------------------------------------------
public static void tambahDataDiDepan(FormatBiodata biodataMahasiswa[]){
//bagian membuat record sementara untuk menampung data baru-------------
FormatBiodata biodataMahasiswaBaru = new FormatBiodata();
//bagian entri data baru ke penyimpan sementara-----------------------
Scanner masukan = new Scanner(System.in);
int bacaTombol=0;
System.out.print("Silakan masukkan nama anda : ");
biodataMahasiswaBaru.nama = masukan.next();
System.out.print("Silakan masukkan alamat anda : ");
biodataMahasiswaBaru.alamat = masukan.next();
System.out.print("Silakan masukkan umur anda : ");
biodataMahasiswaBaru.umur = masukan.nextInt();
System.out.print("Silakan masukkan Jenis Kelaminanda : ");
try{bacaTombol = System.in.read();}
catch(java.io.IOException e){}
biodataMahasiswaBaru.jekel = (char)bacaTombol;
System.out.println("Silakan masukkan hobi (maks 3) : ");
System.out.print("hobi ke-0 : ");
masukan.next();
biodataMahasiswaBaru.hobi[0] = masukan.next();
System.out.print("hobi ke-1 : ");
biodataMahasiswaBaru.hobi[1] = masukan.next();
System.out.print("hobi ke-2 : ");
biodataMahasiswaBaru.hobi[2] = masukan.next();
System.out.print("Silakan masukkan IPK anda: ");
biodataMahasiswaBaru.ipk = masukan.nextFloat();
//bagian menggeser isi larik mulai dari Belakang s/d 0 selangkah ke bawah
for (int i=N-1; i>= 0; i--){
biodataMahasiswa[i+1] = biodataMahasiswa[i];
}
//bagian memindahkan data baru kelarik ke-0-----------------------
biodataMahasiswa[0] = biodataMahasiswaBaru;
//memperbaharui banyaknya data (N), banyaknya data bertambah satu------
N++;
}
//------------------------------------------------------------------
//---Fungsi untuk Mencari Data Secara Linear Search(Loop: For)---
//------------------------------------------------------------------
public static void mencariDataLinear(FormatBiodata biodataMahasiswa[]){
String kataKunci;
int lokasi= -1;
boolean statusKetemu=false;
//bagian memasukkan kata kunci ------------------------------------------
Scanner masukan = new Scanner(System.in);
System.out.print("Masukkan kata kunci pencarian : ");
kataKunci = masukan.next();
//bagian mencari data satu persatu urut dari larik terdepan
for (int i=0; i<= N-1; i++){
//mencocokkan biodataMahasiswa[i].nama == kataKunci
if (biodataMahasiswa[i].nama.equals(kataKunci)){
statusKetemu = true;
lokasi = i;
break;
}
}
if (statusKetemu == true){
System.out.println("Data yang anda cari KETEMU di larik ke :"+ lokasi);
}else{
System.out.println("maap, nama yang anda cari tidak ditemukan");
}
}
//------------------------------------------------------
//---Fungsi untuk Mencari Data Secara Binary Search---
//------------------------------------------------------
public static void mencariDataBiner(FormatBiodata biodataMahasiswa[]){
String kataKunci;
int lokasi= -1;
boolean statusKetemu=false;
//bagian memasukkan kata kunci------------------------------------------
Scanner masukan = new Scanner(System.in);
System.out.print("Masukkan kata kunci pencarian : ");
kataKunci = masukan.next();
//bagian mencari data satu persatu urut dari larik terdepan
int atas,bawah,tengah;
atas = 0;
bawah = N-1;
tengah = (atas + bawah) / 2;
while ((statusKetemu == false) && (bawah-atas!=1)){
System.out.println(biodataMahasiswa[tengah].nama+" <---> "+kataKunci );
//jika kataKunci < biodataMahasiswa[tengah].nama)
if (kataKunci.compareTo(biodataMahasiswa[tengah].nama) < 0){
bawah = tengah;
tengah = (atas + bawah) / 2;
}else if (kataKunci.compareTo(biodataMahasiswa[tengah].nama) > 0){
//jika kataKunci > biodataMahasiswa[tengah].nama)
atas = tengah;
tengah = (atas + bawah) / 2;
}else{
statusKetemu = true;
lokasi = tengah;
}
}
if (statusKetemu == true){
System.out.println("Data yang anda cari KETEMU di larik ke :"+ lokasi);
}else{
System.out.println("maap, nama yang anda cari tidak ditemukan ");
}
}
}else{
System.out.println("maap, nama yang anda cari tidak ditemukan");
}
}
//--------------------------------------------------
//---Fungsi untuk Menampilkan Data---
//--------------------------------------------------
public static void tampilkanData(FormatBiodata biodataMahasiswa[]){
//bagian menampilkan isi struktur Larik-------
System.out.println("-------------------------------------------------------");
System.out.println("NAMA ALAMAT UMUR JEKEL HOBI[0] HOBI[1]
HOBI[2]IPK");
System.out.println("-------------------------------------------------------");
for (int i=0; i<=N-1; i++){
System.out.print (i +".");
System.out.print (biodataMahasiswa[i].nama + "\t");
System.out.print (biodataMahasiswa[i].alamat+ "\t");
System.out.print (biodataMahasiswa[i].umur + "\t");
System.out.print (biodataMahasiswa[i].jekel + "\t");
System.out.print (biodataMahasiswa[i].hobi[0] + "\t");
System.out.print (biodataMahasiswa[i].hobi[1] + "\t");
System.out.print (biodataMahasiswa[i].hobi[2] + "\t");
System.out.println(biodataMahasiswa[i].ipk);
}
System.out.println("-------------------------------------------------------");
}
//--------------------------------------------------
//---Program Utama---
//--------------------------------------------------
public static void main(String[] args){
//bagian deklarasi record berbasis LARIK-----------------------
FormatBiodata biodataMahasiswa[] = new FormatBiodata[10];
biodataMahasiswa[0] = new FormatBiodata();
biodataMahasiswa[1] = new FormatBiodata();
biodataMahasiswa[2] = new FormatBiodata();
biodataMahasiswa[3] = new FormatBiodata();
tambahDataDiDepan(biodataMahasiswa);
tambahDataDiDepan(biodataMahasiswa);
tambahDataDiDepan(biodataMahasiswa);
tampilkanData(biodataMahasiswa);
kelaminLaki(biodataMahasiswa);
}
}
KESIMPULAN
Setelah melakukan praktikum ini kita lebih memahami fungsi-fungsi dari pengelolaan data pada
larik/array di mana Fungsi suatu program pencarian yang terletak terpisah dari blok program utama,
tetapi tetap merupakan bagian dari program yang dibuat. Dengan menggunakan fungsi pencarian
Linear search atau binary search dapat membuat program menjadi lebih mudah mencari suatu data
yang ingin di tampilkan atau dilihat.