Posted by: zahracynthiadewi2 | August 31, 2012

Kalkulator Sederhana – Coding/Script

Dengan izin Allah SWT dan bantuan guru-guru Java serta teman-teman saya, akhirnya saya bisa menyelesaikan THR kedua saya, membuat program KALKULATOR SEDERHANA !!! Mari kita diskusi dan pahami scriptnya🙂

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

package Calculator;

import java.util.Scanner;
//memanggil ClassLib untuk bisa meninput data dari keyboard

/**
*
* @author TOSHIBA
*/
public class Cal_Utama {
public static void main(String[] args) {

Scanner read = new Scanner(System.in);
//instansiasi untuk menginput dari keyboard(Class Lib)

double bilangan1 = read.nextDouble();
String operator1 = read.next();
double bilangan2 = read.nextDouble();
String operator2 = read.next();
double bilangan3 = read.nextDouble();
/*deklarasi variabel bilangan1,bilangan2,bilangan3,operator1 dan
* operator2. Variabel bilangan1 dan bilangan2 bertipe data double agar
* apabila ada hasil koma akan muncul hasilnya. operator1 dan operator2
* bertipe data String, itu dikarenakan isinya berupa operator aritma-
* tika (*,/,+,-)
*/

boolean test = testTingkat(operator1, operator2);
//instansiasi fungsi

double hitungAwal = 0;
double hitungAkhir = 0;
//deklarasi variabel hitungAwal dan hitungAkhir

// setara 2 * 3 + 5
// tidak setara 2 + 5 * 3
if(test){
hitungAwal = hitung(new double[]{bilangan1,bilangan2}, operator1);
hitungAkhir = hitung(new double[]{hitungAwal, bilangan3},operator2);
//pemanggilan proses hitung apabila setara/true
}else{
hitungAwal = hitung(new double[]{bilangan2,bilangan3},operator2);
hitungAkhir = hitung(new double[]{bilangan1,hitungAwal},operator1);
//pemanggilan proses hitung apabila tidak setara/false
}

System.out.println(hitungAkhir);
/*menampilkan/mencetak hasil akhir yang ada di dalam variabel
* hitungAkhir
*/
}

//proses penghitungan
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;//menggembalikan  nilai variabel result
}

// false tidak setingkat
// true setingkat
// 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
*/
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
}}

———————-PENJELASAN CODING ——————-

Dalam program ini saya hanya membuat satu class, yaitu class Cal_Utama. Pertama diminta untuk memasukkan 3 bilangan(operand) dan 3 operator(* / + -) dan spasi pada setiap pemisah operand dan operator. Setelah diinput bilangan dan operator akan masuk ke proses penghitungan. Tapi sebelum itu akan masuk dulu ke tahapan test tingkatan operator. Jika operatornya * atau / maka akan diproses terlebih dahulu, Karena tingkatan * dan ./ lebih tinggi dari + atau – . Contoh : 3 + 2 * 3 , maka yang akan dihitung terlebih dahulu adalah 2 * 3 kemudian hasilnya + 3 . Jika penulisannya seperti contoh, maka akan diproses (!test) atau FALSE atau lebih jelasnya akan memproses bilangan ke 2 dan bilangan ke 3 dengan operator ke 2, selanjutnya bilangan ke 1 dan hasil awal dengan operator ke 1 akan dihitung dan menghasilka hasil akhir. Jika TRUE seperti contoh 3 * 2 + 3, maka prosesnya seperti biasa, berurutan,

——————

.equals itu sama dengan == , tapi .equals digunakan untuk tipe data String, sedangkan == untuk bilangan

——————

Program di atas menggunakan proses aritmatika yang tersusun. Mungkin script yang di atas terlalu sederhana. Tapi semoga bermanfaat yah. Yang mau copy paste tolong cantumkan sumbernya yah😀 Terimakasih

 

 

-Referensi dari Kang Lukmannul Hakim Firdaus dengan sedikit tambahan coding-


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Categories

%d bloggers like this: