Kamis, 29 Januari 2015

array fungtion

Array.short()
mengurutkan nilai dalam array dari nesar ke kecil

int[]aku=new int[5]{3,4,2,1,6};
Array.short(aku);

output 12346

Array.lastIndexOf()
seperti .indexOf tetapi pencarian dimulai dari belakang

int[]aku=new int[5]{3,4,2,1,6};
Array.lastIndexOf(aku)

output 6

 Arrays.toString()
untuk mengkonversi bentuk array ke dalam bentuk string

int[]aku=new int[5]{3,4,2,1,6};
String nana= Arrays.toString(aku)

output nana=3,4,2,1,6


System.arraycopy(x,x,x,x,x )

digunakan untuk menyalin data dari sebuah array ke array lain

int[] sumber = {1,2,3,4,5};
int[] target = new int[3];
System.arraycopy(sumber, 1, target, 0, 3 ); // 2 3 4

array2 = (int[]) array1.clone();

mendublikasi nilai dari array 1 ke array2

int[] sumber = {1,2,3,4,5};
target = (int[]) sumber.clone(); // 12,3,4,5
p(target);

string class function







Rabu, 21 Januari 2015

Algoritma pemrograman Matrik dalam JAVA

Matrik adalah struktur penyompanan data di dalam memori utama yang setiap individu elemenya diacu dengan menggunakan 2 buah indeks (indeks baris dan indeks kolom ).

1234  --> baris
2345
1234
kolom.

indeks baris dan kolom dapat juga kita asumsikan sebagai tabel 2 dimensi sejajar sumbu x dan sejajar sumbu y.


 algoritma program untuk menggeser matrik.

package matriks;
import java.util.Scanner;
public class Matriks {

public static void main(String[] args) {
   int [][] ori ={{5,1,2},{7,9,4},{2,9,1}};
// ini adalah isi dari      matrik yang pertama atau nilai originalnya
   int [][]q= new int [3][3]; 
// matrik untuk menampung data yang      sudah di proses.

   for (a=0;a<3;a++){
//menampilkan matrik awal                   
       for(b=0;b<3;b++){
          System.out.print(ori[a][b]);  
      }
       System.out.println();
   }
   for (a=0;a<3;a++){              //di geser ke kanan 1x(SHL)
       for(b=2;b>=0;b--){
          c=b-1; // 
          if (c==-1&&b==0){
              q[a][2]=ori[a][0];
          }else{
               q[a][c]=ori[a][b];
          }   
        }
    }              
    for (a=0;a<3;a++){             
        for(b=0;b<3;b++){
           ori[a][b]=q[a][b];
           System.out.print(ori[a][b]);  
        }
        System.out.println();

    }
}

dalam program diatas menggunakan 2 variabel  dalam perulangan dengan maksud untuk memisahkan indeks dengan sumbu y dan x.
c sebagai variabel bantu untuk menggeser nilai dari indeks. matrik q aadalah tempat penyimpanan sementara matrik ori. matrik tersebut dapat di geser pada kolom karena indeks b(kolom) mempunyai 1 pergeseran dengan c .

hasil :

512   matrik ini adalah nilai awal
794
291

125 matrik ini adalah nilai setelah digeserke kiri 1 step.
147
912
 algoritma program untuk menukar kolom dan baris

package matriks;
import java.util.Scanner;
public class Matriks {

public static void main(String[] args) {
   int [][] ori ={{5,1,2},{7,9,4},{2,9,1}};
// ini adalah isi dari      matrik yang pertama atau nilai originalnya
   int [][]q= new int [3][3]; 
// matrik untuk menampung data yang      sudah di proses.

   for (a=0;a<3;a++){
//menampilkan matrik awal                   
       for(b=0;b<3;b++){
         q=[a][b]=ori[a][b]; // menyimpan ori dalam q 
      }
       System.out.println();
   }
   for (a=0;a<3;a++){              //menukar kolom dan baris TRANS
            for(b=0;b<3;b++){
                ori[a][b]=q[b][a];
             System.out.print(ori[a][b]);  
            }
            System.out.println();
        }System.out.println();
}


untuk nenukar kolom dan baris kita hanya menukar indeks matrik asal dan matrik penampung. pertama matriks harus disimpan dahulu ke dalam matriks lain untuk menghindari kesalahan saat penukaran. lalu kita tinggal menukar indeks asal (matriks ori ) dengan indeks pada matrik penyimpan (matrik q),

hasil 
512   matrik ini adalah nilai awal
794
291

572 matrik setelah dirotasi
199
241


algoritma program untuk merotasi matrik

package matriks;
import java.util.Scanner;
public class Matriks {

public static void main(String[] args) {
   int [][] ori ={{5,1,2},{7,9,4},{2,9,1}};
// ini adalah isi dari      matrik yang pertama atau nilai originalnya
   int [][]q= new int [3][3]; 
// matrik untuk menampung data yang      sudah di proses.

   for (a=0;a<3;a++){
//menampilkan matrik awal                   
       for(b=0;b<3;b++){
          System.out.print(ori[a][b]);  
      }
       System.out.println();
   }
   for (a=0;a<3;a++){  //rotasi cw       
       for(b=0;b<3;b++){
           c=0;d=0;
           if(a!=0 && a!= 2&& b!=0 && b!=2){
              c=b;d=a;
           }else if(a==0&&b!=2){// baris paling atas geser kiri
              c=b+1;d=a;  
           }else if (a!=2&&b==2){//ujung kanan atas turun
               d=a+1;c=b;
           }else if(b==0&&a!=0){// kolom kiri naik
               d=a-1;c=b;
           }else if(a==2&&b!=0){// baris bawah ke kiri
               c=b-1;d=a;
           }
       q[a][b]=ori[d][c];
       }  
   }         
  for (a=0;a<3;a++){             
      for(b=0;b<3;b++){
         ori[a][b]=q[a][b];
          System.out.print(ori[a][b]);  
       }
       System.out.println();

   } System.out.println();
}

  algoritma untuk merotasi matrik ini merupakan gabungan dari algoritma penggeseran matrik. dimana dalam prosesnya mengalami 4 pergeseran kekiri kekanan keatas dan kebawah. karena ini lebih komples maka seleksi programnya lebih banyak. kita perlu mengidentifikasi mana yang harus bergeser kekiri, kekanan keatas maupun ke bawah dengan tepat.

512   matrik ini adalah nilai awal
794
291

751 hasil dari rotasi searah dengan jarum jam
292
914

demikian 3 algoritma seputar matrik yang saya sampaikan semoga bermanfaat ^_^

Senin, 12 Januari 2015

Algoritma Sorting

ALGORITMA MARGE SORT



Konsep Algoritma Merge Sort
Secara konseptual, untuk sebuah array berukuran n, Merge Sort bekerja sebagai berikut: 
  1. Jika bernilai 0 atau 1, maka array sudah terurut. Sebaliknya: 
  2. Bagi array yang tidak terurut menjadi dua subarray, masing-masing berukuran n/2. 
  3. Urutkan setiap sub-array. Jika sub-array tidak cukup kecil, lakukan rekursif langkah 2 terhadap sub-array
  4. Menggabungkan dua sub-array kembali menjadi satu array yang terurut.


Merge sort menggabungkan dua ide utama untuk meningkatkan runtimenya:

