LAPORAN
MODUL 2 STRUKTUR DATA
DISUSUN OLEH
Nim : 115410138
Nama : Hermawan
SEKOLAH TINGGI MANAJEMEN DAN INFORMATIKA
AKAKOM YOGYAKARTA
2012/2013
MODUL 2
SORTING DAN SEARCHING
A. PembahasaN
1. Pelaksanaan Praktikum 1& 2
public class BubbleSort {
public static void tampilkanData(String nama[],intindeksTerakhir) {
for(int i=0; i <=indeksTerakhir; i++)
// perulangan for, yang mana menggunakan tipe data integer dengan nama variabelnya adalah i, dengan nilainol (0), dan i harus lebih kecil dari indeks terakhir yang ada pada perintah diatas, setelah mengalami proses i++ (nilai i ditambah satu, namun nilai i harus masuk sebagai nilai kurang dari sama dengan indeks terakhirnya).
System.out.println(nama[i]);
// merupakan suatu keluaran yang akan menampilkan atau memanggil hasil dari nama atau dengan parameternya i.
}
public static void urutkanBubble(String nama[], intindeksTerakhir) { // perintah ini akan menghasilkan nama dengan tipe data string dan integer sebagai indeks terakhir, yang mana menggunakan perintah ini, merupakan perintah untuk mengurutkan data dengan cara BubbleSort.
String sementara = "";\\ variable string dengan nilai yang belum diisi.
for (int j=0; j <=indeksTerakhir - 1; j++) {
// perulangan for, yang mana menggunakan tipe data integer, dengan nama variabelnya adalah j, dan nilai j harus kurang dari sama dengan indeks terakhir yang telah dikurangi satu, dan setelah menggalami proses j yang ditambah satu.
for (int i=0; i<=indeksTerakhir-1-j; i++)
// sama dengan variabel j pada perulangan diatas, nilai variabel i pada tipe data integer, yang mana nilai i sama dengan nol, kemudian nilai i akan ditambah satu, setelah itu nilai i harus kurang dari sama dengan indeks terakhir yang dikurangi satu dan dikurangi nilai j.
{
if (nama[i].compareTo(nama[i+1]) > 0) atau if (nama[i].compareTo(nama[i+1]) < 0) // perintah ini dapat dilakukan dengan dua cara, yaitu :
if (nama[i].compareTo(nama[i+1]) > 0) : perintah ini menggunakan penyataan if, yaitu jika nama dengan variabel i dibandingkan dengan nama yang mana nama bervariabel i ditambahkan satu, maka lebih besar dari 0, atau dengan kata lain, jika nama tersebut lebih besar, sama halnya mengurutkan data dengan cara ASCENDING, yaitu data atau nama yang ada akan dibaca secara ascending, peritah tersebut akan membaca tanda baca terlebih dahulu, angka-angka, huruf besar dan kemuadian huruf kecil.
if (nama[i].compareTo(nama[i+1]) < 0): perintah ini, merupakan kebalikan dari perintah diatas, data atau nama yang telah ada akan dibaca secara DESCENDING, yaitu data atau nama yang ada yang didahulukan saat data setelah diurutkan adalah huruf kecil, huruf besar, angka-angka, setelah itu baru akan menampilkan tanda baca. Perintah ini dapat dibaca, jika nama bervariabel i dibandingkan dnegan nama bervariabel i ditambahkan satu, maka hasilnya kurang dari 0, maka akan terjadi data pengurutan secara descending.
{ sementara = nama[i];
// perintah ini, memberitahukan bahwa nilai sementara sama denagn nama dengan variabel i.
nama[i] = nama [i+1];
// sedangkan nama yang bervariabel i sama dengan nama variabel i yang ditambahkan nilai satu.
nama[i+1] = sementara; }
// sehingga nama yang bervariabel ditambahkan satu tersebut merupakan nilai dari sementara.
}
}
}
public static void main(String[] args)
// merupakan permulaan fungsi utama dalam java, atau lebih dikenal dengan program method main dan kata void merupakan keharusan dalam bahasa pemrograman java.
{ Stringnama [] = {"gina" , "cici" , "beni" , "heru" ,
"dedi" , "eko" ,”feri”, "janu" , "abud" , "iwan"};
// merupakan data sebelum diurut atau perintah yang menampilkan nama-nama, yang mana data yang dtampilkan adalah nama dengan tipe data string sehingga dapat dilihat nama hanya menggunakan tipe data string. Dan pada perintah ini menggunakan variabel nama.
intindeksTerakhir = nama.length - 1;
// menunjukkan bahwa nilai integer dari indeks terakhir adalah nama.length atau nama yang ada pada jarak/panjang dikurangi satu.
System.out.println("Data SebelumDiurutkan : ");
// suatu perintah yang berfungsi sebagai keluaran dan menampilkan kalimat diantara petik dua.
tampilkanData(nama,indeksTerakhir); // perintah ini berhubungan dengan perintah sebelumnya. Pada perintah ini, akan menampilkan data sebelum diurutkan dari data yang telah ada.
urutkanBubble(nama, indeksTerakhir);
// perintah yang akan mengurutkan data yang sebelum diurut, dan akan menjadikan data tersebut menjadi data yang urut dengan cara bubble sort.
System.out.println("");
// merupakan perintah yang berfungsi memberikan jarak antara data sebelum diurut dengan data setelah menggalami pengurutan data.
System.out.println("Data SetelahDiurutkan : ");
// perintah ini berhubungan dengan perintahutkanBubble(nama, indeksTerakhir), yang mana perintah inilah yang akan memanggil atau mengeluarkan hasil data setelah diurutkan, dan manampilkkan kalimat yang berada diantara tanda petik.
tampilkanData(nama, indeksTerakhir); }
// perintah ini akan menampilkkan data setelah menggalami pengurutan dengan cara BubbleSort, dari data yang ada.
}
pada hasil output untuk program diatas, dapat dilihat, bahwa ASCENDING mengurutkan data dari yang terkecil sampai yang terbesar, yaitu dimulai dari tanda baca, angka, huruf besar dan kemudian huruf kecil. Sedangkan untuk DESCENDINGnya merupakan kebalikannya.
2. Pelaksanaan Praktikum 4
importjava.util.Scanner;
public class Larik {
public static void tampilkanData(String nama [], intindeksTerakhir)
// perintah ini akan menghasilkan nama dengan tipe data string dan integer sebagai indeks terakhir, yang mana menggunakan perintah ini, merupakan perintah untuk menampilkan data yang ada.
{ for (int i = 0; i<=indeksTerakhir; i++)
// suatu perulangan for, yaitu nilai integer yang bervariabel i sama dengan nol (0), nilai tersebut tidak melebihi batas dari data yang ada atau sebagai indeks terakhit, setelah variabel i nya ditambahkan nilai satu.
System.out.println(i +"."+nama[i]);
// perintah yang akan mengeluarkan atau menampilkan perintah yang ada diantara du tanda petik yang mana perinthanya i + . + nama yang ada.
}
public static void cariBiner(String nama[], intindeksTerakhir)
// perintah ini akan menghasilkan nama dengan tipe data string dan integer sebagai indeks terakhir, yang mana menggunakan perintah ini, merupakan perintah dengan cara cariBiner.
{ StringnamaCari = "";
// tipe data String dengan nama variabel namaCari yaitu sama dengan “” (petik dua), maksudnya nama yang dicari atau daftar nama yang ada dari data akan dikerjakan, adalah nama yang berada diantara petik dua.
booleanketemu = false;
// suatu tipe data boolean, bervariabel ketemu, seperti yang diketahui, bahwa nilai boolean ada dua yaitu true dan false. Dan perintah disamping adalah perintah yang menyatakan tipe data boolean yang bervariabel ketemu akan sama dengan false atau salah.
intposisi=0;
// ssehingga, berdasarkan perintah diatas, karena bernilai salah atau false, maka posisi untuk integernya adalah nol (0).
Scanner masukan = new Scanner(System.in);
// perintah ini menjelaskan dengan adanya objek yang diberi nama “masukan”, dan akan mengacu pada kelas Scanner, yaitu suatu pembuatan suatu objek masuk dengan nama masukkan dengan system.in.
System.out.println("SilahkanMasukanNamayangAndaCari : ");
// merupakan perintah yang akan memanggil serta menampilkan kalimat yang berada diantara petik dua, yaitu dengan perintah ini, dapat kita dapat mengetahui, bahwa lewat menu diatas, bisa masukkan data yang dicari.
namaCari = masukan.nextLine();
// sedangkan perintah disamping, masih berhubungan dengan perintah di atas, yaitu dengan menggunakan perintah ini lah dapat dimasukkan atau dapat mengetik data taua nama yang sedang dicari. Yaitu dapat dibaca, nama yang dicari sama dengan masukan atau objek yang dicari akan berada pada garis berikutnya atau bersamabungan dengan perinta diatas.
intatas,bawah,tengah;
// tipe data integer yang terdiri dari variabel atas, bawah dan tengah.
atas = 0;
// dari pernyataan diatas, yang mana tipe data integer, terdiri dari beberapa variabel, salah satunya adalah atas, dan pada perintah ini menyatakaan bahwa nilai untuk a sama dengan nol (0).
bawah = indeksTerakhir+1;
// sedangkan untuk variabel bawah pada perintah disamping adalah nilai bawah sama dengan indeks terakhir atau data terakhir ditambahkan satu.
while ((ketemu == false) && (atas<= bawah-1))
// pada perintah disamping dapat dilakukan dengan perulangan while mau pun dengan perulangan for (untuk perulangan for dapat dilakukan dengan perintah dibawah, dengan mengabaikan perulangan while. Begitu juga sebaliknya, jika menggunakan perulangan while, maka perulangan for dapat diabaikan keberadaannya). Perulangan while ini menyataakan bahwa selama (while) data yang ketemu sama dengan bernilai false atau salah dan nilai variabel atas kurang dari sama dengan bawah yang dikurangi satu.
atau
//for (int i = 0; i <= indeksTerakhir; i++)
// jika menggunakan perulangan for pada program ini, dapat dilakukan dengan menambahkan perintah ini. Perintah ini telah ada diawal program, namun jika menggunakan perulangan for, maka pernyataan diatas, digunakan sebagai ungkapan dari penyataan. Dari penyataan tersebut, maka dapat dibaca selama (perulanga for) yaitu nilai dari tipe data integer sama dengan satu, dan variabel i kurang dari indeks terakhir atau data yang diurutkan setelah ditambahkan satu dari i++.
//if ((ketemu == false) && (atas<= bawah-1)){
// jika menggunakan perulangan for, maka lanjutan programnya adalah seperti pernyataan disamping. Perintah disamping sama dengan perintah while, hanya saja kata while diganti dengan “if”, karena hal tersebut menggunakan perulangan for. Maka jika data ketemu sama dengan salah dan atas kurang dari sama dengan bawah yang mana nilainya dikurangi satu.
{ tengah = (atas +bawah) / 2;
// pernytaan disamping dapat dilanjutkan dengan menggunakan perintah perulangan while maupun for. Dari penyataan disamping, menyatakan bahwa nilai dari variabel tengah sama dengan nilai variabel atas yang ditambah dengan varaibel bawah, kemudian hasil tersebut dibagikan dengan dua.
if (namaCari.compareTo(nama[tengah])< 0)
// perulangan if, yaitu jika nama yang dicari dibandingkan dengan nama tengah maka akan kurang dari 0.
bawah = tengah;
// maka hasil dari penyataan diatas adalah, hasil dari variabel bawah sama dengan variabel tengah.
else if // penyataan if ...else... jika tidak.
(namaCari.compareTo(nama[tengah])>0)
// penyataan disamping merupakan kebalikan dari pernyataan sebelumnya, maksudnya jika penyataan diatas salah, maka pernyataan di samping akan berlaku atau diproses, dengan penyataan bahwa jika tidak nama yang dicari dibandingkan dengan nama tengah maka akan memperoleh nilai yang lebih besar dar nol (0).
atas = tengah;
// maka nilai tersebut sama dengan variabel atas sama dengan tengah, namun jika menggunakan perintah atas = tengah, maka perintah System.out.println("maaf mas/mbak, data yang andacaringgakada");tidak dapat dibaca dalam program ini atau saat memasukkan nama yang tidak terdaftar dari data yang ada, maka pesan itu tidak dapat keluar, sehingga digunakan perintah sebaliknya yaitu : bawah = tengah;
// dengan menggunakan perintah inilah, maka System.out.println("maaf data yang andacaritidakditemukan");dapat dijalankan atau dapat dibaca saat keluaran nya jika mencari nama yang tidak terdaftar dari data yang ada. Bawah = tengah merupakan hal yang masih terkait dari perintah if (namaCari.compareTo(nama[tengah])< 0) denganperintah(namaCari.compareTo(nama[tengah])>0), yang mana menyatakan bahwa nilai variabelnya. Perlu hal tersebut hanya berlaku pada perulnag while. Atau hal tersebut merupakan kekurangan dari perulangan dengan cara while.
Sedangkan jika menggunakan perintah for, maka pernyataan tetap, dengan kata lain System.out.println("maaf mas/mbak, data yang andacaringgakada");dapat dibaca dengan menggunakan perintah yang tetap, yaitu :
if (namaCari.compareTo(nama[tengah])< 0)
bawah = tengah;
else if
namaCari.compareTo(nama[tengah])>0)
atas = tengah;
else
{ ketemu = true;
// maka dari penyataan perulangan while atau for, jika data yang dicari ketemu maka sama dengan bernilai true atau benar.
posisi = tengah; }
// maka jika data yang dicari ketemu, maka akan bernilai benar sehingga posisinya berada sama dengan ditengah. Atau sebagai variabel tengah.
} }
if (ketemu == true)
// merupakan penyataan if yang menyatakan jika ketemu sama dengan true atau benar, maka keluarannya sebagi berikut atau perintah dibawahnya.
System.out.println("data ketemu di posisike "+ posisi);
// jika data yang dicari ketemu, maka akan bernilai sama dengan benar atau true. Maka keluarannya akan ditampilkan pada perintah ini, yaitu akan menampilkan kalimat yang berada diantara petik dua, yaitu memberitahukan posisi serta ditambah dengan pencarian posisi data atau nama yang dicari.
else // atau tidak
System.out.println("maaf mas/mbak, data yang andacaringgakada");
// perintah ini merupakan perintah kebalikan dari perintah sebelumnya, yaitu, jika data yang dcari tidak ketemu, maka akan keluar atau ditampilkan peintah yang berada pada petik dua. Yang menyatakan data tidak ada pada data yang telah ada.
}
public static void main(String[] args) {
// merupakan permulaan fungsi utama dalam java, atau lebih dikenal dengan program method main dan kata void merupakan keharusan dalam bahasa pemrograman java.
String nama[] = {"abud" , "bambang" , "cecep" , "dedi" , "eko" , "feri" ,
"gunawan" , "hasan" , "iwan" , "jumeno" , "karti" , "lina" ,murni"};
// merupakan data String dengan variabel nama, pada pernyataan string nama ini terkait dengan perintah dari String namaCari = "";yaitu nama string atau data nama berada diantara petik dua. Pada string nama inilah yang mendaftarkan nama-nama yang ada dari data pencarian.
intindeksTerakhir = nama.length - 1;
// tipe data integer yanitu data yang ada atau indeks terakhir sama dengan panjang/jarak nama dikurangi satu.
System.out.println("Data yang Ada");
// keluaran yang akan menampilkan perintah diantara dua tanda petik.
tampilkanData(nama, indeksTerakhir);
// dari perintah diatas, pada perintah inilah yang akan menampilkan daftar nama-nama yang ada dari data yang telah ada.
System.out.println("");
// keluaran yang memberikan jarak anatar data yang ditampilkan dengan pencarian biner.
cariBiner(nama, indeksTerakhir); }
// akan menapilkan pencarian biner dari daftar nama atau indeks terakhir dari data yang telah ada.
}
Untuk keluarannya jika menggunakan while, maka belum tentu bisa mengeluarkan pernyataan data yang tidak ada pada daftar nama, kecuali pada perulangan while pada atas = tengah;diubah menjadi bawah = tengah; sedangkan untuk perulangan dengan for, hal tersebut tidak perlu diubah dalam program, tetap menggunakan atas = tengah.
b. Tugas
import java.util.Scanner;
public class TugasLinearSerch
{
public static int N=0;
public static void memasukkan_data(String nama[], String alamat[], int umur[], char jeniskelamin[])
{
Scanner masukan = new Scanner(System.in);
int masukanASCII = 0;
System.out.print ("Tentukan banyaknya data = ");
N = masukan.nextInt();
for (int i=0; i<=N-1; i++)
{
System.out.println ("");
System.out.println("DATA KE - " + i);
System.out.print("Silakan masukkan nama anda = ");
nama[i] = masukan.nextLine();
System.out.print("Silakan masukkan alamat tanda = ");
alamat[i] = masukan.nextLine();
System.out.print("Silakan masukkan umur anda = ");
umur[i] = masukan.nextInt();
System.out.print("Silakan masukkan jenis kelamin anda = ");
try { masukanASCII = System.in.read();
}
catch(java.io.IOException e)
{
}
jeniskelamin[i] = (char) masukanASCII; }
}
public static void menampilkan_data(String nama[], String alamat[], int umur[], char jeniskelamin[])
{
System.out.println("------------------------------------------");
System.out.println("No Nama Alamat Umur JenisKelamin");
System.out.println("------------------------------------------");
for (int i=0; i<= N-1; i++)
{
System.out.println(i + "\t" + nama[i] + "\t" + alamat[i] + "\t" + umur[i] + "\t" +jeniskelamin[i]);
}
System.out.println("------------------------------------------");
}
public static void mencari_data_linear (String nama[], String alamat[], int umur[], char jeniskelamin[])
{
Scanner masukan = new Scanner(System.in);
int masukanASCII = 0;
boolean status_ketemu;
String kunci_pencarian;
int i;
int posisi=0;
status_ketemu = false;
System.out.print("Silakan masukkannama orang yang anda cari : ");
kunci_pencarian = masukan.next();
i = 0;
while ((status_ketemu==false) && (i<N) )
{ if (nama[i].equals(kunci_pencarian))
{ status_ketemu = true; >>>Coding Liner Search
posisi = i;
}
else
{ i = i + 1;
}
}
System.out.println ("Hasil pencarian menunjukkan : ");
if (status_ketemu == true) System.out.println ("Data ditemukan di posisike " + posisi);
else System.out.println ("Maaf, data yang anda cari tidak ditemukan dalam list kami");
System.out.println("-----------------------");
System.out.println("INI DATA ALAMAT YANG ANDA CARI");
System.out.println("-----------------------");
System.out.println(i + "\t" + nama[i] );
System.out.println("---------------------");
}
public static void main (String[] args)
{
String nama[] = new String [10];
String alamat[] = new String [10];
int umur[] = new int [10];
char jeniskelamin[] = new char[10];
memasukkan_data (nama, alamat, umur, jeniskelamin);
menampilkan_data (nama, alamat, umur, jeniskelamin);
mencari_data_linear (nama, alamat, umur, jeniskelamin);
}
}
c. Listing
ΓΌ Terlampir
0 komentar:
Posting Komentar