Sabtu, 28 Mei 2011

Segitiga Pascal Pada Java

Sebenarnya, menampilkan segitiga pascal dapat dilakukan hanya dalam fungsi main(public static void main(String[] args), namun cara ini lebih kompleks karena temen - temen harus mengatur fungsi faktorial sendiri di dalam fungsi main tersebut. Sebenarnya bisa, tapi lebih membingungkan. Sehubungan dengan kebingungan tersebut, pada artikel kali ini, akan ane buat fungsi - fungsi yang nantinya akan menjadi rumus menampilkan segitiga pascal tersebut. Fungsi ini ditunjukkan oleh script berwarna di bawah ini:

public class SegiTigaPascal
public int proc(int angka){
if(angka == 0){
return 1;
}
else
return angka;
}
public int minus(int x, int y){
if(x - y == 0){
return 1;
}
else
return x- y;
}
public int faktorial(int angka){
int faktorial = 1;
for(int x = 1; x <= angka; x++){
faktorial *= x;
}
return faktorial;
}
public static void main(String[] args) {
SegiTigaPascal panggil = new SegiTigaPascal();
int batas = 4;
int xFaktorial = 1;
int yFaktorial = 1;
int minFaktorial = 1;
int simpan;
int hasil = 0;
for (int x = 0; x <= batas; x++) {
xFaktorial *= panggil.proc(x);
for (int y = batas; y >= x; y--) {
System.out.print(" ");
}
for (int y = 0; y <= x; y++) {
yFaktorial *= panggil.proc(y);
minFaktorial = panggil.minus(x, y);
simpan = panggil.faktorial(minFaktorial);
hasil = xFaktorial/(yFaktorial * (simpan));
System.out.print(hasil + " ");;
}
yFaktorial = 1;
System.out.println("");
}
}
}

NB:
  • Script berwarna biru adalah fungsi untuk mengembalikan nilai 1 apabila angka pada parameter adalah 0, Fungsi ini berlaku karena (entah saya yang gak tahu atau emang gak ada) java tidak menyediakan prosedur faktorial sendiri, sehingga fungsi ini akan berjalan apabila dibutuhkan hasil 0 faktorial.
  • Sript berwarna merah adalah fungsi untuk menghitung hasil pengurangan. Hasil pengurangan ini diperlukan karena kombinasi nCr = n! / r!(n - r)!. Nah, fungsi ini yang berperan dalam menghitung (n - r)!.
  • Script berwarna kuning adalah fungsi untuk menghitung faktorial.

Sabtu, 21 Mei 2011

Penerapan Link List


