My javanote03
-
Upload
tri-sapto-adji -
Category
Education
-
view
1.367 -
download
0
description
Transcript of My javanote03
Tri Sapto Adji BCC Manokwari
Membuat Aplikasi Hitung Akar Persamaan Kuadrat
Setelah pada pembahasan sebelumnya kita membahas mengenai aplikasi Konverter Suhu
(JKonverter), yang mengkonversikan nilai suhu antar satuan Celcius, Fahrenheit, Kelvin dan
Reamur, sekarang kita akan mencoba meningkatkan level pembahasan kita pada
perhitungan yang sedikit lebih kompleks. Dikatakan lebih kompleks, karena melibatkan
perhitungan akar kuadrat dan pemangkatan. Java tidak memiliki operator yang dapat
menghitung akar kuadrat ataupun operator pemangkatan dari suatu bilangan. Tetapi
memiliki fungsifungsi (metoda) yang dapat melakukan hal tersebut, yakni fungsi
Math.sqrt( ) dan Math.pow( ).
Sekarang mari kita memulai rancangan program kita. Kita akan membuat sebuah program
yang dapat menghitung nilai akar dan determinan dari persamaan akar kuadrat ax2 + bx +
c = 0. Program ini akan mengolah input nilai a, b, dan c yang dimasukkan oleh user berupa
bilang bulat, kemudian mengolah input tersebut dan memberikan hasil berupa nilai
determinan, akar pertama dan akar kedua yang merupakan bilangan desimal (pecahan).
Proses yang dilakukan adalah :
1. Menghitung nilai determinan dengan rumus :
D=b2−4ac
2. Menghitung nilai akar pertama dengan rumus :
x1=−b+√D
2 a
3. Menghitung nilai akar kedua :
x2=−b−√ D
2a
Workshop Java Bag. 3 – Membuat Aplikasi Menghitung Akar Persamaan Kuadrat halaman 1/17
Input nilai a, b, c
Memproses nilai a, b, cuntuk menghasilkan
nilai determinan, akar pertama dan kedua
dari persamaan akar kuadrat : ax2 + bx + c = 0
Output nilai :determinan (D),
akar pertama (x1) dan
akar kedua (x2)
INPUT PROSES OUTPUT
Tri Sapto Adji BCC Manokwari
Untuk mewujudkan proses perhitungan tersebut, kita akan membuat sebuah kelas bernama
AkarKuadrat.java berisi kode berikut :
//Berkas AkarKuadrat.java
//Author : Tri Sapto Adji
// @Manokwari, Papua Barat
public class AkarKuadrat {//awal blok kelas AkarKuadrat dimulai
private int a;
private int b;
private int c;
double x1;
double x2;
double determinan;
public AkarKuadrat(int a, int b, int c) {//awal blok konstruktor kelas AkarKuadrat
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;
}//akhir blok konstruktor kelas AkarKuadrat
int nilaiA() {
return this.a;
}
int nilaiB() {
return this.b;
}
int nilaiC() {
return this.c;
}
}//Akhir blok kelas AkarKuadrat, Akhir berkas AkarKuadrat.java
Workshop Java Bag. 3 – Membuat Aplikasi Menghitung Akar Persamaan Kuadrat halaman 2/17
Tri Sapto Adji BCC Manokwari
Perhatikan source code tersebut, pertamatama kita mendeklarasikan 6 buah variabel yakni
a, b, c, x1, x2 dan determinan. Tiga (3) variabel pertama yang akan menampung nilai input
dari user diberi modifier private. Artinya ketiga variabel tersebut tertutup bagi kelas lain,
dan hanya bisa diakses di dalam kelas AkarKuadrat. Sedangkan tiga (3) variabel lainnya
memiliki modifier default (Anda tidak perlu mendeklarasikan modifier ini secara eksplisit).
Artinya ketiga variabel tersebut dapat diakses oleh kelas lain dalam paket atau dalam
direktori yang sama dimana kelas AkarKuadrat berada :
private int a;
private int b;
private int c;
double x1;
double x2;
double determinan;
Selanjutnya, konstruktor kelas AkarKuadrat didefinisikan dengan 3 buah parameter, yang
mana masingmasing nilai parameter tersebut akan kita gunakan untuk mengisi nilai dari
variabel a, b, c yang telah dideklarasikan sebelumnya :
public AkarKuadrat(int a, int b, int c) {
this.a = a;
this.b = b;
this.c = c;
Pernyataan this.a = a; berarti nilai dari variabel a yang menjadi parameter konstruktor
kelas AkarKuadrat digunakan untuk mengisi nilai dari variabel a sebelumnya yang
merupakan variabel kelas. Untuk membedakan antara variabel a yang menjadi parameter
dari konstruktor dengan variabel a yang menjadi variabel kelas digunakan kata this.
didepan variabel a yang merupakan variabel kelas. Hal yang sama berlaku untuk
pernyataan this.b = b; dan this.c = c;
Selanjutnya adalah proses menghitung nilai determinan, akar pertama dan akar kedua :
double d = Math.pow(this.b, 2) - 4*this.a*this.c;
Workshop Java Bag. 3 – Membuat Aplikasi Menghitung Akar Persamaan Kuadrat halaman 3/17
Tri Sapto Adji BCC Manokwari
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;
Perhatikan bahwa terdapat variabel d bertipe double yang belum dideklarasikan
sebelumnya. Variabel ini bersifat lokal dan hanya dikenal dalam blok konstruktor
AkarKuadrat saja. Variabel d ini digunakan untuk menampung nilai dari D=b2−4ac , yang
dalam syntax bahasa java ditulis sebagai :
double d = Math.pow(this.b, 2) - 4*this.a*this.c;
Kemudian nilai variabel d ini kita gunakan untuk mengisi nilai dari variabel kelas, yakni
variabel determinan yang telah dideklarasikan sebelumnya, dengan pernyataan :
this.determinan = d;
Demikian pula dengan variabel x1 dan x2 diberi nilai setelah melalui proses penghitungan
x1=−b+√D
2adan x1=
−b−√ D2a
yang dalam bahasa java ditulis sebagai :
double x1 = ((-1*(this.b)) + Math.sqrt(this.determinan))/(2*this.a);
double x2 = ((-1*(this.b)) - Math.sqrt(this.determinan))/(2*this.a);
Kemudian hasilnya digunakan untuk mengisi nilai dari variabel kelas yakni variabel x1 dan
x2 (yang namanya sama, oleh karena itu Anda harus menambahkan kata this. didepan
variabel kelas untuk membedakan dengan variabel lokal x1 dan x2) :
this.x1 = x1;
this.x2 = x2;
Karena ketiga variabel kelas tersebut (determinan, x1 dan x2) memiliki modifier default,
Workshop Java Bag. 3 – Membuat Aplikasi Menghitung Akar Persamaan Kuadrat halaman 4/17
Tri Sapto Adji BCC Manokwari
maka ketiga variabel tersebut, jika nantinya diperlukan, dapat Anda akses melalui kelas lain
dari dalam direktori yang sama dimana kelas AkarKuadrat tersebut berada. Lalu bagaimana
dengan tiga variabel kelas yang lainnya yakni a, b dan c yang Anda beri modifier private ?
Tentunya Anda tidak bisa mengaksesnya dari luar kelas tersebut. Untuk dapat mengakses
nya Anda dapat membuat masingmasing sebuah metode untuk mengakses nilainya, yakni :
int nilaiA() {
return this.a;
}
int nilaiB() {
return this.b;
}
int nilaiC() {
return this.c;
}
Metode nilaiA( ), nilaiB( ) dan nilaiC ( ) yang bertipe integer dapat Anda gunakan dari
luar kelas AkarKuadrat tersebut untuk memperoleh nilai variabel a, b dan c.
Kompilasi berkas AkarKuadrat.java ini dengan perintah :
javac AkarKuadrat.java
dari dalam direktori kerja (direktori dimana berkas AkarKuadrat.java tersebut berada). Jika
tidak ada pesan kesalahan maka akan terbentuk file AkarKuadrat.class.
Perhatikan bahwa kelas AkarKuadrat tersebut tidak memiliki metode main, karenanya tidak
dapat dieksekusi sebagai sebuah program. Kita akan membuat lagi sebuah kelas yang berisi
metode main. Kelas ini akan kita gunakan untuk mengakses nilainilai variabel dan metode
metode dari kelas AkarKuadrat yang telah kita buat sebelumnya. Kelas yang akan kita buat
ini merupakan program berbasis konsol/terminal (Dalam pembahasan lain, kita akan
membuat kelas yang akan menampilkan program basis GUI untuk menghitung nilai
determinan dan akarakar persamaan kuadrat).
Workshop Java Bag. 3 – Membuat Aplikasi Menghitung Akar Persamaan Kuadrat halaman 5/17
Tri Sapto Adji BCC Manokwari
Ada beberapa kondisi yang mempengaruhi nilai dari hasil perhitungan, misalnya : harus
ada input untuk nilai dari variabel a, b, dan c (3 buah input data), nilai variabel a tidak
boleh 0, jika nilai determinan hasil perhitungan ternyata kurang dari 0 maka menghasilkan
akar imajiner, jika nilai b = 0, maka nilai 0 tersebut tidak perlu ditampilkan pada penulisan
akar imajiner. Karenanya perlu dibuatkan algoritma untuk memperjelas alur program yang
akan kita buat berdasarkan kondisikondisi tersebut.
Workshop Java Bag. 3 – Membuat Aplikasi Menghitung Akar Persamaan Kuadrat halaman 6/17
Start
Masukkan 3 argumenuntuk mengisi variabel a, b, c
banyaknya argumen = 3 ?
a = 0 ?
D=b^2-4ac
D < 0 ?
D C B A
tidak
ya
tidak
ya
ya
tidak
Tampilkan keterangana tidak boleh = 0
Tampilkan keteranganharus ada 3 buah argumen,masing-masing adalah nilai
untuk variabel a, b, c.
Tri Sapto Adji BCC Manokwari
Berikut adalah source code dari kelas yang kita beri nama HitungAkarKuadrat tersebut :
//Berkas HitungAkarKuadrat.java
//program ini membutuhkan berkas AkarKuadrat.class pada direktori kerja
//Author : Tri Sapto Adji @Manokwari, Papua Barat
Workshop Java Bag. 3 – Membuat Aplikasi Menghitung Akar Persamaan Kuadrat halaman 7/17
D BC A
b = 0 ? x1=(-b+√D)/(2*a)x1=(-b-√D)/(2*a)
End
tidak
ya
Tampilkan nilaiD, x1, x2
Tampilkan :x1=(√ |D|*i)/(2*a),x1=-(√ |D|*i)/(2*a),Keterangan i=√-1
Tampilkan :x1=(-b+(√ |D|*i))/(2*a)x1=(-b-(√ |D|*i))/(2*a),
Keterangan i=√-1
Akar imajiner, Tampilkan nilai D=|D|i^2
Tri Sapto Adji BCC Manokwari
public class HitungAkarKuadrat {
public static void main(String[] args) {
//jika pemanggilan kelas tidak disertai 3 buah argumen, maka :
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);//keluar dari program
}
try{
//argumen pertama menjadi nilai variabel a :
int a = Integer.valueOf(args[0]).intValue();
//argumen kedua menjadi nilai variabel b :
int b = Integer.valueOf(args[1]).intValue();
//argumen ketiga menjadi nilai variabel c :
int c = Integer.valueOf(args[2]).intValue();
//Membuat obyek dari kelas AkarKuadrat dan menjadikan nilai variabel
a, b dan c sebagai argumen dari obyek tersebut :
AkarKuadrat ak = new AkarKuadrat(a,b,c);
//Membuat Keterangan Program, dilarang menghapus keterangan ini!
System.out.println("\n -------------------------------");
System.out.println(" | author : Tri Sapto Adji |");
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");
//Menginformasikan nilai variabel a, b, c yang telah Anda masukkan :
System.out.println("Anda memasukkan nilai : a = " + ak.nilaiA() + ",
b = " + ak.nilaiB() + ", c = " + ak.nilaiC());
//Nilai variabel a tidak boleh 0, karenanya :
if(ak.nilaiA() == 0) {
System.out.println("Ada kesalahan, nilai a tidak boleh 0!");
System.out.println("Silahkan coba lagi ... :)\n");
System.exit(2);
}
Workshop Java Bag. 3 – Membuat Aplikasi Menghitung Akar Persamaan Kuadrat halaman 8/17
Tri Sapto Adji BCC Manokwari
System.out.println("\nHasil perhitungan : ");
System.out.println("-------------------");
//jika determinan bernilai negatif(< 0), maka akarnya adalah imajiner
//atau bilangan khayal (tidak nyata).
//karenanya bilangan tersebut harus ditampilkan dalam format i
//dimana i adalah akar dari -1
if(ak.determinan < 0) {
System.out.println("Karena Determinan bernilai negatif (<0),
yakni : Determinan D = " + ak.determinan +" atau D = " + Math.abs(ak.determinan)
+"i^2");
System.out.println("Maka akar-akar yang dihasilkan adalah
bilangan imaginer :");
//jika akar imajiner ini memiliki nilai variabel b=0, maka :
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()));
System.out.println("Keterangan : i adalah akar dari -1
(bilangan imaginer)");
//jika akar imajiner ini semua variabelnya tidak bernilai 0 :
}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()));
System.out.println("Keterangan : i adalah akar dari -1
(bilangan imaginer)");
}
//jika determinan >=0, maka :
}else {
System.out.println("Determinan D = " + ak.determinan);
System.out.println("Akar pertama x1 = " + ak.x1);
System.out.println("Akar kedua x2 = " + ak.x2);
}
//membuat sebuah baris kosong
System.out.println("");
Workshop Java Bag. 3 – Membuat Aplikasi Menghitung Akar Persamaan Kuadrat halaman 9/17
Tri Sapto Adji BCC Manokwari
//jika input argumen bukan berupa angka
}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!");
System.err.println("Contoh : java HitungAkarKuadrat 1 -12 32\n");
System.exit(3);
}
}
}//Akhir Berkas HitungAkarKuadrat.java
Kompilasi berkas HitungAkarKuadrat.java ini dengan perintah :
javac HitungAkarKuadrat.java.
Kemudian jalankan dengan mengetik pada terminal :
java Hitungakarkuadrat
Anda akan melihat bahwa program akan menampilkan pesan bahwa Anda belum
memasukkan tiga buah argumen yang akan mengisi nilai variabel a, b, c.
Jika Anda mengetik :
java HitungAkarKuadrat 1 -12 32
program tersebut akan memberikan output berupa nilai determinan, akar pertama dan akar
kedua.
Workshop Java Bag. 3 – Membuat Aplikasi Menghitung Akar Persamaan Kuadrat halaman 10/17
Tri Sapto Adji BCC Manokwari
Atau jika Anda mengetik :
java HitungAkarKuadrat 1 -12 32
Akan ditampilkan hasilnya :
Program ini juga dirancang untuk mampu menampilkan hasil jika nilai determinan kurang
dari 0 (yang berarti memiliki akar negatif) dalam format bilangan imaginer i dengan i
adalah akar dari 1 (i= √−1 ). Misalnya jika Anda mengetik :
Workshop Java Bag. 3 – Membuat Aplikasi Menghitung Akar Persamaan Kuadrat halaman 11/17
Tri Sapto Adji BCC Manokwari
java HitungAkarKuadrat 1 -12 64
Akan menampilkan hasil sebagai berikut :
Jika akar imajiner ini memiliki nilai variabel b=0, maka program ini akan meniadakan
penulisan nilai variablel b (0) itu pada nilai akar x1 dan x2 .
Tetapi jika 0 menjadi nilai bagi variabel a, program akan berhenti dan menampilkan pesan :
Workshop Java Bag. 3 – Membuat Aplikasi Menghitung Akar Persamaan Kuadrat halaman 12/17
Tri Sapto Adji BCC Manokwari
Jika ternyata Anda salah menginput data yang bukan bilangan, program ini pun mampu
mengatasinya dengan menyampaikan pesan bahwa terjadi kesalahan input data yang bukan
bertipe angka, dan memberikan contoh cara input data yang benar.
Program ini dapat didownload di : http://db.tt/shTQdNCo .
Setelah berhasil membuat program berbasis konsol (terminal) untuk menghitung akar
persamaan kuadrat, kita akan meneruskan dengan program basis GUI yang memiliki fungsi
yang sama, karena memanfaatkan kelas yang sama yakni kelas AkarKuadrat.class yang
telah kita buat dan kompilasi pada pembahasan sebelumnya.
Untuk itu kita perlu membuat desain antarmuka dari program tersebut. Kita akan memberi
nama program ini sebagai JKuadrat. Beberapa komponen GUI yang perlu kita siapkan
adalah :
1. Yang pertama adalah Menu yang memiliki item menu yang jika diklik akan
menampilkan kotak dialog keterangan tentang program ini. Ditempatkan paling atas,
di bawah title bar.
Workshop Java Bag. 3 – Membuat Aplikasi Menghitung Akar Persamaan Kuadrat halaman 13/17
Tri Sapto Adji BCC Manokwari
2. Di bawahnya adalah panel yang menampilkan Heading dari program ini.
3. Selanjutnya kotak isian untuk menampung input dari user. Kotak isian ini harus
memiliki label untuk memberikan informasi kepada user bahwa kotak tersebut
adalah input dari variabel a, b, dan c pada persamaan kuadrat ax2 + bx + c = 0.
4. Label yang akan menampilkan hasil dari perhitungan.
5. Tombol yang akan mengeksekusi proses perhitungan nilai determinan dan akarakar
persamaan kuadrat.
6. Tombol yang akan membersihkan (mengosongkan) kotak input, beserta tampilan
nilai hasil perhitungan sebelumnya.
Berikut adalah sketsa rancangan antarmuka program tersebut.
Berikut adalah contoh program JKuadrat yang sudah selesai di kompilasi dan telah
digunakan untuk menghitung akar dari persamaan kuadrat ax2 + bx + c = 0 dengan nilai
variabel a=1, b=12 dan c=64, dan ternyata hasilnya adalah bilangan imajiner.
Workshop Java Bag. 3 – Membuat Aplikasi Menghitung Akar Persamaan Kuadrat halaman 14/17
MENGHITUNG AKAR PERSAMAANKUADRATax + bx + c = 0
Nilai a Nilai b Nilai c
JKuadrat
Menu
Determinan (D) : Akar pertama (x1) : Akar kedua (x
2) :
Hitung Bersihkan
Tri Sapto Adji BCC Manokwari
Akar dari persamaan kuadrat ax2 + bx + c = 0 dengan nilai variabel a=1, b=12 dan
c=32 :
Jika nilai variabel a = 0 :
Workshop Java Bag. 3 – Membuat Aplikasi Menghitung Akar Persamaan Kuadrat halaman 15/17
Tri Sapto Adji BCC Manokwari
Jika nilai variabel b = 0 :
Keterangan Program yang dapat diakses dengan mengklik Menu > Tentang JKuadrat :
Workshop Java Bag. 3 – Membuat Aplikasi Menghitung Akar Persamaan Kuadrat halaman 16/17
Tri Sapto Adji BCC Manokwari
Program ini dapat didownload di : http://db.tt/lCfQkmKK
Jika ada waktu, Penulis akan membahas pembuatan aplikasi JKuadrat yang berbasis GUI ini
pada dokumen selanjutnya.
Terima Kasih, semoga bermanfaat!
Workshop Java Bag. 3 – Membuat Aplikasi Menghitung Akar Persamaan Kuadrat halaman 17/17