Thursday, March 27, 2014

STACK Dalam Struktur Data

Secara bahasa, Stack berarti tumpukan. Jika dikaitkan dengan struktur data, Stack berarti sekumpulan data yang organisasi atau strukturnya bersifat tumpukan atau menyerupai tumpukan.
Secara ilustrasi, stack dapat digambarkan dengan gambar di samping.
“Top “ merupakan pintu untuk keluar masuknya elemen – elemen stack. A, B, dan C merupakan suatu koleksi. Dari ilustrasi dapat digambarkan bahwa C merupakan elemen yang terakhir memasuki stack namun pertama keluar dari stack. Begitu sebaliknya dengan A. A merupakan elemen pertama yang memasuki tumpukan namun terakhir saat keluar dari tumpukan.
Di dalam gambar juga terlihat urutan masuk dan keluar yang berkebalikan. Elemen yang masuk pertama akan keluar erakhir dan sebaliknya. Prinsip ini telah dikenal dalam struktur data dengan nama prinsip LIFO (Last In First Out).
Di dalam pengembangannya, stack dapat dikelompokkan menjadi dua bagian. Dua bagian tersebut yaitu Single Stack dan Double Stack.
Single Stack
Single Stack atau Stack Tunggal adalah stack yang hanya terdiri dari satu koleksi. Bila stack ini direpresentasikan dengan array, maka pengisian dan penghapusan harus dilakukan bertahap dari indeks TOP-nya.
Di dalam proses single stack terdapat tiga macam proses utama, yaitu :
-          Inisialisasi
-          PUSH (Insert, Masuk, Simpan, Tulis)
-          POP (Delete, Keluar, Ambil, Baca, Hapus)
INISIALISASI
Proses inisialisasi merupakan proses awal yang dilakukan untuk menyimpan indeks penunjuk stack. Roses ini dilakukan dengan intruksi :
top = -1;
PUSH
Proses push adalah proses memasukkan data baru ke stack indeks selanjutnya. Algoritma dasar proses PUSH adalah :
top = top + 1;array[top] = variable_tampung;
POP
Proses pop adalah proses mengeluarkan  / mengambil data dari stack dengan indeks yang disimpan pada variable top. Algoritma dasar proses POP adalah :
variable_tampung = array[top];top = top – 1;
Double Stack
Double Stack atau Stack Ganda adalah stack yang hanya terdiri dari dua single stack. Bila stack ini direpresentasikan dengan array, maka pengisian dan penghapusan harus melalui salah satu arah.
Di dalam proses double stack terdapat lima macam proses utama, yaitu :
-          Inisialisasi
-          PUSH1 (Proses Push untuk Single Stack pertama)
-          POP1 (Proses Pop untuk Single Stack pertama)
-          PUSH2 (Proses Push untuk Single Stack kedua)
-          POP2 (Proses Pop untuk Single Stack kedua)
Algoritma dasar masing – masing proses adalah sebagai berikut :
INISIALISASItop1 = -1;top2 = MAX_ARRAY;
PUSH1top1 = top1 + 1;array[top1] = variable_tampung;
POP1variable_tampung = array[top1];top1 = top1 – 1;
PUSH2top2 = top2 – 1;array[top2] = variable_tampung;
POP2variable_tampung = array[top2];top2 = top2 + 1;

Tuesday, March 25, 2014

Manipulasi String di Java


String merupakan salah satu tipe data yang sangat sering digunakan dalam membuat program. Dalam Java, string direpresentasikan dalam kelas String (atau lebih tepatnya java.lang.String). Kelas ini memiliki banyak sekali method yang sangat berguna dalam proses manipulasi String. Di sini, akan ditunjukkan beberapa method yang lumayan penting dan cara penggunaannya.

Cara Membuat String

Pada dasarnya, string merupakan kelas. Sehingga, penggunaannya pun sama seperti kelas-kelas lainnya. Yaitu dengan cara instansiasi:


String kalimat = new String("bisa komputer - tempatnya segala tutorial komputer");
 
Di sini bisa kita lihat bahwa kita membuat object kalimat dengan menginstansiasi kelas String. Tapi, ada bentuk lain pada representasi string di Java. Baris berikut juga merupakan cara membuat string:


"ini adalah instance dari string"
 
Bingung? jangan khawatir. kalimat maupun "ini adalah instance dari string" sama-sama merupakan instance dari string. Kalau tidak percaya, coba jalankan kode berikut:


String kalimat = new String("bisa komputer - tempatnya segala tutorial komputer");
System.out.println("panjang kalimat: " + kalimat.length());
System.out.println("panjang string : " + "ini adalah instance dari string".length());
 
Dari sini kita bisa buat satu lagi cara meng-instantiate string:


String kalimat = "ini adalah instance dari string";

Cara Menghitung Jumlah Karakter dalam string

Untuk menghitung jumlah karakter atau juga panjang dari suatu string, kita menggunakan method length():

1
System.out.println("Panjang kalimat: " + kalimat.length());

Cara Memanipulasi Besar/Kecil Karakter

Untuk mengubah karakter menjadi huruf besar, kita menggunakan toUpperCase(). Begitu juga sebaliknya, untuk mengecilkan, kita pakai toLowerCase():


System.out.println("Uppercase kalimat: " + kalimat.toUpperCase());
System.out.println("Lowercase kalimat: " + kalimat.toLowerCase());
hasilnya:



