April 28, 2012

LOGIKA KORELASI


import java.util.Scanner;
class Korelasi {
            Scanner input = new Scanner(System.in);
    double[] x;
    double[] y;
    double[] x2;
    double[] y2;
    double[] xy;
    int n;           
public Korelasi() {
            menu();
}
            Perintah diatas merupakan kelas yang diberi nama Korelasi, dan terdapat pendeklarasian variable yang akan digunakan dalam program yang bertipe data double dan integer. Didalamnya juga terdapat method Korelasi dimana didalamnya akan memanggil fungsi menu.

public void menu() {
             System.out.println("------------------");
     System.out.println("| Menu Utama     |");
     System.out.println("| 1. Input       |");
     System.out.println("| 2. Korelasi    |");
     System.out.println("| 3. Keluar      |");
     System.out.println("------------------");
     System.out.print("Masukkan Pilihanmu  : " );
     int pil = input.nextInt();
     switch(pil) {
                        case 1:
                                    clean();                       
                                    try{
                                    input();
                                    }catch(IndexOutOfBoundsException ex){
                                    System.out.println("Ada Kesalahan pada proses IO");
                                    }
                                    clean();
                                    menu();
                        case 2:
                                    clean();
                                    hitungKorelasi();
                                                menu();
                        case 3:
                                    System.out.println("exiting...");
                                    System.exit(0);
                        default:
                                                System.exit(0);}}
            Blok perintah diatas merupakan method dari fungsi menu dimana akan menampilkan menu pilihan pada saat program dijalankan. Untuk menginputkan pilihan yang diinginkan dengan menggunakan perintah int pil = input.nextInt. Didalamnya juga ada bentuk kondisi yang menggunakan switch case, dimana case 1 digunakan untuk menjalankan program menu yang pertama, di case1 ini fungsi clean digunakan untuk membersihkan layar saat program dijalankan kemudian memanggil fungsi input, di dalam case ini pun terdapat blok try catch yang dimana akan mendeteksi kesalahan jika ada, jika program menemukan keselahan maka akan tercetak “Kesalahan pada proses IO” kemudian memanggil fungsi clean lagi dan menjalankan fungsi menu untuk menampilkan menu pilihan kembali. Case 2 digunakan untuk menjalankan menu pilihan yang kedua dimana didalamnya terdapat fungsi clean dan memanggil fungsi hitungKorelasi, kemudian menjalankan fungsi menu lagi. case 3 digunakan untuk menjalankan menu pilihan yang ketiga, pertama akan mencetak “exiting” baru keluar dari program yang sedang dijalankan. Perintah defaultnya digunakan untuk keluar dari program jika salah memasukkan pilihan.
 public void clean() {
            for (int i=0;i<=20;i++) {
                        System.out.println("\n");
            }}
            Blok perintah diatas merupakan method dari fungsi clean yang digunakan untuk menghapus layar saat program sedang dijalankan, dalam perintah diatas akan mencetak spasi sebanyak 20 baris dengan melakukan perulangan yang ada.

public void input() {
            System.out.print("masukan jumlah data :");
            n = input.nextInt();
            x= new double[n];
            y= new double[n];
            x2 = new double[n];
            y2=new double[n];
            xy=new double[n];
            System.out.print("\nmasukkan data x :\n");
            for(int i=0;i<n;i++) {
                        System.out.print("data ke-"+(i+1)+":");
                        x[i]= input.nextDouble();
            }
            System.out.println("\nmasukkan data y :");
            for(int i=0;i<n;i++) {
                        System.out.print("data ke-"+(i+1)+":");
                        y[i]= input.nextDouble();
            }
            for(int i=0 ; i<n;i++) {
                        x2[i]= Math.pow(x[i],2);
                        y2[i]= Math.pow(y[i],2);
                        xy[i]= x[i] * y[i] ;
            }}
            Blok perintah diatas merupakan method dari fungsi input yang digunakan untuk mengiput data yang diperlukan dalam program. Pertama menginputkan banyaknya data dengan menggunakan perintahn = input.nextInt. Kemudian program akan meminta untuk menginputkan data untuk variable X dengan menggunakan perulangan nilai X yang diinputkan sama dengan banyaknya data yang telah diinputkan, untuk dapat diinputkan digunakan perintah x[i] = input.nextDouble(). Setelah nilai X diinputkan maka program akan meminta untuk menginputkan nilai Y dengan menggunakan perulangan nilai Y yang diinputkan sama dengan banyaknya data yang telah diinputkan, untuk dapat diinputkan digunakan perintah y[i] = input.nextDouble(). Untuk mendapatkan nilai X2 dan Y2 tinggal dipangkatkan dari jumlah nilai X dan Y, sedangkan untuk mencari nilai XY didapatkan dari hasil perkalian nilai X dengan nilai Y.
public double sigma(double k[]) {
  double data = 0;
        for(int i=0; i<n;i++) {
                                    data = data + k[i];
                        }
                        return(data);
            }
            Blok perintah diatas merupakan method dari fungsi sigma. Dimana method ini harus dibuat terlebih dulu agar bisa digunakan dalam rumus yang akan dipakai dalam program ini.
public void hitungKorelasi() {
            double hasil = (n*sigma(xy)-sigma(x)*sigma(y)) / (Math.sqrt(n*sigma(x2)-Math.pow(sigma(x),2))*Math.sqrt(n*sigma(y2)-Math.pow(sigma(y),2)));
            System.out.println("Koefisien korelasi(r) : "+hasil);

            if(hasil > 0 ){    
                        System.out.println("hubungan dua variabel adalah paralel");
    } else if(hasil<0){
                        System.out.println("hubungan dua variabel bertolak belakang");
     } else {
                        System.out.println("tidak ada hubungan linier antara dua variabel");
                        }
            }
            Blok perintah diatas merupakan method dari fungsi hitungKorelasi. Didalam perintah ini terdapat rumus korelasi. Jika nilai-nilai yang telah diinputkan selesai diproses maka akan tercetak hasilnya. Didalam blok ini juga ada pengkondisian jika hasil lebih besar dari 0 maka akan tercetak “hubungan dua variabel adalah paralel”, jika hasil lebih kecil dari 0 maka akan tercetak “hubungan dua variabel bertolak belakang”, kemudian jika tidak keduanya maka akan tercetak “tidak ada hubungan linier antara variabel”.
public static void main(String[] args) {
new Korelasi();
}}
            Blok perintah diatas merupakan method dari fungsi utama dimana digunakan untuk menjalankan program dengan memanggil method fungsi Korelasi.