Jumat, 31 Agustus 2012

Program Kalkulator Sederhana


Program Kalkulator Sederhana

SOAL BONUS

Buatlah sebuah program dengan menggunakan bahasa java dengan  algoritma dan ketentuan berikut ini ,

Program Kalkulator Sederhana
Tools yang digunakan : Teks Editor (Notepad, Wordpad, Notepad++, Komodo, etc)


Tools yang saya gunakan kali ini sama dengan sebelumnya, yaitu NetBeans IDE 7.0.1
Ada beberapa tahap untuk menyelesaikan program tersebut, yaitu:
1.  Jangan lupa berdo’a sebelum mulai membuat program :D
2.  Buka program NetBeans IDE 7.0.1
3.  Masih pada project yang sama dengan sebelumnya, lalu buat pakage dan beri nama pakage tersebut. Contohnya: soalBonus.
4.  Dalam pembuatan program  ini saya hanya membuat 1 class. Dengan nama class kalkulatorSedrhana.class

Berikut adalah coding yang saya buat pada 2 class tersebut.

kalkulatorSedrhana.java

    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package soalBonus;

    /**
     *
     * @author HP
     */
    import java.util.Scanner;
    public class kalkulatorSederhana {
            public static void main(String[] args) {

                Scanner baca = new Scanner(System.in);  // membuat Scanner objek / Instansiasi untuk menginput dari keyboard
                System.out.println("Masukan 3 buah bilangan dilengkapi dengan 2 operator aritmatika (Beri spasi setiap karakter).");
                /** Deklarasi variable */
                double bilangan1 = baca.nextDouble();  
                String operator1 = baca.next();
                double bilangan2 = baca.nextDouble();
                String operator2 = baca.next();
                double bilangan3 = baca.nextDouble();
                // variable bilangan1,bilangan2,bilangan3 bertipe double agar bila ada hasil desimal, hasilnya bisa ditampilkan
                // variable operator1, operator2 bertipe String karena isinya berupa operator aritmatika

                boolean test = testTingkat(operator1, operator2);

                double hitungAwal = 0; // deklarasi variable hitungAwal
                double hitungAkhir = 0; // deklarasi variable hitungAkhir

                // a. setara = 3 * 4 + 5
                // b. tidak setara = 3 + 4 * 5
                if(test){
                    // pemanggilan proses hitung apabila setara/true
                    // proses hitung bila seperti contoh a. Pada contoh ini merupakan proses hitung yang setara
                    hitungAwal = hitung(new double[]{bilangan1,bilangan2},operator1);
                    hitungAkhir = hitung(new double[]{hitungAwal,bilangan3},operator2);
                }
                else{
                    // pemanggilan proses hitung apabila tidak setara/false
                    // proses hitung bila seperti contoh b. Pada contoh ini merupakan proses hitung yang tidak setara
                    hitungAwal = hitung(new double[]{bilangan2,bilangan3},operator2);
                    hitungAkhir = hitung(new double[]{bilangan1,hitungAwal},operator1);
                } 
                System.out.println(hitungAkhir);    //menampilkan hasil akhir yang ada di dalam variabel hitungAkhir
             }
            // proses hitung aritmatika
            private static double hitung(double[] bil, String op) {
            double result = 0;//deklarasi variabel result
            if (op.equals("+")) {
                result = bil[0] + bil[1];//penyeleksian untuk operator +
            } else if (op.equals("-")) {
                result = bil[0] - bil[1];//penyeleksian untuk operator -
            } else if (op.equals("*")) {
                result = bil[0] * bil[1];//penyeleksian untuk operator *
            } else if (op.equals("/")) {
                result = bil[0] / bil[1];//penyeleksian untuk operator /
            }
            return result;//meminta nilai kembali variabel result
        }
        // false tidak setingkat
        // true setingkat

        // proses menyusun tingkatkan operator
        private static boolean testTingkat(String op1, String op2){
            boolean expression = false; /* Deklarasi variabel expression, untuk menandakan apakah operator1 lebih tinggi tingkatannya daripada operator2 atau sebaliknya
             * operator * dan operator / tingkatannya lebih tinggi daripada
             * operator + dan operator -
             * operator * dan operator / = setara
             * operator + dan operator - = setara
             * apabila operator 1 dan operator 2 sama maka setara
             * operator yang lebih tinggi didahulukan diproses.
             */
            if(op1.equals("+") && op2.equals("*")){
                expression = false;// + lebih rendah dari *
            }else if(op1.equals("+") && op2.equals("/")){
                expression = false;// + lebih rendah dari /
            }else if(op1.equals("+") && op2.equals("+")){
                expression = true;// setara
            }else if (op1.equals("+") && op2.equals("-")) {
                expression = true;// setara
            }else if(op1.equals("-") && op2.equals("*")){
                expression = false;// - lebih rendah dari *
            }else if(op1.equals("-") && op2.equals("/")){
                expression = false;// - lebih rendah dari /
            }else if(op1.equals("-") && op2.equals("+")){
                expression = true;// setara
            }else if(op1.equals("-") && op2.equals("-")){
                expression = true;// setara
            }else if(op1.equals("*") && op2.equals("*")){
                expression = true;// setara
            }else if(op1.equals("*") && op2.equals("/")){
                expression = true;// setara
            }else if(op1.equals("*") && op2.equals("+")){
                expression = true;// * lebih tinggi dari +
            }else if(op1.equals("*") && op2.equals("-")){
                expression = true;// * lebih tinggi dari -
            }else if(op1.equals("/") && op2.equals("*")){
                expression = true;// setara
            }else if(op1.equals("/") && op2.equals("/")){
                expression = true;// setara
            }else if (op1.equals("/") && op2.equals("+")) {
                expression = true;// / lebih tinggi dari +
            }else if(op1.equals("/") && op2.equals("-")){
                expression = true;// / lebih rendah dari -
            }else{
                System.out.println("Error!");
            }
            return expression;//menggembalikan  nilai variabel expression
        }       
    }
Tahap selanjutnya running program pada kalkulatorSederhana.java, dan berikut merupakan hasilnya:




Tahap terakhir pada persoalan ini adalah megucap syukur atas selesainya tugas tersebut.
Meskipun hasilnya belum sempurna.

- A L H A M D U L I L L A H -

Keritik dan sarannya ditunggu ya.. semoga bisa bermanfaat..
Terimakasih. J

Untuk download file java bisa KLIK ---->  Download file.java
Untuk download file class bisa KLIK ----> Download file.class

Tidak ada komentar:

Posting Komentar