Selasa, 29 Maret 2011

Program Hitung Akar Persamaan Kuadrat

Iseng-iseng bikin program pake java sebagai hobby baru saya, seseorang yang punya hobby belajar menggunakan program-program opensource hingga sampai ke level pemrograman .... yaa, namanya juga hobby ... kalo nggak dikerjakan gelisah dah ...

Ini merupakan bagian dari komitmen saya untuk menggunakan linux dan FOSS.
Mengapa java? Kebetulan saja, karena saya setiap hari menggunakan HP berbasis Java, jadinya tertarik dah ...  Selain itu, karena java betul-betul memegang prinsip compiled once, run anywhere, yang penting pada komputer tersebut sudah terinstall java virtual machine (JDK = Java Development Kit untuk kompilasi dan JRE = Java Runtime Environment untuk menjalankan program).

Source code dari program ini terdiri dari 2 file berekstensi java, yaitu:
  • AkarKuadrat.java dan
  • HitungAkarKuadrat.java

Kompilasi masing-masing file tersebut dengan perintah :
javac [namafile]
Ganti [namafile] dengan file-file tersebut di atas.

Setelah itu akan terbentuk 2 file berekstensi class, yaitu :
  • AkarKuadrat.class
  • HitungAkarKuadrat.class
Untuk menjalankan program tersebut gunakan perintah berikut pada konsol / terminal di komputer Anda :
 java HitungAkarKuadrat [a] [b] [c]

Anda harus mengganti [a] [b] [c] dengan suatu bilangan bulat, misalnya :
java HitungAkarKuadrat 1 -5 16
untuk menghitung akar kuadrat dari : x2 - 5x + 16 = 0.

Program ini juga bisa menampilkan hasil nilai akar kuadrat walaupun nilai determinan negatif, yaitu dengan menampilkannya dalam bentuk variabel i (bilangan imaginer).

Jika terjadi kesalahan input jumlah argumen yang kurang atau lebih dari 3, dan jika argumen bukan berupa angka, maka program ini akan memberi tahu kepada Anda kesalahan tersebut, dan bagaimana cara penulisan yang benar. Ini merupakan salah satu keunggulan java yang mampu menangani eksepsi atau kesalahan yang terjadi melalui blok pernyataan :

try {
     pernyataan(-pernyataan);
}catch(kelas dan variabel eksepsi){
     pernyataan(-pernyataan) eksepsi;
}

Berikut adalah source code dari program menghitung akar kuadrat berbasis java  tersebut :

  • File AkarKuadrat.java
    //Berkas AkarKuadrat.java
    //Author : Tri Sapto Adji, S.Pd. @Manokwari, Papua Barat


    public class AkarKuadrat {
        private int a;
        private int b;
        private int c;
        double x1;
        double x2;
        double determinan;

        public AkarKuadrat(int a, int b, int c) {
            this.a = a;
            this.b = b;
            this.c = c;

            double d = Math.pow(this.b, 2) - 4*this.a*this.c;
            this.determinan = d;

            double x1 = ((-1*(this.b)) + Math.sqrt(this.determinan))/(2*this.a);
            this.x1 = x1;
            double x2 = ((-1*(this.b)) - Math.sqrt(this.determinan))/(2*this.a);
            this.x2 = x2;
        }
       
        int nilaiA() {
            return this.a;
        }

        int nilaiB() {
            return this.b;
        }

        int nilaiC() {
            return this.c;
        }
    }//Akhir Berkas AkarKuadrat.java

    • File HitungAkarKuadrat.java
    //Berkas HitungAkarKuadrat.java
    //program ini membutuhkan berkas AkarKuadrat.class pada direktori kerja
    //Author : Tri Sapto Adji S.Pd. @Manokwari, Papua Barat


    public class HitungAkarKuadrat {
        public static void main(String[] args) {
            if(args.length != 3){
                 System.err.println("\nOops ... Jumlah argumen yang Anda masukkan tidak sesuai ....");
                System.err.println("Harus ada 3 argumen...");
                System.err.println("Sintaks penulisan yang benar adalah : java HitungAkarKuadrat [a] [b] [c]");
                System.err.println("Dimana
    [a] adalah argumen pertama, [b]adalah argumen kedua dan [c]  adalah argumen ketiga\n");
                System.exit(1);
            }
          try{
            int a = Integer.valueOf(args[0]).intValue();
            int b = Integer.valueOf(args[1]).intValue();
            int c = Integer.valueOf(args[2]).intValue();
            AkarKuadrat ak = new AkarKuadrat(a,b,c);

            System.out.println("\n        ----------------------------------");
            System.out.println("        | author : Tri Sapto Adji, S.Pd. |");
            System.out.println("        |     @ Manokwari, Papua Barat   |");
            System.out.println("        ----------------------------------");
            System.out.println("\nMENGHITUNG AKAR PERSAMAAN KUADRAT (ax^2 + bx + c = 0)");
            System.out.println("=====================================================\n");
            System.out.println("Anda memasukkan nilai : a = " + ak.nilaiA() + ", b = " + ak.nilaiB() + ", c = " + ak.nilaiC());
            if(ak.nilaiA() == 0) {
                System.out.println("Ada kesalahan, nilai a tidak boleh 0!");
                System.out.println("Silahkan coba lagi ... :)\n");
                System.exit(2);
            }
            System.out.println("\nHasil perhitungan : ");
            System.out.println("-------------------");
            if(ak.determinan < 0) {
                System.out.println("Determinan D = " + ak.determinan +" atau D = " + Math.abs(ak.determinan)+"i");
                if(ak.nilaiB() == 0) {
                    System.out.println("Akar pertama x1 = ("+ Math.sqrt(Math.abs(ak.determinan))+"i)/" + (2*ak.nilaiA()));
                    System.out.println("Akar kedua   x2 = ("+ Math.sqrt(Math.abs(ak.determinan))+"i)/" + (2*ak.nilaiA()));
                }else {
                    System.out.println("Akar pertama x1 = ("+ -ak.nilaiB() + " + "+ Math.sqrt(Math.abs(ak.determinan))+"i)/" + (2*ak.nilaiA()));
                    System.out.println("Akar kedua   x2 = ("+ -ak.nilaiB() + " - "+ Math.sqrt(Math.abs(ak.determinan))+"i)/" + (2*ak.nilaiA()));
                }
            }else {
            System.out.println("Determinan D = " + ak.determinan);
            System.out.println("Akar pertama x1 = " + ak.x1);
            System.out.println("Akar kedua   x2 = " + ak.x2);
            }
            System.out.println("");
          }catch(NumberFormatException nfe) {
            System.err.println("\nAnda memasukan argumen yang bukan berupa angka ..!");
            System.err.println("Sintaks penulisan yang benar adalah : java HitungAkarKuadrat [a] [b] [c] 
    \nNilai [a], [b], [c] harus berupa angka!\n");
            System.exit(3);
          }
        }
    }//Akhir Berkas HitungAkarKuadrat.java


    Indahnya berbagi .... :)

    Tidak ada komentar:

    Posting Komentar

    Pintar Kimia Terms of Use

    By downloading or using the app, these terms will automatically apply to you – you should make sure therefore that you read them carefully b...