"Selamat datang di blog saya"

Kalkulator menggunakan Program Java


import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.awt.*;
public class uas extends JFrame{
private JDesktopPane deskPane;

private JButton btn1,btn2,btn3,btn4,btn5,btn6,btn7,
btn8,btn9,btndot,btn0,btn00,btnkl,btnbg,btnkr,btnhsl,btnc,btntb;

private JTextField txt;
private JLabel lblaw,lblnm,lblnim,lbloff,lblak;
ArrayList al;
ArrayList op;
Container cc;
boolean clear;
double operand1;
double operand2;
String operator;
double result;

public uas() {
super("Program UAS");
JMenuBar mnuBar = new JMenuBar();

JMenu mnuapp = new JMenu("Application");
JMenuItem mnucal = new JMenuItem("Calculator");
JMenuItem mnuex = new JMenuItem("Keluar");
mnuapp.add(mnucal);
mnuapp.add(mnuex);

JMenu mnuhlp = new JMenu("Help");
JMenuItem mnuinf = new JMenuItem("About");
mnuhlp.add(mnuinf);

mnuBar.add(mnuapp);
mnuBar.add(mnuhlp);
setJMenuBar(mnuBar);
deskPane = new JDesktopPane();
// Menambahkan desktop pane ke frame
add(deskPane);

mnucal.addActionListener(new Calculator());
mnuex.addActionListener(new Exit());
mnuinf.addActionListener(new About());
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(610, 300);
setVisible(true);
}
class Calculator implements ActionListener {
public void actionPerformed(ActionEvent e) {
JInternalFrame kalkul = new JInternalFrame(
"Calculator ", true, true, true, true );
cc=getContentPane();
al=new ArrayList();
op=new ArrayList();
txt=new JTextField(20);
btn1=new JButton("1");
btn2=new JButton("2");
btn3=new JButton("3");
btn4=new JButton("4");
btn5=new JButton("5");
btn6=new JButton("6");
btn7=new JButton("7");
btn8=new JButton("8");
btn9=new JButton("9");
btn0=new JButton("0");
btn00=new JButton("00");
btndot=new JButton(".");
btnkl=new JButton("*");
btnbg=new JButton("/");
btnkr=new JButton("-");
btnhsl=new JButton("=");
btnc=new JButton("c");
btntb=new JButton("+");



JPanel angk=new JPanel();
angk.setLayout(new GridLayout(4,3));
al.add(angk.add(btn1));
al.add(angk.add(btn2));
al.add(angk.add(btn3));
al.add(angk.add(btn4));
al.add(angk.add(btn5));
al.add(angk.add(btn6));
al.add(angk.add(btn7));
al.add(angk.add(btn8));
al.add(angk.add(btn9));
al.add(angk.add(btn0));
al.add(angk.add(btn00));
al.add(angk.add(btndot));

JPanel ops=new JPanel();
ops.setLayout(new GridLayout(3,2));
op.add(ops.add(btnkl));
op.add(ops.add(btnbg));
op.add(ops.add(btnkr));
op.add(ops.add(btnhsl));
op.add(ops.add(btnc));
op.add(ops.add(btntb));


kalkul.add(txt, "North");
kalkul.add(angk, "West");
kalkul.add(ops, "East");
kalkul.setSize(240, 240);
kalkul.setLocation(0,0);
deskPane.add(kalkul );
kalkul.setVisible(true);

Iterator i = al.iterator();

while(i.hasNext()){
JButton temp=(JButton)i.next();
temp.addActionListener(new BtnListener());
}

Iterator j = op.iterator();

while(j.hasNext()){
JButton temp=(JButton)j.next();
temp.addActionListener(new OpListener());
}

btnhsl.addActionListener(new ResListener());

}
}
class Exit implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
}
class About implements ActionListener {
public void actionPerformed(ActionEvent e) {
JInternalFrame abt = new JInternalFrame(
"About", true, true, true, true );
lblaw=new JLabel("Program ini dibuat oleh:");
lblnm=new JLabel("Nama : Baiq Fiya Hidayani Azhar");
lblnim=new JLabel("NIM : 208533414714");
lbloff=new JLabel("Off : D");
lblak=new JLabel("Untuk UAS praktikum Matakuliah Pemrograman Visual");

JPanel info=new JPanel();
info.setLayout(new GridLayout(5,1));
info.add(lblaw);
info.add(lblnm);
info.add(lblnim);
info.add(lbloff);
info.add(lblak);
JLabel img=new JLabel(new ImageIcon("a.GIF"));

abt.add(info, "Center");
abt.add(img, "East");
abt.setSize(360, 240);
abt.setLocation(240,120/122);
deskPane.add(abt);
abt.setVisible(true);
}
}

class BtnListener implements ActionListener{
public void actionPerformed(ActionEvent ae){
String action = ae.getActionCommand();
if(clear) {
txt.setText("");
clear = false;
}
if (action.equals(".")){
if (txt.getText().indexOf(".")<0){ opr =" ae.getActionCommand();" operator="+" operator="-" operator="/" operator="*" operand1 =" Double.parseDouble(txt.getText());" clear =" true;" opr =" ae.getActionCommand();" operand2 =" Double.parseDouble(txt.getText());" result="operand1+operand2;" result="operand1-operand2;" result="operand1/operand2;" result="operand1*operand2;" clear="true;">


UAS BAHASA PEMROGRAMAN VISUAL

METODE NUMERIC PENERAPAN METODE BISECTION DALAM DUNIA NYATA




Metode biseksi ini adalah metode untuk mencari akar-akar dari sebuah fungsi dengan cara menghitung nilai fungsi f(x) dari 2 nilai X : (X1,X2) yang diberikan, dan diharapkan nilai f(X1).f(X2)< xmid="(X1+X2)/2." baru =" (Xmid">

Metode numerik untuk mendapatkan harga x untuk f(x) = 0 seperti uraian di pasal 2.1 disebut METODE BISECTION. Tahap pertama proses adalah menetapkan nilai sembarang a dan b sebagai batas segmen nilai fungsi yang dicari. Batasan a dan b memberikan harga bagi fungsi f(x) untuk x = a dan x = b. Langkah selanjutnya adalah memeriksa apakah f(a)×f(b) <>

Dengan rumusan m = (a+b)/2, diperiksa apakah nilai mutlak f(m) <>-6 (batas simpangan kesalahan). Jika benar, nilai x = m adalah solusi yang dicari. Jika tidak terpenuhi, ditetapkan batasan baru dengan mengganti nilai b = m apabila f(a)*f(m) < a =" m"> 0; proses menemukan m baru dilakukan seperti prosedur yang telah dijelaskan.




Metode Bisection adalah salah satu kelas metode Pengelompokan, karena prosedur untuk mendapatkan nilai x untuk f(x) = 0 dilakukan melalui pendekatan kelompok akar. Metode ini tidak sepenuhnya memanfaatkan data f(x) bagi penentuan nilai x. Misalnya, tidak digunakannya ukuran relatif f(a) dan f(b), karena umumnya jika f(a) <>

Penetapan m ini dikenal dengan cara REGULA FALSI dan algoritmanya sama seperti metode Bisection, kecuali mengganti penentuan m dengan rumusan : m =a-[(b-a)x f(b)/f(b)-f(a)




Metode Bisection ini paling sederhana dan paling intractif dari metode pendekatan berturut-turut untuk melokalisasi sebuah persamaan akar f(x) = 0 dalam selang [a,b].

Metode ini didasrkan pada teorema nilai antara untuk fungsi kontinu., yang menyatakan pada suatu selang [a,b] sedemikian sehingga titik-titik ujung f berlawanan tanda, missal f(a) <> 0, harus mengandung suatu akar. Metode ini merupakan pengulangan pembagiduaan selang yang memenuhi teorema di atas. Oleh karena itu metode ini disebut metode bagi dua.

Algoritma Metode Bisection

Asumsi awal yang harus diambil adalah: ‘menebak’ interval awal

[a,b] dimana f(x) adalah kontinu padanya, demikian pula harus

terletak ‘mengapit’ (secara intuitif) nilai akar a, sedemikian rupa

sehingga:

f (a) × f (b) £ 0

Algoritma BISECT(f,a,b,akar,e,iter,itmax,flag)

1. Tebak harga interval [a,b]; tentukan e; dan    itmax

2. Set f0 = f(a); iter = 0; flag = 0;

3. Tentukan atau hitung akar = c := (a + b)/2;    iter = iter + 1;

4. Jika f(af(c) £ 0 maka b = c jika tidak a = c    dan f0 = f(a);

5. Jika (b a) £ e maka flag = 1 jika iter >itmax maka flag = 2;

6. Jika flag = 0 ulangi ke nomor 3;

7. Akar persamaan adalah: akar = (a + b)/2,sebagai akar terbaru;

8. Selesai.

Listing Program Metode Bisection

Diberikan persoalan untuk mengitung akar (akar-akar) persamaan f(x) = 0, sebagai berikut: f (x) ยบ x - e1 x = 0

Listing program sederhana (non-subroutine) dan program dengan subroutine disertakan dalam gambar-gambar 5.2. dan 5.3. di bawah ini, yang ditulis dalam Bahasa FORTRAN 77 (kompatibel dengan Bahasa FORTRAN 90/95).

 

            Bagan Alir Metode Bisection:

 





1.  Pemrograman C Untuk Metode Bisection

Metode Numerik

 

LISTING PROGRAM BISECTION METHODE

( BAHASA PEMROGRAMAN TURBO C)

 

#include

#include

#include

#include

double fx(double x)

{

double coef[]={25.0,0.6};

return poly(x,3,coef);

}

double bisect(double a,double b,double eps)

{

double xl=a,xr=b,epsb,xm,fxl,fxm,abseps;

xm=0.5*(xl+xr);

printf("--------------------------------------------------------------------------------");

printf(" xl xr xm |xm-xl| f(xl) f(xm) f(xl)*f(xm)\n");

printf("--------------------------------------------------------------------------------");

do

{

abseps=fabs(xm-xl);

fxl=fx(xl);

fxm=fx(xm);

epsb=fxl*fxm;

printf("%10.5f%10.5f%10.5f%10.5f%10.5f%10.5f10.5f\n",xl,xr,xm,abseps,fxl,fxm,epsb);

if(epsb<0.0)

xr=xm;

else

xl=xm;

xm=0.5*(xl+xr);

}while(abseps>=eps);

return xm;

}

main()

{

double a=34,b=35,eps=1.0e-5,x,c;

clrscr();

printf(" Penjadwalan Unit Pembangkit dengan Metode Bisection\n ");

printf("\n");

printf("\n");

printf("Nama : Dwiyanto\n");

printf("NIM : 021910201023\n");

printf("Jurusan : Teknik Elektro S1\n");

printf("\n");

printf("Berapa jumlah total beban (MW) ?");

scanf("%f",&c);

printf(“Jika anda ingin mengubah jumlah total beban, silahkan anda ganti nilai awal”);

printf("nilai awal %f dan %f\n",a,b);

printf("Ketelitian %f\n",eps);

x=bisect (a,b,eps);

printf(“Tekan ENTER untuk stop”);

getch();

}

 

2.  Pemrograman Metode Bisection Menggunakan QBasic

CLS

 

SCREEN 0

 

COLOR 3,0,0

 

CLS

 

LOCATE 2,8:PRINT CHR$(201); STRING$(58,205); CHR$(187)

 

FOR I = 3 TO 22

 

LOCATE i, 8: PRINT CHR$(186); STRING$(58,” ”);CHR$(186)

 

NEXT i

 

LOCATE 23,8:PRINT CHR$(200); STRING$(58,205); CHR$(188)

 

COLOR 3,0,0

 

LOCATE 3,12:PRINT “=================================================”

 

LOCATE 4,12:PRINT ” PROGRAM MENCARI AKAR PERSAMAAN “

 

LOCATE 5,12:PRINT “ Oleh : Ferdian Rahabista “

 

LOCATE 6,12:PRINT “ Metode : BISECTION “

 

LOCATE 7,12:PRINT “=================================================”

 

DEF fnz(x) = 3*x^3+4*x-7

 

LOCATE 9,10: PRINT “Bentuk Fungsinya :f(x)=3*x^3+4*x-7”

 

LOCATE 10,10: PRINT “Buat Pendugaan akar ini pada selang [a,b]”

 

btanda = 10

 

WHILE(btanda <> 1)

 

LOCATE 12,10: PRINT “input nilai a = “

 

LOCATE 13,10: PRINT “input nilai b = “

 

LOCATE 14,10: PRINT “input nilai toleransi = “

 

LOCATE 12,10: PRINT “isikan nilai a =”,a

 

LOCATE 13,10: PRINT “isikan nilai b =”,b

 

IF a>b THEN

 

LOCATE 15,15: PRINT “Nilai a harus kurang dari b”

 

INPUT “”,BOM

 

GOTO SATU:

 

END IF

 

LOCATE 14,10: INPUT “inputan nilai toleransi =”,tol

 

 

 

IF tol = 0 THEN

 

LOCATE 15,15: PRINT “Nilai tol harus diisi”

 

INPUT “”,BOM

 

GOTO SATU:

 

END IF

 

h = 01

 

n = ABS((b-a)/h)

 

btanda = 0

 

tanda1 = SGN(fnz(a))

 

FOR i=1 TO n+1

 

tanda2=SGN(fnz(h*(i-1)+a))

 

‘PRINT h*(-1) + a,tanda2

 

If tanda1 <> tanda2 THEN

 

IF tanda1 <> 0 THEN

 

Btanda=btanda+1

 

END IF

tanda1=tanda2

 

END IF

NEXT i

 

IF btanda = 0 THEN

 

LOCATE 16,10: PRINT “pada selang [“; a; “,”;b;”] tidak terdapat”

 

COLOR 18,8,0: LOCATE 18,18: PRINT “mohon inputkan a&b diulang”

 

COLOR 3,0,0

 

ELSE

 

IF btanda > 1 THEN

 

‘LOCATE 16,10: PRINT “pada selang [“;a;”,;b;” : PRINT USING “]”;

 

‘COLOR 18,8,0: LOCATE 18,18: PRINT “mohon inputkan a&b diulang”

 

‘COLOR 3,0,0

 

‘ LOCATE 20,20: INPUT “ulangi dengan menekan <>”,put$

 

‘LOCATE 20,20: PRINT “”

 

END IF

 

ELSE

 

LOCATE 16,10: PRINT “tepat, pada selang [“;a;”,”;b;”: PRINT USING “]”;

 

LOCATE 17,10: PRINT “”

 

COLOR 18,8,0:LOCATE 18,18: PRINT “anda benar memasukkan selang nilai”

 

COLOR 3,0,0

 

LOCATE 20,20: PRINT “isikan nilai toleransi unutk f(x)”

 

END IF

 

WEND

 

COLOR 3,0,0

 

LOCATE 12,10: PRINT USING “nilai a=###.###”;a

 

LOCATE 13,10: PRINT USING “nilai b=###.###”;b

 

LOCATE 14,10: PRINT USING “toleransi=###.###”;tol

 

LOCATE 18,18: PRINT “”

 

LOCATE 20,20: PRINT “”

 

CLS

 

PRINT “mencari akar dengan metode BISECTION”

 

PRINT “bentuk fungsinya : f(x)=3*x^3+4*x-7”

 

PRINT”nilai toleransi tol =”;tol

 

C$=”###:##.##### :##.##### :##.##### :##.##### :##.##### :##.##### :”

 

PRINT “=================================================”

 

PRINT “iter: a : b : f(a) : f(b) : c : f(c) :”

 

PRINT”---------------------------------------------------------------------------------------“

 

Iter=0

 

Y=tol

 

WHILE(ABS(y)>=tol)

 

C=(a+b)/2

 

‘c=a-fnz(a)*(b-a)/(fnz(b)-fnz(a))

 

Y=fnz(c)

 

PRINT USING c$; iter, a, b, fnz(a), fnz(b), c, fnz(c)

 

Iter = iter+1

 

IF(fnz(a)*fnz(c)>0) THEN

 

A = c

 

ELSE

 

b=c

 

END IF

 

WEND

 

PRINT “=================================================”

 

PRINT USING “nilai akar = ##.##### pada x = ##.#####”; fnz(c),c

 

PRINT USING”jumlah iterasi =#### kali”;iter

 

COLOR 3,0,0: PRINT “jika anda telah puas, tekan <>”

 

LG$ = “Y”

 

INPUT “COBA LAGI (Y/T);”,LG$

 

IF LG$ = “Y” OR LG$ = “y” THEN

 

GOTO SATU:

 

ELSE

 

END IF