Uppercase kalimat: BISA KOMPUTER - TEMPATNYA SEGALA TUTORIAL KOMPUTER
Lowercase kalimat: bisa komputer - tempatnya segala tutorial komputer

Cara Mengganti Sebagian dari Suatu string

Cara mengganti sebagian dari isi suatu string, kita memakai method replace(). Perlu dicatat di sini, bahwa replace() akan mengganti semua kata yang sama dengan penggantinya. Apabila kita hanya ingin mengganti satu saja, maka bisa menggunakan method replaceFirst():


System.out.println("Ubah 'komputer' menjadi 'xbox 360': " + kalimat.replace("komputer", "xbox 360"));
System.out.println("Ubah 'komputer' menjadi 'xbox 360': " + kalimat.replaceFirst("komputer", "xbox 360"));
 
menghasilkan output


Ubah 'komputer' menjadi 'xbox 360': bisa xbox 360 - tempatnya segala tutorial xbox 360
Ubah 'komputer' menjadi 'xbox 360': bisa xbox 360 - tempatnya segala tutorial komputer

Cara Membandingkan Isi dari string

Pada bahasa pemrogramman yang lain, Anda biasa melakukan pengecekan string kosong dengan menggunakan syntax seperti ini:


if(kalimat == ""){
//eksekusi kode jika benar
}
 
Pada java hal tersebut sangat tidak dianjurkan. Mengapa? Karena pada syntax di atas berarti kita melakukan perbandingan object, bukan isi object tersebut. Syntax yang benar dalam proses ini adalah dengan menggunakan method equals() atau bila Anda tidak ingin perilaku case-sensitive, equalsIgnoreCase().

Kalau Anda tidak percaya, Anda bisa menjalankan potongan kode berikut dan buktikan sendiri bagaimana hasilnya:



String kata1 = new String("ini kata");
String kata2 = new String("ini kata");
 
if(kata1 == kata2){
System.out.println("cara #1: isi kata sama");
} else {
System.out.println("cara #1: isi kata tidak sama");
}
 
if(kata1.equalsIgnoreCase(kata2)){
System.out.println("cara #2: isi kata sama");
} else {
System.out.println("cara #2: isi kata tidak sama");
}

Mencari Index dari Potongan Kata

Suatu saat, Anda mungkin akan butuh juga untuk mencari index dari suatu kata/karakter dalam satu kalimat. Untuk kebutuhan ini, bisa menggunakan method indexOf():


System.out.println("Posisi 'tempat' dalam kalimat: " + kalimat.indexOf("tempat"));
yang akan menghasilkan output:


Posisi 'tempat' dalam kalimat: 16
 
Ada catatan tambahan di sini. Kalau Anda perhatikan, hasil dari pencarian di atas adalah 16. Padahal, jika Anda menghitung manual, seharusnya hasilnya adalah 17. Karena huruf t ada di posisi 17. Mengapa bisa begini? hal ini disebabkan karena java menganut aturan zero based index. Yaitu, aturan dimana penghitungan index dimulai dari 0, bukan 1.

Mengetahui Apakah Terdapat Suatu Kata dalam Kalimat

Untuk mencari apakah di dalam suatu kalimat terdapat kata tertentu, Anda bisa menggunakan method contains():


System.out.println("Terdapat 'tempat' dalam kalimat: " + kalimat.contains("tempat"));
hasilnya:


Terdapat 'tempat' dalam kalimat: true

Cara Membangun String yang Cepat dan Hemat Memori

Kalian mungkin sudah mengetahui bagaimana cara membuat suatu kalimat panjang dari potongan-potongan string, misal:


String kalimatBaru = new String("ini");
kalimatBaru += " adalah";
kalimatBaru += " cara";
kalimatBaru += " membuat";
kalimatBaru += " kalimat";
 
Tidak ada yang salah dengan potongan di atas. Tapi, itu adalah cara membuat kalimat yang boros memori dan lambat. Memang benar komputer sekarang sudah sangat cepat, prosesor dan memory juga relatif murah. Tapi, cara di atas sangat tidak dianjutkan untuk digunakan di platform mobile. Untuk itu, kita bisa menggunakan kelas StringBuilder:


StringBuilder builder = new StringBuilder();
builder.append("ini ");
builder.append("contoh ");
builder.append("kalimat ");
builder.append("pakai ");
builder.append("builder");
System.out.println("Hasil builder: " + builder.toString());

Cara Memecah Kalimat Berdasarkan Separator

Trik yang terakhir adalah bagaimana cara kita memecah kalimat, berdasarkan separator/pemisah. Sebagai contoh, terdapat kalimat:

String kalimatPakaiSeparator = "Bisa Komputer;tutorial,tips-trik;http://www.bisakomputer/com/";
Yang ingin dipisah berdasarkan ;, menjadi:


Bisa Komputer
tutorial,tips-trik
 
http://www.bisakomputer/com/
 
Untuk ini, kita bisa menggunakan method split():


String[] pecah1 = kalimatPakaiSeparator.split(";");
System.out.println("Hasil pecahan: ");
for(int counter = 0; counter < pecah1.length; counter++){
System.out.println(" " + pecah1[counter]);
}
 
Itu tadi beberapa cara memanipulasi string di java. Selamat bereksplorasi, kalau masih ada yang bingung, silahkan ditanyakan langsung di kotak komentar atau ke Twitter saya yang ada di box author.

Sumber :  http://www.bisakomputer.com