Okeh brad... Pada kesempatan kali ini ane mau sedikit share tentang link list sebagai lanjutan dari artikel sebelumnya. Kali ini ane mau share tentang penerapan link list dalam hal yang lebih luas yaitu penerapan link list dalam mencari data terkecil, terbesar, dan mengurutkan data yang berupa angka. Berikut script untuk mencari data terkecil:
Sebelumnya, buat class baru terlebih dahulu. Pada contoh kali ini nama classnya adalah LinkedList.
public class LinkedList {
int data;
 LinkedList next;
public LinkedList(){
}   
public LinkedList(int data){
this.data = data;
}
public void tampil(){
System.out.print(data + " ");
}
}
Setelah itu buat class baru lagi. Pada contoh kali ini adalah Process.
public class Process {
LinkedList awal;
int k = 0;
public void masuk(int data) {
LinkedList link = new LinkedList(data);
link.next = awal;
awal = link;
}
public void tampil() {
LinkedList link = awal;
while (link != null) {
link.tampil();
link = link.next;
}
}
public int min(){
LinkedList link = awal;
while(link != null){
link = link.next;
int n = 1;
k += n;
}
int data[] = new int[k];
for(int x = 0; x < data.length; x++){
data[x] = awal.data;
awal = awal.next;
}
boolean is = true;
int tampung = 0;
for(int x = 0; x < data.length; x++){
is = true;
for(int y = 0; y < data.length; y++){
if(data[x] > data[y]){
is = false;
}
}           
if(is){
tampung = data[x];
}
}
return tampung;
}
}
public int max(){
System.out.println("Bilangan terbesar");
LinkedList link = awal;
while(link != null){
link = link.next;
int n = 1;
k += n;
}
int data[] = new int[k];
for(int x = 0; x < data.length; x++){
data[x] = awal.data;
awal = awal.next;
}
boolean is = true;
int tampung = 0;
for(int x = 0; x < data.length; x++){
is = true;
for(int y = 0; y < data.length; y++){
if(data[x] < data[y]){
is = false;
}
}
if(is){
tampung = data[x];
}
}
return tampung;
}
Perhatikan pada blok yang berwarna merah, di dalamnya terdapat satu baris yang di tulis dengan huruf tebal dan berwarna hitam. Blok itu adalah blok yang digunakan untuk mencari data angka terkecil, apabila ingin mencari data  angka terbesar, hanya tinggal mengganti dengan if(data[x] < data[y]).
public int max(){
LinkedList link = awal;
while(link != null){
link = link.next;
int n = 1;
k += n;
}
int data[] = new int[k];
for(int x = 0; x < data.length; x++){
data[x] = awal.data;
awal = awal.next;
}
boolean is = true;
int tampung = 0;
for(int x = 0; x < data.length; x++){
is = true;
for(int y = 0; y < data.length; y++){
if(data[x] < data[y]){
is = false;
}
}           
if(is){
tampung = data[x];
}
}
return tampung;
}
}
public int max(){
System.out.println("Bilangan terbesar");
LinkedList link = awal;
while(link != null){
link = link.next;
int n = 1;
k += n;
}
int data[] = new int[k];
for(int x = 0; x < data.length; x++){
data[x] = awal.data;
awal = awal.next;
}
boolean is = true;
int tampung = 0;
for(int x = 0; x < data.length; x++){
is = true;
for(int y = 0; y < data.length; y++){
if(data[x] < data[y]){
is = false;
}
}
if(is){
tampung = data[x];
}
}
return tampung;
}

Nah, sekarang bagaimana untuk mengurutkan data menggunakan link list??? Pada contoh kali ini, data yang akan diurutkan akan ditampilkan yaitu fungsi berupa void. Kalo temen – temen ingin mengembalikan nilai dari data yang temen – temen urutkan, silahkan dimodifikasi sendiri. Silahkan tambahkan script mengurutkan data dengan fungsi tampil() yang ada di class process. Berikut scriptnya:
public void tampil() {
LinkedList link = awal;
while (link != null) {
int n = 1;
link.tampil();
link = link.next;
k += n;
}
System.out.println("\nAscending");
int data[] = new int[k];
for(int x = 0; x < data.length; x++){
data[x] = awal.data;
awal = awal.next;
}
int temp;
for(int x = 0; x < data.length;x++){
for(int y = x + 1; y < data.length; y++){
if(data[x] > data[y]){
temp = data[x];
data[x] = data[y];
data[y] = temp;
}
}
System.out.print(data[x] + " ");
}
System.out.println("\nDescending");
for(int x = 0; x < data.length;x++){
for(int y = x + 1; y < data.length; y++){
if(data[x] < data[y]){
temp = data[x];
data[x] = data[y];
data[y] = temp;
}           
}
System.out.print(data[x] + " ");
}   
}
Lalu buat class baru untuk menampilkan data – data yang ingin dimasukkan. Pada contoh kali ini nama classnya adalah Main.
public class Main {
public static void main(String[] args){
Process angky = new Process();
angky.masuk(4);
angky.masuk(8);
angky.masuk(3);
angky.masuk(1);
angky.masuk(2);
System.out.print(angky.min());
System.out.println("");
Process cahaya = new Process();
cahaya.masuk(4);
cahaya.masuk(8);
cahaya.masuk(3);
cahaya.masuk(1);
cahaya.masuk(2);
System.out.print(cahaya.max());
System.out.println("");
Process putra = new Process();
putra.masuk(4);
putra.masuk(8);
putra.masuk(3);
putra.masuk(1);
putra.masuk(2);
putra.tampil();
}
}
PENTING!!!
Tabulasi dalam java sangatlah penting, apabila temen – temen mengcopas script di atas, pasti nantinya tabulasi di atas akan lurus rata kiri. Solusinya (khusus yang menggunakan netbeans) yaitu setelah temen – temen mengcopas script di atas, tekan Shift + Alt + F. Secara otomatis netbeans akan mengatur tabulasi script yang tentu saja akan memudahkan pembacaan script.