  1. Array kecil akan mengambil langkah-langkah untuk menyortir lebih sedikit dari array besar. 
  2. Lebih sedikit langkah yang diperlukan untuk membangun sebuah array terurut dari dua buah array terurut daripada dari dua buah array tak terurut.


Kompleksitas Merge Sort 
Dalam algoritma ini, jumlah perbandingan yang terjadi bergantung pada h dan m. Kondisi terburuk terjadi ketika perulangan berhenti, karena salah satu indeks, sebut saja i, telah mencapai titik berhentinya dimana indeks lain j telah mencapai m – 1, lebih rendah 1 dari titik berhentinya. Sehingga, W(h,m) = h + m – 1 
Jumlah keseluruhan perbandingan adalah jumlah banyaknya perbandingan dalam pemanggilan rekursif merge sort dimana U sebagai input, banyaknya perbandingan dalam pemanggilan rekursif merge sort dimana V sebagai input, dan banyaknya perbandingan di top-level pemanggilan merge. Sehingga, W(n) = W(h) + W(m) + h + m – 1 
Pertama, kita menganalisa kasus diaman n adalah eksponen dari 2. Dalam kasus ini, Ekspresi untuk W(n) menjadi Ketika besar input adalah 1, kondisi pemberhentian terpenuhi dan tak ada penggabungan. Sehingga, W(1) adalah 0. 
Solusi dari rekurens tersebut adalah Merge Sort akan selalu membagi dua tiap sub-arraynya hingga mencapai basis, sehingga kompleksitas dari algoritma Merge Sort, berlaku untuk semua kasus (Worst Case = Best Case = Average Case).


ALGORITMA BRUTE FORCE 


Konsep Algoritma Brute force 
Secara konseptual, brute force bekerja sebagai berikut: 
  1. Mula-mula pattern dicocokkan pada awal teks. 
  2. Dengan bergerak dari kiri ke kanan, bandingkan setiap karakter di dalam pattern dengan karakter yang bersesuaian di dalam teks sampai: 
    • semua karakter yang dibandingkan cocok atau sama (pencarian berhasil), atau 
    • dijumpai sebuah ketidakcocokan karakter (pencarian belum berhasil) 
  3. Bila pattern belum ditemukan kecocokannya dan teks belum habis, geser pattern satu karakter ke kanan dan ulangi langkah 2.
Penjelasan• Brute force adalah sebuah pendekatan yang sangat jelas(straightforward) untuk memecahkan suatu persoalan, biasanya didasarkan pada problem statement dan definisi konsep yang dilibatkan. Algoritma brute force memecahkan masalah dengan sangat sederhana, langsung dan dengan cara yang jelas. 
• Contoh algoritma yang menggunakan brute force antara lain : buble sort,     convex hull, closest pair, travelling salesman problem, knapsack, string   matching, dan selection sort.
• Contoh-contoh masalah yang dipecahkan secara brute force:
• Menghitung an (a > 0, n adalah bilangan bulat tak-negatif)
   • an = a × a × … × a (sebanyak n kali) , jika n > 0
   • a=1 , jika n = 0
   • Algoritma: kalikan 1 dengan a sebanyak n kali 
Pseudocode
• function pangkat(input a, n : integer) integer
• { Menghitung an, a > 0 dan n bilangan bulat tak-negatif
• Masukan: a, n
• Keluaran: nilai perpangkatan.
• }
• Deklarasi
• k, hasil : integer
•• Algoritma:
• hasil 1
• for k 1 to n do
• hasil hasil * a
• endfor
• return hasil• 
Cara kerja• Secara konseptual, brute force bekerja sebagai berikut:• Mula-mula pattern dicocokkan pada awal teks.• Dengan bergerak dari kiri ke kanan, bandingkan setiap karakter di dalam pattern dengan karakter yang bersesuaian di dalam teks sampai:• semua karakter yang dibandingkan cocok atau sama (pencarian berhasil), atau• dijumpai sebuah ketidakcocokan karakter (pencarian belum berhasil)• Bila pattern belum ditemukan kecocokannya dan teks belum habis, geser pattern satu karakter ke kanan dan ulangi langkah 2. 
Keunggulan brute force• Metode brute force dapat digunakan untuk memecahkan hampir sebagian besar masalah (wide applicability).• Metode brute force sederhana dan mudah dimengerti.• Metode brute force menghasilkan algoritma yang layak untuk beberapa masalah penting seperti pencarian, pengurutan, pencocokan string, perkalian matriks.• Metode brute force menghasilkan algoritma baku (standard) untuk tugas-tugas komputasi seperti penjumlahan/perkalian n buah bilangan, menentukan elemen minimum atau maksimum di dalam tabel (list). 
Kelemahan brute force• Metode brute force jarang menghasilkan algoritma yang mangkus.• Beberapa algoritma brute force lambat sehingga tidak dapat diterima.• Tidak sekontruktif/sekreatif teknik pemecahan masalah lainnya. 
Kompleksitas dan running time• Kompleksitas algoritma ini adalah O(n).• Running time brute force adalah : n-1 multiplications

Kekuatan dan kelemahan brute force 
Kekuatan: 
  1. Metode brute force dapat digunakan untuk memecahkan hampir sebagian besar masalah (wide applicability). 
  2. Metode brute force sederhana dan mudah dimengerti. 
  3. Metode brute force menghasilkan algoritma yang layak untuk beberapa masalah penting seperti pencarian, pengurutan, pencocokan string, perkalian matriks. 
  4. Metode brute force menghasilkan algoritma baku (standard) untuk tugas-tugas komputasi seperti penjumlahan/perkalian n buah bilangan, menentukan elemen minimum atau maksimum di dalam tabel (list) 


Kelemahan

