Download - My javanote03

Transcript
Page 1: 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   fungsi­fungsi  (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

Page 2: My javanote03

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

Page 3: My javanote03

Tri Sapto Adji  BCC Manokwari

Perhatikan source code tersebut, pertama­tama 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 masing­masing 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

Page 4: My javanote03

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

Page 5: My javanote03

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 mengakses­nya dari luar kelas tersebut. Untuk dapat mengakses­

nya Anda dapat membuat masing­masing 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 nilai­nilai 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 akar­akar persamaan kuadrat). 

Workshop Java Bag. 3 –  Membuat Aplikasi Menghitung Akar Persamaan Kuadrat halaman 5/17

Page 6: My javanote03

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 kondisi­kondisi 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.

Page 7: My javanote03

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

Page 8: My javanote03

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

Page 9: My javanote03

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

Page 10: My javanote03

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

Page 11: My javanote03

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

Page 12: My javanote03

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

Page 13: My javanote03

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

Page 14: My javanote03

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 akar­akar 

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

Page 15: My javanote03

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

Page 16: My javanote03

Tri Sapto Adji  BCC Manokwari

Jika nilai variabel b = 0 :

Keterangan Program yang dapat diakses dengan meng­klik Menu > Tentang JKuadrat :

Workshop Java Bag. 3 –  Membuat Aplikasi Menghitung Akar Persamaan Kuadrat halaman 16/17

Page 17: My javanote03

Tri Sapto Adji  BCC Manokwari

Program ini dapat di­download 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