Jumat, 20 Mei 2011

Selection sort

Ok, kali ini ane mau share tentang bagaimana sorting secara selection sort. Pada kesempatan kali ini ane coba jelasin selection sort dengan menambah penjelasan dalam program itu sendiri. Silahkan membuat class baru lalu copy script di bawah ini:

    public static void main(String[] args) {
        int[] data = {8, 4, 2, 6, 3, 7, 17, 28};
        int tampung = 0;
        for (int x = 0; x < data.length; x++) {
            for (int y = x + 1; y < data.length; y++) {
                System.out.println("\nmembandingkan " + data[x] + " dengan " + data[y]);
                System.out.print("awalnya data[x] adalah " + data[x] + " lalu ");
                if (data[x] > data[y]) {
                    tampung = data[x];
                    data[x] = data[y];
                    data[y] = tampung;
                    System.out.print("data[x] menjadi " + data[x] + ", data[y] menjadi " + data[y] + ". ");
                }
                else{
                    System.out.print("data[x] tidak ditukar karena tidak memenuhi kondisi if dan data[y] berlanjut. ");
                }
            }
            System.out.println("");
        }
    }

Keterangan yang warna merah akan membantu temen" dalam mengerti tentang  selection sort.
Semoga bermanfaat!!!

Senin, 02 Mei 2011

Perkalian Matriks

Berikut adalah contoh script perkalian matrix berordo 2 X 2:
public class Matrix {
    public static void main(String[] args){
        int a[][] = {{1,5},{2,8}};
        int b[][] = {{6,7},{9,3}};
        System.out.println("a * b");
        int[][] temp = new int[a.length][a.length];//variable array 2D untuk menyimpan hasil a * b
        int kali;//variable untuk menyimpan hasil perkalian
        int tambah = 0;//variable untuk menyimpan hasil penjumlahan dari perkalian
        for(int x = 0; x < a.length; x++){
            for(int y = 0; y < a.length; y++){
                for(int z = 0; z < a.length; z++){
                    kali = a[x][z] * b[z][y];
                    tambah += kali;
                }
                tempa[x][y] = tambah;
                tambah = 0;//mengeset nilai tambah menjadi 0 agar perulangan berikutnya, variable tambah tidak membawa nilai sebelumnya
            }
        }
        for(int x = 0; x < temp.length; x++){
            for(int y = 0; y < temp.length; y++){
                System.out.print(temp[x][y] + " ");//menampilkan hasil akhir matrix dari proses di atas
            }
            System.out.println("");
        }
    }
}

Contoh si atas merupakan contoh perkalian matrix 2 X 2, Temen - temen bisa nambahin sendiri sesuai keinginan temen - temen, script di atas berlaku untuk ordo 3 X 3, 4 X 4, 5 X 5,dst.
Semoga Bermanfaat!

Minggu, 24 April 2011

Link List