  1. Metode brute force jarang menghasilkan algoritma yang mangkus. 
  2. Beberapa algoritma brute force lambat sehingga tidak dapat diterima. 
  3. Tidak sekontruktif/sekreatif teknik pemecahan masalah lainnya. 
Ken Thompson (salah seorang penemu Unix) mengatakan: “When in doubt, use brute force”, faktanya kernel Unix yang asli lebih menyukai algoritma yang sederhana dan kuat (robust) daripada algoritma yang cerdas tapi rapuh.



Best First Search

• Teknik pencarian Best First Search merupakan kombinasi antara Depth First Search danBreadth First Search.

• Teknik ini memperbolehkan pencarian dengan mengunjungi node yang ada di level yang lebih rendah, jika ternyata node yang lebih tinggi memiliki nilai heuristik yang lebih buruk.

• Tak seperti Hill Climbing, teknik Best First Search mempunyai kemampuan melakukan koreksi terhadap suatu langkah yang salah yang telah dipilih lebih dulu.

• Ini merupakan salah satu keuntungan utama Best First Search daripada teknik Hill ClimbingBest First Search bisa dijalankan dengan dua cara, yakni : OR Graph dan Algoritma A*.

->OR Graph
Untuk menjalankan cara ini, dibutuhkan 2 antrian, yakni OPEN dan CLOSED.

– Suatu node disebut open apabila node tersebut telah dibangkitkan dan sudah memiliki fungsi heuristik tetapi belum diuji. Umumnya berupa antrian berprioritas yang berisi elemen-elemen dengan nilai heuristik tertinggi.


– Suatu node disebut closed jika node tersebut telah diperluas untuk membangkitkan turunannya.


-> Algoritma A*

– Untuk mengukur kebaikan dari suatu node dalam algoritma A*, diperlukan dua fungsi biaya, yakni biaya heuristik dan biaya pembangkitan. Biaya heuristik mengukur jarak dari node x yang sekarang menuju ke tujuan dan dinyatakan dengan h(x). Sedangkan biaya pembangkitan node x yang dinyatakan dengan g(x) adalah untuk mengukur jarak dari node x ke node awal dalam graph. Total fungsi biaya yang dinyatakan dengan f(x) adalah jumlah g(x) tambah h(x).


– G(x) dapat diukur dengan mudah saat node x dibangkitkan melalui beberapa transisi keadaan. Misalnya, jika node x dibangkitkan dari node awal melalui transisi keadaan m, biaya g(x) akan menjadi proporsional ke m. Lalu, bagaimana mengevaluasi h(x)? Kemungkinan bahwa h(x) adalah biaya yang keluarkan untuk mencapai tujuan. Jelasnya, biaya apapun dapat dinyatakan sebagai h(x) melalui prediksi. Biaya yang diprediksi untuk h(x) dinyatakan dengan h’(x). Oleh karena itu, biaya total yang diprediksikan dinyatakan dengan f’(x) di mana:

F’(x) = g(x) + h’(x)

Minggu, 11 Januari 2015

cara instal eclipse

download eclipse dari
http:// www.eclipse.org/

setelah dile download siap instal eclipse di PC anda..
pilih lokasi penyimpanan untuk install eclipse..


 tumggu proseb beberapa saat
 eclipse siap di gunakan...


Flow Control

PEMILIHAN 
pada pemilihan menpunyai 2 instruksi yang biasa diguanakan. yaitu if dan switch case

1. if
if memiliki 3 bentuk dasar yang dapat digunakan oleh seorang programer. 
a. if tunggal
if (kondisi) {
   aksi;
 }


b. if- else
  
if(kondisi){
  aksi1;
}
 else{
   aksi2;
}










c. if bersarang
if (kondisi1){
   aksi1;
}
else{
   if (kondisi2){
      aksi2;
   }
   else{
      if (kondisi3){
         aksi3;
      }
   }
}

2. switch
switch (ekspresi){
case 1 :aksi1;
   break;
case 2 :aksi2;
   break;
case 3 : aksi3;
   break;
case 4 : aksi4;
   break;
case 5 : aksi5;
   break;
   default : aksi default;
}

kapan kita harus mengguanakan switch dan kapankah kita harus menggunakan if?
-->if bila perbandinganya terdapat range di dalamnya dan variabel pembandingnya lebih dari 1 variabel.
-->switch bila perbandinganya merupakan data yang acak, atau melompat tak beraturan. dan hanya terdapat 1 variabel pembanding

PERULANGAN


Repetition atau perulangan adalah sebuah kondisi dimana jika sebuah kondisi terpenuhi maka akan terus mengeksekusi baris perintah yang ada didalamnya sampai kondisi tersebut tidak terpenuhi lagi. Berikut merupakan struktur umum dari perulangan :

<inisialisasi> // kondisi awal

awal pengulangan // uji kondisi


badan pengulangan

akhir pengulangan // aksi

<terminasi>


Keterangan :

- Inisialisasi : pengesetan awal variabel kontrol. Variabel kontrol harus dimulai dari suatu nilai tertentu.

- Awal pengulangan (kondisi) : kondisi Boolean yang menentukan berakhir atau tidaknya suatu perulangan. Perulangan akan terus berjalan ketika suatu kondisi masih memenuhi atau bernilai true.

- Badan pengulangan (proses) : perintah-perintah yang dilakukan perulangan.

- Akhir pengulangan (inkremen/dekremen) : peningkatan atau penurunan variabel kontrol. Variabel kontrol akan diinkremen/didekremen setiap kali melakukan perulangan. Biasanya hal ini dijadikan suatu kontrol dalam suatu kondisi.



- Terminasi : statement terakhir yang merupakan akhir dari sebuah perulangan.

a. for

control struktur for digunakan untuk melakukan perulangan dengan kondisi dan syarat yang ditenrukan.




b. while

Kontrol struktur while digunakan untuk melakukan perulangan. While akan menyeleksi kondisi apakah sesuai atau tidak, bila sesuai while akan mengksekusi program di dalamya. Bila kondisi tidak seuai maka akan melanjutkan program setelahnya.


c. do-while


do-while mempunya fungsi yang serupa dengan while. Namun memiliki perbedaan dalam eksekusinya. Pada do while program akan dieksekusi terlebih dahulu barulah kondisi dalam while di seleksi apakah sesuai atau tidak. Bila sesuai program akan dieksekusi kembali namun bila tidak sesuai program akan melanjutkan perintah selanjutnya.


Senin, 05 Januari 2015

Tipe Data dalam pemrograman JAVA

Tipe data dalam pemrograman java dapat di bagi menjadi 2 bagian

1.Tipe data primitif


Tipe data primifif terdiri dari tipe data yang sudah ada. 

Pemberian nilai pada variabel dengan tipe data primitif biasanya dilakukan dengan operator prnugasan (=)

int a;
a=6;

2.    tipe data class

Tipe data class merupakan tipe data buatan kita sendiri, dapat berisi beberapa tipe data primitif sekaligus di dalamnya.
Tipe data class juga dapat memiliki beberapa metode di dalamnya sedangkan tipe data primitif tidak bisa.


Contoh : string merupakan tipe data class

string k =”hula-hula”;
s.lenght=9;

contoh

struct siswa{
public string nama = "";
public int umur = ;
}
Int main{
siswa ani;
strcpy(ani.nama,”anisa”);
}



tipe data class string memiliki metode khusus untuk menghitung banyak karakter di dalamnya.
Perubahan jenis tipe data (type casting)
Sebuah data dapat diolah dalam satu kesatuan jika memiliki tipe data yang sama

int a=5;
double phi=3.14,area;
area= phi*(double)a*(double)a;