Sebagai lanjutan dari artikel sebelumnya tentang cara menampilkan Linked List, kali ini Ane mau sedikit share tentang cara mengakses linked list.
Oke, pada contoh kali ini nama class yang berisi data adalah Kotak:
berikut ini adalah cara untuk menghapus angka setelah data yang di cari:
public Kotak hapusSetelah(int cari){
        Kotak point = awal;
        while(awal.angka != cari){//Proses selama angka awal tidak sama dengan angka yang dicari
            awal = awal.next;
        }
        return point;
    }
cara untuk menghapus data sebelum data yang dicari:
    public Kotak hapusSebelum(int cari){
        Kotak point = awal;
        while(awal.angka == cari){
            if(awal.next == null){//Proses ini mengeset nilai setelah angka yang di cari null, link list akan berhenti
                return null;
            }
        }
        return point;
    }
cara untuk menghapus salah satu data pada Link List:
Kotak point1 = awal;
        Kotak point2 = awal;
        while(point1.angka != hapus){
            if(point1.next == null){
                return null;
            }
            else{
                point2 = point1;
                point1 = point1.next;
            }
        }
        if(point1 == awal){//proses ini berlaku apabila angka yang keluar dari perulangan while adalah angka yang paling awal
            awal = awal.next;//data awal "loncat" ke data berikutnya sehingga data paling awal tidak dicetak
        }
        else{//proses ini berlaku apabila angka yang keluar dari perulangan while selain angka paling awal
            point2.next = point1.next;
        }
        return point2;
    }
cara untuk mencari data yang diinginkan:
Kotak point1 = awal;
        Kotak point2 = awal;
        while(point1.angka != cari){
            if(point1.next == null){
                return null;
            }
            else{
                point2 = point1;
                point1 = point1.next;
            }
        }
        if(point1 == awal){//apabila angka yang dicari berada paling awal
            point1.next = null;
        }
        else{//apabila angka yang dicari selain data awal
            awal = point2.next;//mengeset nilai awal menjadi data yang di cari
            point1.next = null;//mengeset nilai setelah data yang dicari adalah null, link list berhenti
        }
        return point1;
    }
cara untuk memasukkan data setelah angka yang ditunjuk:
public Kotak insertSetelah(int insert){
        Kotak masuk = new Kotak(7, 7.0, "tujuh");
        Kotak point1 = awal;
        Kotak point2 = awal;
        while(point2.angka != insert){
            if(point2.next == null){
                return null;
            }
            else{
                point2 = point1;
                point1 = point1.next;
            }
        }
        if(point2 == awal){//apabila data yang dimasukkan setelah data awal
            awal.next = masuk;
            masuk.next = point1;
        }
        else{//apabila data yang dimasukkan setelah data selain
            point2.next = masuk;
            masuk.next = point1;
        }
        return point1;
    }
cara untuk memasukkan data sebelum angka yang ditunjuk:
    public Kotak insertSebelum(int insert){
        Kotak masuk = new Kotak(6, 6.0, "enam");
        Kotak point1 = awal;
        Kotak point2 = awal;
        while(point1.angka != insert){
            if(point1.next == null){
                return null;
            }
            else{
                point2 = point1;
                point1 = point1.next;
            }
        }
        if(point1 == awal){
            point1 = null;
        }
        else{
            point2.next = masuk;
            masuk.next = point1;
        }
        return point1;
    }

Jangan lupa bahwa method di atas diletakkan di class KotakList. Untuk lebih jelasnya lihat artikel sebelumnya.
Semoga artikel ini bermanfaat. Mohon maap apabila ada kesalahan :)

Pada artikel mendatang akan dijelaskan tentang penerapan link list.Check it out!!!

Rabu, 06 April 2011

5 Istilah

Internet itu interconnected networking (network yang dapat saling terkoneksi). Dari namanya saja kita bisa mendefinisikan bahwa internet adalah koneksi network yang sangat luas, bisa mencapai seluruh dunia yang dapat terkoneksi. Karena network yang luas tersebut saling terkoneksi, maka diperlukan suatu jaringan. Jaringan komputer di bagi menjadi tiga berdasarkan luas jangkauannya yaitu 1. LAN (Local Area Network) 2. (Metropolitam Area Network) 3. (Wide Area Network). contoh dari internet adalah e-book, e-mail, e-commerce semuanya adalah contoh dari internet dimana setiap layanan juga menyediakan informasi yang berbeda. Karena di dalam internet ada proses pertukaran informasi, pastinya ada pihak yang menyediakan informasi dan ada juga pihak yang menerima informasi. Pihak yang menyediakan informasi disebut juga dengan server. Komputer server dilengkapi dengan spek yang besar karena server ini harus melayani berbagai informasi yang dibuthkan oleh pihak - pihak yang membutuhkan informasi seperti sistem operasi khusus, RAM yang besar, dll.  Contoh HTTP server dan FTP server. Pihak yang menerima informasi tersebut dapat juga disebut dengan client contoh client TFTP dan client FTP. Untuk mendapatkan informasi yang dibutuhkan, pastinya dibutuhkan suatu alat yang dapat digunakan untuk menemukan informasi yang dibutuhkan. alat ini disebut juga dengan search engine (alat pencari). Alat yang digunakan ini bukan dalam bentuk hardware, namun alat ini dalam bentuk software.Software inilah yang nantinya menjadi alat untuk mencari informasi yang kita inginkan. Contoh dari search engine adalah www.google.com dan www.ask.com. Nah, dalam pengiriman dan penerimaan suatu informasi dibutuhkan suatu jaringan.Jaringan juga mempunyai metode - metode tertentu untuk bertukar informasi yang dapat disebut juga dengan routing. Routing dapat digunakan untuk meneruskan jaringan satu dengan jaringan lainnya. Routing juga dapat digunakan untuk menggabungkan jaringan satu dengan jaringan lainnya sehingga data dapat diteruskan dari jaringan yang satu ke jaringan lainnya. Alat yang digunakan untuk routing disebut juga dengan router. Contohnya adalah Microtik routerOS dan cisco router.

Selasa, 05 April 2011

Menampilkan Link List

"Jadi Linked List adalah blabalabla....". Beginilah kata dosen struktur data pas nerangin tentang linked list. Alhasilbanyak temen - temen yang gak ngerti...
tapi ada juga yang ngerti, selamat untuk temen - temen yang udah ngerti d^_^b
untuk ngebantu temen - temen yang belum ngerti, ane coba jelasin linked list versi ane sendiri. Sebelumnya, bersihkan otak kalian yang beranggapan bahwa linked list adalah suatu metode yang di sediakan oleh java. linked list adalah methode yang kita buat sendiri dengan gambaran sebagai berikut:




berikut ini cara menampilkan linked list:
public class Kotak{
int angka;
String nomer;
Link next;//attribut yang mencakup seluruh attribut dan method yang berada dalam class Link

public Kotak(int angka, String nomer){
this.angka = angka;
this.nomer = nomer;
}

public void tampilLink(){
System.out.print(angka + " " + nomer + " ");
}
}

public class LinkList{
Link awal;//attribut pada LinkList yang mencakup semua attribut dan methodnya
public LinkList(){
awal = null;
}
public void tambahAwal(int angka, String nomer){//fungsi untuk memasukkan data
Link kotak = new Link(angka, nomer);
kotak.next = awal;//mindah inputan pertama jadi inputan berikunya
awal = kotak;//masukin data ke kotak kosong pertama
}
public void KotakList(){
System.out.println("Data: ");
while(awal != null){
awal.tampilKotak();
awal = awal.next;
}
}
}

public classs Main{
public static void main(String[] args){
KotakList test = new KotakList();
test.tambahAwal(1, "satu");
test.tambahAwal(2, "dua");
test.tambahAwal(3, "tiga");
test.tampilKotakList();
}
}

Sebenernya nampilin Linked List cuma pake script di atas, untuk mengakses Lingked List akan ane bahas di artikel ane berikutnya.