Rabu, 05 Maret 2014

Tutorial Membuat Kalkulator Sederhana dengan Delphi 7

1.  TUTORIAL MEMBUAT PROGRAM KALKULATOR
     DENGAN MENGGUNAKAN BORLAND DELPHI 7

Kalkulator biasanya berbentuk persegi panjang, terdiri dari tombol-tombol angka dan tombol-tombol untuk perhitungan serta sebuah layar pada sebelah atasnya. Dengan adanya kalkulator ini, kita akan sangat terbantu terutama dalam hal hitung-menghitung. Sebenarnya, kita bisa membuat kalkulator tersebut dengan mudah, namun dalam versi digital tentunya. Sebab, Delphi memungkinkan kita untuk membuat program kalkulator dengan cepat dan menyenangkan asalkan Anda tahu konsep dasar tentang cara kerja kalkulator.
Di bawah ini salah satu contoh program kalkulator bawaan windows yang bernama calculator, Anda bisa mengaksesnya melalui  Start | All Programs | Accessories.

Gambar 4.1  Interface program kalkulator buatan windows

Berikut ini saya akan mencoba menjelaskan tentang langkah-langkah pembuatannya.

1.1  SCREENSHOOT


Gambar 4.2  Tampilan Interface program yang akan kita buat
 

1.2  LOGICAL

Program terdiri dari sebuah form yang didesain mirip dengan kalkulator, berisi tombol-tombol dan sebuah layar.  Cara menggunakannya sama kalkulator pada umumnya, Anda tinggal mengklik pada tombol-tombol tersebut maka hasilnya akan tampil di layar kalkulator.
Prinsip dasar kerja kalkulator hampir sama dengan prinsip memori pada komputer, yaitu menggunakan media penyimpan sementara. Dalam tutorial ini saya menggunakan empat media penyimpan, banyaknya media penyimpan pada dasarnya hanya untuk memudahkan kita dalam proses pembuatan program ini. Media penyimpan disini berupa empat buah variable, variable pertama (memori operator) berfungsi meyimpan  operator aritmetik, variable kedua (memori angka) berfungsi menyimpan angka, variable ketiga (memori logic) berfungsi menyimpan nilai 1 atau 0, dan variabel keempat (memori simpan) berfungsi menyimpan angka yang disimpan.
Misalnya kita akan menghitung nilai dari 36/(12+6), maka langkah pertama adalah menghitung nilai dari 12+6 lalu nilainya disimpan, baru kemudian 36 dibagi dengan nilai simpanan.
Algoritma kerja kalkulator secara sederhana adalah sebagai berikut :
1.      Tombol on ditekan untuk mengaktifkan kalkulator sehingga pada layar kalkulator muncul angka nol. Maka nilai dari memori akan menjadi
-          memori operator nilainya dikosongkan
-          memori angka nilainya 0 (nol)
-          memori logic nilainya 0 (nol).
-          Memori simpan nilainya 0 (nol)
2.      Tombol 1 ditekan, sehingga pada layar kalkulator muncul angka 1. Maka nilai dari memori akan berubah menjadi  :
-          memori operator nilainya tetap kosong
-          memori angka nilainya 0
-          memori logic nilainya 1 ( nilai satu artinya jika tombol salah satu angka ditekan lagi maka maka layar kalkulator tidak hanya menampilkan angka yang ditekan tapi akan menampilkan angka sebelumnya dan angka yang ditekan kemudian)
-          memori simpan nilainya 0 (nol)
3.      Tombol 2 ditekan, sehingga pada layar kalkulator menjadi angka 12. Maka nilai dari memori tidak berubah
4.      Tombol + ditekan, sehingga pada layar kalkulator tetap menampilkan angka 12. Maka nilai dari memori akan menjadi :
-          memori operator nilainya +
-          memori angka nilainya 12 (nilai pada layar dicopy ke memori angka)
-          memori logic nilainya 0 (nol). ( nilai nol artinya jika tombol salah satu angka ditekan lagi maka maka layar kalkulator hanya menampilkan angka yang ditekan sedangkan angka sebelumnya tidak ditampilkan lagi)
-          memori simpan nilainya 0 (nol)
5.      Tombol 6 ditekan, sehingga pada layar kalkulator hanya menampilkan angka 6. Maka nilai dari memori menjadi :
-          memori operator nilainya +
-          memori angka nilainya 12.
-          memori logic nilainya 1.
-          memori simpan nilainya 0 (nol)
6.      Tombol = ditekan, sehingga pada layar kalkulator akan menampilkan hasil penjumlahan yaitu angka 18. Maka nilai dari memori menjadi :
-          memori operator nilainya +
-          memori angka nilainya 18.
-          memori logic nilainya 0.
-          memori simpan nilainya 0 (nol)
7.      Tombol M+ ditekan untuk menyimpan nilai penjumlahan tersebut, sehingga pada layar kalkulator tetap menampilkan angka 18. Maka nilai dari memori menjadi :
-          memori operator nilainya kosong
-          memori angka nilainya 0.
-          memori logic nilainya 0.
-          memori simpan nilainya 18
8.      Tombol 3 ditekan, sehingga pada layar kalkulator muncul angka 3. Maka nilai dari memori akan berubah menjadi  :
-          memori operator nilainya tetap kosong
-          memori angka nilainya 0
-          memori logic nilainya 1
-          memori simpan nilainya 18
9.      Tombol 6 ditekan, sehingga pada layar kalkulator menampilkanl angka 36. Maka nilai dari memori tidak berubah.
10.  Tombol / ditekan, sehingga pada layar kalkulator tetap menampilkan angka 36. Maka nilai dari memori akan menjadi :
-          memori operator nilainya /
-          memori angka nilainya 36 (nilai pada layar dicopy ke memori angka)
-          memori logic nilainya 0 (nol).
-          memori simpan nilainya 18
11.  Tombol Mr ditekan untuk menampilkan nilai yang disimpan, sehingga pada layar kalkulator akan menampilkan angka 36. Maka nilai memori tetap.
12.  Tombol = ditekan, sehingga pada layar kalkulator akan menampilkan hasil pembagian yaitu 2. Maka nilai dari memori akan menjadi :
-          memori operator nilainya /
-          memori angka nilainya 2
-          memori logic nilainya 0 (nol).
-          memori simpan nilainya 18
13.  Selesai.

Demikianlah alur kerja dari program kalkulator yang akan kita buat.

1.3  TUTORIAL

Untuk lebih memudahkan dalam pembuatannya maka langkah-langkah pembuatannya dibagi menjadi dua tahap yaitu merancang interface dan memasukkan kode program.

1.1.1        Merancang Interface Program

Buka Borland Delphi Anda (Start | All Programs | Borland Delphi X | Delphi X), buat proyek baru  ( File | New | Application ). Maka akan muncul Form1.
Ubah property Form1 menjadi sebagai berikut :
-          property Caption = HSC CALCULATOR
-          property BorderStyle = BsSingle
Pada Component Palette | tab standard, masukkan komponen button  sebanyak 34 buah (sesuai dengan banyaknya tombol kalkulator). Kemudian ubah property masing-masing captionnya sesuai dengan fungsi tombol tersebut atau Anda bisa melihat pada tabel berikut :.

Button
Properti
Nilai
1
Caption
Name
0
Button0
2
Caption
Name
1
Button1
3
Caption
Name
2
Button2
4
Caption
Name
3
Button3
5
Caption
Name
4
Button4
6
Caption
Name
5
Button5
7
Caption
Name
6
Button6
8
Caption
Name
7
Button7
9
Caption
Name
8
Button8
10
Caption
Name
9
Button9
11
Caption
Name
.
ButtonPoint
12
Caption
Name
+/-
ButtonNot
13
Caption
Name
+
ButtonPlus
14
Caption
Name
-
ButtonMin
15
Caption
Name
x
ButtonKali
16
Caption
Name
/
ButtonBagi
17
Caption
Name
div
ButtonDiv
18
Caption
Name
mod
ButtonMod
19
Caption
Name
=
ButtonResult
20
Caption
Name
sqr
ButtonKuadrat
21
Caption
Name
sqrt
ButtonAkar
22
Caption
Name
x^y
ButtonPangkat
23
Caption
Name
sin
ButtonSin
24
Caption
Name
cos
ButtonCos
25
Caption
Name
tan
ButtonTan
26
Caption
Name
ln
ButtonLn
27
Caption
Name
log
ButtonLog
28
Caption
Name
1/x
ButtonPer
29
Caption
Name
mr
ButtonMr
30
Caption
Name
m+
ButtonM
31
Caption
Name
pi
ButtonPhi
32
Caption
Name
n!
ButtonFak
33
Caption
Name
off
ButtonOff
34
Caption
Name
on
ButtonOn

Masukkan komponen memo , komponen ini berfungsi sebagai layar dari kalkulator. Kemudian ubah property alignment dengan nilai taRightJustify, maksudnya agar posisi teks pada memo menjadi rata kanan sebab calculator pada umumnya juga rata kanan, inilah mengapa digunakan komponen memo sebagai layar kalkulator, bukan komponen edit, sebab komponen edit tidak mempunyai property alignment.
Masih pada Component Palette | tab standard, masukkan komponen radiobutton   sebanyak 3 buah.

Radiobutton
Property
Nilai
1
Caption
Name
Deg
RbDeg
2
Caption
Name
Rad
RbRad
3
Caption
Name
Grads
RbGrads

Pada component palette tab Win32, masukkan komponen StatusBar  ke dalam Form1, fungsinya untuk mempercantik tampilan interface program (sebagai footer dari form).

Aturlah posisi dan ukuran dari semua komponen di atas menjadi seperti gambar interface program di bawah ini :

Gambar 4.3  Tampilan interface program

1.1.2   Memasukkan kode program


Setelah selesai merancang interface program, maka langkah selanjutnya adalah memasukkan kode program.
1. Seperti yang dijelaskan di atas, bahwa program kalkulator ini menggunakan empat buah variable sebagai media penyimpan sementara, maka terlebih dulu kita harus mendeklarasikannya, caranya : masuk ke jendela code editor atau tekan tombol F12, kemudian carilah kata :

var
  Form1: TForm1;

Ketikkan deklarasi variabelnya dibawah kata-kata tersebut :

MemAngka,MemLogic,MemOperator,MemSimpan:string;

2. Klik Form1 lalu pada jendela object inspector, pilih event onCreate dan klik dua kali sehingga muncul jendela code editor dengan procedure onCreate. Masukkan kode program untuk event ini, sehingga kode programnya menjadi sebagai berikut :

procedure TForm1.FormCreate(Sender: TObject);
begin
  memo1.Clear;{mengosongkan caption / lines dari memo1}

 {menonaktifkan ketiga radiobutton}
RbDEG.Enabled:=false;
RbRAD.Enabled:=false;
RbGRADS.Enabled:=false;
end;

3. Dari jendela code editor kembali ke Form1 atau tekan F12. Pada Form1, klik dua kali buttonOn (tombol On), sehingga akan masuk ke jendela code editor dengan procedure  onClick. Fungsi buttonOn adalah untuk meaktifkan kalkulator sebab pada saat onCreate kalkulator telah di-set nonaktif. Procedure onClick artinya jika button ini diklik maka program akan menjalankan instruksi di dalam procedure ini. Masukkan kode program untuk event ini, sehingga kode programnya menjadi sebagai berikut :

procedure TForm1.ButtonOnClick(Sender: TObject);
begin
 {setting ketika tombol on ditekan}
Memo1.Text:='0';
{membuat layar kalkulator berisi angka 0}
MemLogic:='0';
{merubah nilai variable MemLogic menjadi 0}
MemOperator :='';
{mengosongkan nilai variable MemOperator}
MemAngka :='0';
{merubah nilai variable MemAngka menjadi 0}

{mengaktifkan kembali ketiga radiobutton}
RbDEG.Enabled:=true;
RbRAD.Enabled:=true;
RbGRADS.Enabled:=true;

RbDEG.Checked:=true; {mengecek radiobutton RbDeg}
end;

4. Dari jendela code editor kembali ke Form1 atau tekan F12. Pada Form1, klik dua kali buttonOff (tombol Off), Fungsi buttonOff adalah untuk menonaktifkan kalkulator. sehingga akan masuk ke jendela code editor dengan procedure  onClick. Masukkan kode program untuk event ini, sehingga kode programnya menjadi sebagai berikut :

procedure TForm1.ButtonOffClick(Sender: TObject);
begin
memo1.clear; {mengosongkan tampilan layar calculator}
MemLogic:='';
MemSimpan :='0';

{menonaktifkan ketiga radiobutton}
RbDEG.Checked  :=false;
RbRAD.Checked  :=false;
RbGRADS.Checked:=false;
end;

5. Dengan cara yang sama dengan langkah empat atau lima di atas, masukkan kode program untuk tombol button0 seperti berikut ini :

procedure TForm1.Button0Click(Sender: TObject);
begin
if memo1.text<>'' then
if MemLogic='0' then
 begin
 if MemOperator<>'' then memo1.Text:='0' else
 if memo1.text='0' then memo1.text:='0' else
   begin
   memo1.Text:=memo1.Text+'0';
   MemLogic:='1';
   end;
 end
else
 memo1.Text:=memo1.Text+'0';
end;

Saya akan menjelaskan tentang logika pada procedure ini untuk setiap baris perintah di atas :
1.if memo1.text<>'' then
Maksudnya, jika teks dari memo1(layar) tidak kosong maka program akan menjalankan instruksi berikutnya, jika kosong maka program tidak akan menjalankan apapun karena berarti kalkulator sedang tidak aktif, hal ini berhubungan dengan fungsi buttonOn dan buttonOff. Oleh karena itu user harus menekan tombol buttonOn untuk mengaktifkan kalkulator.
2.if MemLogic='0' then
 begin
Maksudnya, jika nilai dari variable MemLogic adalah 0 maka  program akan menjalankan intruksi pada baris berikutnya yaitu antara kata begin dan end. Mengenai maksud dari nilai variable Memlogic, telah dijelaskan pada bagian logika program di atas.
3.if MemOperator<>'' then memo1.Text:='0' else
Maksudnya, jika nilai dari variable MemOperator adalah 0 maka  teks pada memo1 atau layar kalkulator menjadi 0, Mengenai maksud dari nilai variable MemOperator, juga telah dijelaskan pada bagian logika program di atas. Namun jika nilai dari variable MemOperator tidak sama dengan 0 maka program akan menjalankan instruksi berikutnya.
4.if memo1.text='0' then memo1.text:='0' else
Maksudnya, jika teks pada memo1(layar) adalah 0 maka  teks pada memo1 atau layar kalkulator akan tetap 0, sebab yang ditekan memang button0. Untuk lebih jelasnya Anda bisa mencermati kembali logika program di atas. Namun jika teks dari memo1 tidak sama dengan 0 maka program akan menjalankan instruksi berikutnya
5.begin
  Memo1.Text:=Memo1.Text+'0';
  MemLogic:='1';
end;
Maksudnya, teks pada memo1(layar) sekarang berubah menjadi teks pada memo1 sebelumnya ditambah (digabung) dengan angka 0. Kemudian nilai dari variable MemLogic diubah menjadi 1. Untuk lebih jelasnya Anda bisa melihat kembali logika program di atas.
6.else
Memo1.Text:=Memo1.Text+'0';
Maksudnya, jika nilai dari variable MemLogic bukan 0 maka teks pada memo1(layar) sekarang berubah menjadi teks pada memo1 sebelumnya ditambah (digabung) dengan angka 0.

6. Masukkan kode program untuk tombol Button1 sampai dengan Button 9  event onClick, sehingga kode lengkap untuk procedure-procedure tersebut menjadi sebagai berikut :

procedure TForm1.Button1Click(Sender: TObject);
begin
if memo1.text<>'' then
if MemLogic='0' then
 begin
 MemLogic:='1';
 if MemOperator<>'' then memo1.Text:='1' else
 memo1.text:='1';
 end
else
 memo1.Text:=memo1.Text+'1';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if memo1.text<>'' then
if MemLogic='0' then
 begin
 MemLogic:='1';
 if MemOperator<>'' then memo1.Text:='2' else
 memo1.text:='2';
 end
else
 memo1.Text:=memo1.Text+'2';
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
if memo1.text<>'' then
if MemLogic='0' then
 begin
 MemLogic:='1';
 if MemOperator<>'' then memo1.Text:='3' else
 memo1.text:='3';
 end
else
 memo1.Text:=memo1.Text+'3';
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
if memo1.text<>'' then
if MemLogic='0' then
 begin
 MemLogic:='1';
 if MemOperator<>'' then memo1.Text:='4' else
 memo1.text:='4';
 end
else
 memo1.Text:=memo1.Text+'4';
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
if memo1.text<>'' then
if MemLogic='0' then
 begin
 MemLogic:='1';
 if MemOperator<>'' then memo1.Text:='5' else
 memo1.text:='5';
 end
else
 memo1.Text:=memo1.Text+'5';
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
if memo1.text<>'' then
if MemLogic='0' then
 begin
 MemLogic:='1';
 if MemOperator<>'' then memo1.Text:='6' else
 memo1.text:='6' ;
 end
else
 memo1.Text:=memo1.Text+'6';
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
if memo1.text<>'' then
if MemLogic='0' then
 begin
 MemLogic:='1';
 if MemOperator<>'' then memo1.Text:='7' else
 memo1.text:='7' ;
 end
else
 memo1.Text:=memo1.Text+'7';
end;

procedure TForm1.Button8Click(Sender: TObject);
begin
if memo1.text<>'' then
if MemLogic='0' then
 begin
 MemLogic:='1';
 if MemOperator<>'' then memo1.Text:='8' else
 memo1.text:='8';
 end
else
 memo1.Text:=memo1.Text+'8';
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
if memo1.text<>'' then
if MemLogic='0' then
 begin
 MemLogic:='1';
 if MemOperator<>'' then memo1.Text:='9' else
 memo1.text:='9';
 end
else
 memo1.Text:=memo1.Text+'9';
end;

7. Masukkan kode program untuk tombol ButtonPoint dan ButtonNot  event onClick, sehingga kode lengkap untuk procedure-procedure tersebut menjadi sebagai berikut :

procedure TForm1.ButtonPointClick(Sender: TObject);
begin
if memo1.text<>'' then
 memo1.Text:=memo1.Text + '.';
 {menambahkan tanda desimal(titik) pada teks dari memo}
end;

procedure TForm1.ButtonNotClick(Sender: TObject);
begin
if memo1.text<>'' then
 memo1.Text:=floattostr(strtofloat(memo1.Text)*(-1));
{mengubah nilai memo1 menjadi positif atau negatif}
end;

procedure TForm1.ButtonPlusClick(Sender: TObject);
begin
if (memo1.text<>'') then
  if MemLogic='0' then MemOperator:='+' else
  if (MemOperator='')  then
    begin
    MemOperator:='+';
    MemLogic:='0';
    MemAngka:=memo1.Text;
    end
  else
    begin
    if MemOperator='+' then memo1.Text:=floattostr(strtofloat(MemAngka)+strtofloat(memo1.Text));
    if MemOperator='-' then memo1.Text:=floattostr(strtofloat(MemAngka)-strtofloat(memo1.Text));
    if MemOperator='x' then memo1.Text:=floattostr(strtofloat(MemAngka)*strtofloat(memo1.Text));
    if MemOperator='/' then memo1.Text:=floattostr(strtofloat(MemAngka)/strtofloat(memo1.Text));
    if MemOperator='mod' then memo1.Text:=inttostr(strtoint(MemAngka) mod strtoint(memo1.Text));
    if MemOperator='div' then memo1.Text:=inttostr(strtoint(MemAngka)div strtoint(memo1.Text));
    if MemOperator='^' then memo1.Text:=floattostr(exp(strtofloat(memo1.Text)*ln(strtofloat(MemAngka))));
    MemAngka:=memo1.Text;
    MemOperator:='+';
    MemLogic:='0';
    end;
end;

procedure TForm1.ButtonMinClick(Sender: TObject);
begin
if (memo1.text<>'') then
  if MemLogic='0' then MemOperator:='-' else
  if (MemOperator='')  then
    begin
    MemOperator:='-';
    MemLogic:='0';
    MemAngka:=memo1.Text;
    end
  else
    begin
    if MemOperator='+' then memo1.Text:=floattostr(strtofloat(MemAngka)+strtofloat(memo1.Text));
    if MemOperator='-' then memo1.Text:=floattostr(strtofloat(MemAngka)-strtofloat(memo1.Text));
    if MemOperator='x' then memo1.Text:=floattostr(strtofloat(MemAngka)*strtofloat(memo1.Text));
    if MemOperator='/' then memo1.Text:=floattostr(strtofloat(MemAngka)/strtofloat(memo1.Text));
    if MemOperator='mod' then memo1.Text:=inttostr(strtoint(MemAngka) mod strtoint(memo1.Text));
    if MemOperator='div' then memo1.Text:=inttostr(strtoint(MemAngka)div strtoint(memo1.Text));
    if MemOperator='^' then memo1.Text:=floattostr(exp(strtofloat(memo1.Text)*ln(strtofloat(MemAngka))));
    MemAngka:=memo1.Text;
    MemOperator:='-';
    MemLogic:='0';
    end;
end;

procedure TForm1.ButtonKaliClick(Sender: TObject);
begin
if (memo1.text<>'') then
  if MemLogic='0' then MemOperator:='x' else
  if (MemOperator='')  then
    begin
    MemOperator:='x';
    MemLogic:='0';
    MemAngka:=memo1.Text;
    end
  else
    begin
    if MemOperator='+' then memo1.Text:=floattostr(strtofloat(MemAngka)+strtofloat(memo1.Text));
    if MemOperator='-' then memo1.Text:=floattostr(strtofloat(MemAngka)-strtofloat(memo1.Text));
    if MemOperator='x' then memo1.Text:=floattostr(strtofloat(MemAngka)*strtofloat(memo1.Text));
    if MemOperator='/' then memo1.Text:=floattostr(strtofloat(MemAngka)/strtofloat(memo1.Text));
    if MemOperator='mod' then memo1.Text:=inttostr(strtoint(MemAngka) mod strtoint(memo1.Text));
    if MemOperator='div' then memo1.Text:=inttostr(strtoint(MemAngka)div strtoint(memo1.Text));
    if MemOperator='^' then memo1.Text:=floattostr(exp(strtofloat(memo1.Text)*ln(strtofloat(MemAngka))));
    MemAngka:=memo1.Text;
    MemOperator:='x';
    MemLogic:='0';
    end;
end;

procedure TForm1.ButtonBagiClick(Sender: TObject);
begin
if (memo1.text<>'') then
  if MemLogic='0' then MemOperator:='/' else
  if (MemOperator='')  then
    begin
    MemOperator:='/';
    MemLogic:='0';
    MemAngka:=memo1.Text;
    end
  else
    begin
    if MemOperator='+' then memo1.Text:=floattostr(strtofloat(MemAngka)+strtofloat(memo1.Text));
    if MemOperator='-' then memo1.Text:=floattostr(strtofloat(MemAngka)-strtofloat(memo1.Text));
    if MemOperator='x' then memo1.Text:=floattostr(strtofloat(MemAngka)*strtofloat(memo1.Text));
    if MemOperator='/' then memo1.Text:=floattostr(strtofloat(MemAngka)/strtofloat(memo1.Text));
    if MemOperator='mod' then memo1.Text:=inttostr(strtoint(MemAngka) mod strtoint(memo1.Text));
    if MemOperator='div' then memo1.Text:=inttostr(strtoint(MemAngka)div strtoint(memo1.Text));
    if MemOperator='^' then memo1.Text:=floattostr(exp(strtofloat(memo1.Text)*ln(strtofloat(MemAngka))));
    MemAngka:=memo1.Text;
    MemOperator:='/';
    MemLogic:='0';
    end;
end;

procedure TForm1.ButtonModClick(Sender: TObject);
begin
if (memo1.text<>'') then
  if MemLogic='0' then MemOperator:='mod' else
  if (MemOperator='')  then
    begin
    MemOperator:='mod';
    MemLogic:='0';
    MemAngka:=memo1.Text;
    end
  else
    begin
    if MemOperator='+' then memo1.Text:=floattostr(strtofloat(MemAngka)+strtofloat(memo1.Text));
    if MemOperator='-' then memo1.Text:=floattostr(strtofloat(MemAngka)-strtofloat(memo1.Text));
    if MemOperator='x' then memo1.Text:=floattostr(strtofloat(MemAngka)*strtofloat(memo1.Text));
    if MemOperator='/' then memo1.Text:=floattostr(strtofloat(MemAngka)/strtofloat(memo1.Text));
    if MemOperator='mod' then memo1.Text:=inttostr(strtoint(MemAngka) mod strtoint(memo1.Text));
    if MemOperator='div' then memo1.Text:=inttostr(strtoint(MemAngka)div strtoint(memo1.Text));
    if MemOperator='^' then memo1.Text:=floattostr(exp(strtofloat(memo1.Text)*ln(strtofloat(MemAngka))));
    MemAngka:=memo1.Text;
    MemOperator:='mod';
    MemLogic:='0';
    end;
end;

procedure TForm1.ButtonDivClick(Sender: TObject);
begin
if (memo1.text<>'') then
  if MemLogic='0' then MemOperator:='div' else
  if (MemOperator='') then
    begin
    MemOperator:='div';
    MemLogic:='0';
    MemAngka:=memo1.Text;
    end
  else
    begin
    if MemOperator='+' then memo1.Text:=floattostr(strtofloat(MemAngka)+strtofloat(memo1.Text));
    if MemOperator='-' then memo1.Text:=floattostr(strtofloat(MemAngka)-strtofloat(memo1.Text));
    if MemOperator='x' then memo1.Text:=floattostr(strtofloat(MemAngka)*strtofloat(memo1.Text));
    if MemOperator='/' then memo1.Text:=floattostr(strtofloat(MemAngka)/strtofloat(memo1.Text));
    if MemOperator='mod' then memo1.Text:=inttostr(strtoint(MemAngka) mod strtoint(memo1.Text));
    if MemOperator='div' then memo1.Text:=inttostr(strtoint(MemAngka)div strtoint(memo1.Text));
    if MemOperator='^' then memo1.Text:=floattostr(exp(strtofloat(memo1.Text)*ln(strtofloat(MemAngka))));
    MemAngka:=memo1.Text;
    MemOperator:='div';
    MemLogic:='0';
    end;
end;

procedure TForm1.ButtonResultClick(Sender: TObject);
begin
    if MemOperator='+' then memo1.Text:=floattostr(strtofloat(MemAngka)+strtofloat(memo1.Text));
    if MemOperator='-' then memo1.Text:=floattostr(strtofloat(MemAngka)-strtofloat(memo1.Text));
    if MemOperator='x' then memo1.Text:=floattostr(strtofloat(MemAngka)*strtofloat(memo1.Text));
    if MemOperator='/' then memo1.Text:=floattostr(strtofloat(MemAngka)/strtofloat(memo1.Text));
    if MemOperator='mod' then memo1.Text:=inttostr(strtoint(MemAngka) mod strtoint(memo1.Text));
    if MemOperator='div' then memo1.Text:=inttostr(strtoint(MemAngka)div strtoint(memo1.Text));
    if MemOperator='^' then memo1.Text:=floattostr(exp(strtofloat(memo1.Text)*ln(strtofloat(MemAngka))));
    MemAngka:=memo1.Text;
    MemLogic:='0';
end;

procedure TForm1.ButtonKuadratClick(Sender: TObject);
begin
if memo1.text<>'' then
 memo1.Text:=floattostr(sqr(strtofloat(memo1.Text)));
end;

procedure TForm1.ButtonAkarClick(Sender: TObject);
begin
if memo1.text<>'' then
 memo1.Text:=floattostr(sqrt(strtofloat(memo1.Text)));
end;

procedure TForm1.ButtonPangkatClick(Sender: TObject);
begin
 if (memo1.text<>'') then
  if MemLogic='0' then MemOperator:='^' else
  if (MemOperator='') then
    begin
    MemOperator:='^';
    MemLogic:='0';
    MemAngka:=memo1.Text;
    end
  else
    begin
    if MemOperator='+' then memo1.Text:=floattostr(strtofloat(MemAngka)+strtofloat(memo1.Text));
    if MemOperator='-' then memo1.Text:=floattostr(strtofloat(MemAngka)-strtofloat(memo1.Text));
    if MemOperator='x' then memo1.Text:=floattostr(strtofloat(MemAngka)*strtofloat(memo1.Text));
    if MemOperator='/' then memo1.Text:=floattostr(strtofloat(MemAngka)/strtofloat(memo1.Text));
    if MemOperator='mod' then memo1.Text:=inttostr(strtoint(MemAngka) mod strtoint(memo1.Text));
    if MemOperator='div' then memo1.Text:=inttostr(strtoint(MemAngka)div strtoint(memo1.Text));
    if MemOperator='^' then memo1.Text:=floattostr(exp(strtofloat(memo1.Text)*ln(strtofloat(MemAngka))));
    MemAngka:=memo1.Text;
    MemOperator:='^';
    MemLogic:='0';
    end;
end;

procedure TForm1.ButtonLnClick(Sender: TObject);
begin
 if (memo1.text<>'') then
    memo1.Text := floattostr(ln(strtofloat(memo1.Text)));
end;

procedure TForm1.ButtonLogClick(Sender: TObject);
begin
  if memo1.Text<=inttostr(0) then memo1.Text :='Error'
  else
  if (memo1.text<>'') then
 memo1.Text := floattostr(log10(strtofloat(memo1.Text)));
end;

procedure TForm1.ButtonPerClick(Sender: TObject);
begin
 if memo1.Text = '0' then memo1.Text:='Error divide zero' else
 if memo1.Text<>'' then memo1.Text :=floattostr(1/strtofloat(memo1.Text));
 MemLogic :='0';
end;

procedure TForm1.ButtonFakClick(Sender: TObject);
var i,n,fak:integer;
begin
if memo1.Text<>'' then
 begin
 n  :=strtoint(memo1.Text);
 fak:=1;
 for i:=1 to n-1 do
   fak:=fak*n;

 memo1.Text:=inttostr(fak);
 MemLogic :='0';
 end;
end;

procedure TForm1.ButtonPhiClick(Sender: TObject);
begin
if memo1.Text<>'' then memo1.Text := floattostr(pi);
end;

procedure TForm1.ButtonSinClick(Sender: TObject);
var sudut:real;
begin
if memo1.Text<>'' then
 begin
 sudut:=strtofloat(memo1.Text);
 if RbDeg.Checked = true then  sudut:=sudut*pi/180 else
 if RbRad.Checked = true then  sudut:=sudut else
 if RbGrads.Checked = true then  sudut:=sudut*pi/200;
 memo1.Text := floattostr(sin(sudut));
 MemLogic :='0';
 end;
end;

procedure TForm1.ButtonCosClick(Sender: TObject);
var sudut:real;
begin
if memo1.Text<>'' then
 begin
 sudut:=strtofloat(memo1.Text);
 if RbDeg.Checked = true then  sudut:=sudut*pi/180 else
 if RbRad.Checked = true then  sudut:=sudut else
 if RbGrads.Checked = true then  sudut:=sudut*pi/200;
 memo1.Text := floattostr(cos(sudut));
 MemLogic :='0';
 end;
end;

procedure TForm1.ButtonTanClick(Sender: TObject);
var sudut:real;
begin
if memo1.Text<>'' then
 begin
 sudut:=strtofloat(memo1.Text);
 if RbDeg.Checked = true then  sudut:=sudut*pi/180 else
 if RbRad.Checked = true then  sudut:=sudut else
 if RbGrads.Checked = true then  sudut:=sudut*pi/200;
 memo1.Text := floattostr(tan(sudut));
 MemLogic :='0';
 end;
end;

procedure TForm1.ButtonMClick(Sender: TObject);
begin
 MemSimpan := memo1.Text ;
 MemLogic := '0';
 MemOperator :='';
 MemAngka := '0';
end;

procedure TForm1.ButtonMrClick(Sender: TObject);
begin
 memo1.Text := MemSimpan ;
end;

26. Setelah semua langkah selesai dikerjakan, simpan hasil pekerjaan Anda. Caranya : File | Save All.
27. Setelah data disimpan maka sekarang tinggal menguji program dengan cara menjalankannya, klik F9 atau klik toolbar Run. Jika tidak ada yang error atau ganjil berarti pembuatan program berhasil, namun jika masih ada yang error coba cek kembali sesuai urutan langkah-langkah di atas, pastikan kode program tertulis dengan benar, sebab kebanyakan error disebabkan karena kesalahan penulisan sintaks atau kode program. Anda bisa menemukan kesalahan ini dengan cepat, sebab Delphi secara otomatis akan menyorot baris yang salah.
28. Selesai.

 

              COMPLETE SOURCE CODE

Agar tidak terjadi kesalahan, di bawah ini saya berikan listing program secara lengkap pada unit1, tanpa disertai komentar program.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Menus, ExtCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Button9: TButton;
    Button0: TButton;
    ButtonPoint: TButton;
    ButtonNot: TButton;
    ButtonKali: TButton;
    ButtonBagi: TButton;
    ButtonPlus: TButton;
    ButtonMin: TButton;
    ButtonResult: TButton;
    ButtonKuadrat: TButton;
    ButtonAkar: TButton;
    ButtonM: TButton;
    ButtonSin: TButton;
    ButtonCos: TButton;
    ButtonTan: TButton;
    ButtonMod: TButton;
    ButtonDiv: TButton;
    ButtonOn: TButton;
    ButtonOff: TButton;
    ButtonMr: TButton;
    ButtonPangkat: TButton;
    ButtonLn: TButton;
    ButtonLog: TButton;
    ButtonFak: TButton;
    ButtonPhi: TButton;
    ButtonPer: TButton;
    RbDEG: TRadioButton;
    RbRAD: TRadioButton;
    RbGRADS: TRadioButton;
    StatusBar1: TStatusBar;
    procedure ButtonOnClick(Sender: TObject);
    procedure ButtonOffClick(Sender: TObject);
    procedure Button0Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure ButtonPlusClick(Sender: TObject);
    procedure ButtonMinClick(Sender: TObject);
    procedure ButtonKaliClick(Sender: TObject);
    procedure ButtonBagiClick(Sender: TObject);
    procedure ButtonModClick(Sender: TObject);
    procedure ButtonDivClick(Sender: TObject);
    procedure ButtonResultClick(Sender: TObject);
    procedure ButtonKuadratClick(Sender: TObject);
    procedure ButtonPointClick(Sender: TObject);
    procedure ButtonNotClick(Sender: TObject);
    procedure ButtonAkarClick(Sender: TObject);
    procedure ButtonPangkatClick(Sender: TObject);
    procedure ButtonLnClick(Sender: TObject);
    procedure ButtonLogClick(Sender: TObject);
    procedure ButtonPerClick(Sender: TObject);
    procedure ButtonFakClick(Sender: TObject);
    procedure ButtonPhiClick(Sender: TObject);
    procedure ButtonSinClick(Sender: TObject);
    procedure ButtonCosClick(Sender: TObject);
    procedure ButtonTanClick(Sender: TObject);
    procedure ButtonMClick(Sender: TObject);
    procedure ButtonMrClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  MemAngka,MemLogic,MemOperator,MemSimpan:string;

implementation
uses math;
{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Clear;
RbDEG.Enabled:=false;
RbRAD.Enabled:=false;
RbGRADS.Enabled:=false;
end;

procedure TForm1.ButtonOnClick(Sender: TObject);
begin
memo1.Text:='0';
MemLogic:='0';
MemOperator :='';
MemAngka :='0';

RbDEG.Enabled:=true;
RbRAD.Enabled:=true;
RbGRADS.Enabled:=true;
RbDEG.Checked:=true;
end;

procedure TForm1.ButtonOffClick(Sender: TObject);
begin
memo1.clear;
MemLogic:='';
MemSimpan :='0';

RbDEG.Enabled:=false;
RbRAD.Enabled:=false;
RbGRADS.Enabled:=false;
end;

procedure TForm1.Button0Click(Sender: TObject);
begin
if memo1.text<>'' then
if MemLogic='0' then
 begin
 if MemOperator<>'' then memo1.Text:='0' else
 if memo1.text='0' then memo1.text:='0' else
   begin
   memo1.Text:=memo1.Text+'0';
   MemLogic:='1';
   end;
 end
else
 memo1.Text:=memo1.Text+'0';
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if memo1.text<>'' then
if MemLogic='0' then
 begin
 MemLogic:='1';
 if MemOperator<>'' then memo1.Text:='1' else
 memo1.text:='1';
 end
else
 memo1.Text:=memo1.Text+'1';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if memo1.text<>'' then
if MemLogic='0' then
 begin
 MemLogic:='1';
 if MemOperator<>'' then memo1.Text:='2' else
 memo1.text:='2';
 end
else
 memo1.Text:=memo1.Text+'2';
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
if memo1.text<>'' then
if MemLogic='0' then
 begin
 MemLogic:='1';
 if MemOperator<>'' then memo1.Text:='3' else
 memo1.text:='3';
 end
else
 memo1.Text:=memo1.Text+'3';
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
if memo1.text<>'' then
if MemLogic='0' then
 begin
 MemLogic:='1';
 if MemOperator<>'' then memo1.Text:='4' else
 memo1.text:='4';
 end
else
 memo1.Text:=memo1.Text+'4';
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
if memo1.text<>'' then
if MemLogic='0' then
 begin
 MemLogic:='1';
 if MemOperator<>'' then memo1.Text:='5' else
 memo1.text:='5';
 end
else
 memo1.Text:=memo1.Text+'5';
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
if memo1.text<>'' then
if MemLogic='0' then
 begin
 MemLogic:='1';
 if MemOperator<>'' then memo1.Text:='6' else
 memo1.text:='6' ;
 end
else
 memo1.Text:=memo1.Text+'6';
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
if memo1.text<>'' then
if MemLogic='0' then
 begin
 MemLogic:='1';
 if MemOperator<>'' then memo1.Text:='7' else
 memo1.text:='7' ;
 end
else
 memo1.Text:=memo1.Text+'7';
end;

procedure TForm1.Button8Click(Sender: TObject);
begin
if memo1.text<>'' then
if MemLogic='0' then
 begin
 MemLogic:='1';
 if MemOperator<>'' then memo1.Text:='8' else
 memo1.text:='8';
 end
else
 memo1.Text:=memo1.Text+'8';
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
if memo1.text<>'' then
if MemLogic='0' then
 begin
 MemLogic:='1';
 if MemOperator<>'' then memo1.Text:='9' else
 memo1.text:='9';
 end
else
 memo1.Text:=memo1.Text+'9';
end;

procedure TForm1.ButtonPlusClick(Sender: TObject);
begin
if (memo1.text<>'') then
  if MemLogic='0' then MemOperator:='+' else
  if (MemOperator='')  then
    begin
    MemOperator:='+';
    MemLogic:='0';
    MemAngka:=memo1.Text;
    end
  else
    begin
    if MemOperator='+' then memo1.Text:=floattostr(strtofloat(MemAngka)+strtofloat(memo1.Text));
    if MemOperator='-' then memo1.Text:=floattostr(strtofloat(MemAngka)-strtofloat(memo1.Text));
    if MemOperator='x' then memo1.Text:=floattostr(strtofloat(MemAngka)*strtofloat(memo1.Text));
    if MemOperator='/' then memo1.Text:=floattostr(strtofloat(MemAngka)/strtofloat(memo1.Text));
    if MemOperator='mod' then memo1.Text:=inttostr(strtoint(MemAngka) mod strtoint(memo1.Text));
    if MemOperator='div' then memo1.Text:=inttostr(strtoint(MemAngka)div strtoint(memo1.Text));
    if MemOperator='^' then memo1.Text:=floattostr(exp(strtofloat(memo1.Text)*ln(strtofloat(MemAngka))));
    MemAngka:=memo1.Text;
    MemOperator:='+';
    MemLogic:='0';
    end;
end;

procedure TForm1.ButtonMinClick(Sender: TObject);
begin
if (memo1.text<>'') then
  if MemLogic='0' then MemOperator:='-' else
  if (MemOperator='')  then
    begin
    MemOperator:='-';
    MemLogic:='0';
    MemAngka:=memo1.Text;
    end
  else
    begin
    if MemOperator='+' then memo1.Text:=floattostr(strtofloat(MemAngka)+strtofloat(memo1.Text));
    if MemOperator='-' then memo1.Text:=floattostr(strtofloat(MemAngka)-strtofloat(memo1.Text));
    if MemOperator='x' then memo1.Text:=floattostr(strtofloat(MemAngka)*strtofloat(memo1.Text));
    if MemOperator='/' then memo1.Text:=floattostr(strtofloat(MemAngka)/strtofloat(memo1.Text));
    if MemOperator='mod' then memo1.Text:=inttostr(strtoint(MemAngka) mod strtoint(memo1.Text));
    if MemOperator='div' then memo1.Text:=inttostr(strtoint(MemAngka)div strtoint(memo1.Text));
    if MemOperator='^' then memo1.Text:=floattostr(exp(strtofloat(memo1.Text)*ln(strtofloat(MemAngka))));
    MemAngka:=memo1.Text;
    MemOperator:='-';
    MemLogic:='0';
    end;
end;

procedure TForm1.ButtonKaliClick(Sender: TObject);
begin
if (memo1.text<>'') then
  if MemLogic='0' then MemOperator:='x' else
  if (MemOperator='')  then
    begin
    MemOperator:='x';
    MemLogic:='0';
    MemAngka:=memo1.Text;
    end
  else
    begin
    if MemOperator='+' then memo1.Text:=floattostr(strtofloat(MemAngka)+strtofloat(memo1.Text));
    if MemOperator='-' then memo1.Text:=floattostr(strtofloat(MemAngka)-strtofloat(memo1.Text));
    if MemOperator='x' then memo1.Text:=floattostr(strtofloat(MemAngka)*strtofloat(memo1.Text));
    if MemOperator='/' then memo1.Text:=floattostr(strtofloat(MemAngka)/strtofloat(memo1.Text));
    if MemOperator='mod' then memo1.Text:=inttostr(strtoint(MemAngka) mod strtoint(memo1.Text));
    if MemOperator='div' then memo1.Text:=inttostr(strtoint(MemAngka)div strtoint(memo1.Text));
    if MemOperator='^' then memo1.Text:=floattostr(exp(strtofloat(memo1.Text)*ln(strtofloat(MemAngka))));
    MemAngka:=memo1.Text;
    MemOperator:='x';
    MemLogic:='0';
    end;
end;

procedure TForm1.ButtonBagiClick(Sender: TObject);
begin
if (memo1.text<>'') then
  if MemLogic='0' then MemOperator:='/' else
  if (MemOperator='')  then
    begin
    MemOperator:='/';
    MemLogic:='0';
    MemAngka:=memo1.Text;
    end
  else
    begin
    if MemOperator='+' then memo1.Text:=floattostr(strtofloat(MemAngka)+strtofloat(memo1.Text));
    if MemOperator='-' then memo1.Text:=floattostr(strtofloat(MemAngka)-strtofloat(memo1.Text));
    if MemOperator='x' then memo1.Text:=floattostr(strtofloat(MemAngka)*strtofloat(memo1.Text));
    if MemOperator='/' then memo1.Text:=floattostr(strtofloat(MemAngka)/strtofloat(memo1.Text));
    if MemOperator='mod' then memo1.Text:=inttostr(strtoint(MemAngka) mod strtoint(memo1.Text));
    if MemOperator='div' then memo1.Text:=inttostr(strtoint(MemAngka)div strtoint(memo1.Text));
    if MemOperator='^' then memo1.Text:=floattostr(exp(strtofloat(memo1.Text)*ln(strtofloat(MemAngka))));
    MemAngka:=memo1.Text;
    MemOperator:='/';
    MemLogic:='0';
    end;
end;

procedure TForm1.ButtonModClick(Sender: TObject);
begin
if (memo1.text<>'') then
  if MemLogic='0' then MemOperator:='mod' else
  if (MemOperator='')  then
    begin
    MemOperator:='mod';
    MemLogic:='0';
    MemAngka:=memo1.Text;
    end
  else
    begin
    if MemOperator='+' then memo1.Text:=floattostr(strtofloat(MemAngka)+strtofloat(memo1.Text));
    if MemOperator='-' then memo1.Text:=floattostr(strtofloat(MemAngka)-strtofloat(memo1.Text));
    if MemOperator='x' then memo1.Text:=floattostr(strtofloat(MemAngka)*strtofloat(memo1.Text));
    if MemOperator='/' then memo1.Text:=floattostr(strtofloat(MemAngka)/strtofloat(memo1.Text));
    if MemOperator='mod' then memo1.Text:=inttostr(strtoint(MemAngka) mod strtoint(memo1.Text));
    if MemOperator='div' then memo1.Text:=inttostr(strtoint(MemAngka)div strtoint(memo1.Text));
    if MemOperator='^' then memo1.Text:=floattostr(exp(strtofloat(memo1.Text)*ln(strtofloat(MemAngka))));
    MemAngka:=memo1.Text;
    MemOperator:='mod';
    MemLogic:='0';
    end;
end;

procedure TForm1.ButtonDivClick(Sender: TObject);
begin
if (memo1.text<>'') then
  if MemLogic='0' then MemOperator:='div' else
  if (MemOperator='') then
    begin
    MemOperator:='div';
    MemLogic:='0';
    MemAngka:=memo1.Text;
    end
  else
    begin
    if MemOperator='+' then memo1.Text:=floattostr(strtofloat(MemAngka)+strtofloat(memo1.Text));
    if MemOperator='-' then memo1.Text:=floattostr(strtofloat(MemAngka)-strtofloat(memo1.Text));
    if MemOperator='x' then memo1.Text:=floattostr(strtofloat(MemAngka)*strtofloat(memo1.Text));
    if MemOperator='/' then memo1.Text:=floattostr(strtofloat(MemAngka)/strtofloat(memo1.Text));
    if MemOperator='mod' then memo1.Text:=inttostr(strtoint(MemAngka) mod strtoint(memo1.Text));
    if MemOperator='div' then memo1.Text:=inttostr(strtoint(MemAngka)div strtoint(memo1.Text));
    if MemOperator='^' then memo1.Text:=floattostr(exp(strtofloat(memo1.Text)*ln(strtofloat(MemAngka))));
    MemAngka:=memo1.Text;
    MemOperator:='div';
    MemLogic:='0';
    end;
end;

procedure TForm1.ButtonResultClick(Sender: TObject);
begin
    if MemOperator='+' then memo1.Text:=floattostr(strtofloat(MemAngka)+strtofloat(memo1.Text));
    if MemOperator='-' then memo1.Text:=floattostr(strtofloat(MemAngka)-strtofloat(memo1.Text));
    if MemOperator='x' then memo1.Text:=floattostr(strtofloat(MemAngka)*strtofloat(memo1.Text));
    if MemOperator='/' then memo1.Text:=floattostr(strtofloat(MemAngka)/strtofloat(memo1.Text));
    if MemOperator='mod' then memo1.Text:=inttostr(strtoint(MemAngka) mod strtoint(memo1.Text));
    if MemOperator='div' then memo1.Text:=inttostr(strtoint(MemAngka)div strtoint(memo1.Text));
    if MemOperator='^' then memo1.Text:=floattostr(exp(strtofloat(memo1.Text)*ln(strtofloat(MemAngka))));
    MemAngka:=memo1.Text;
    MemLogic:='0';
end;

procedure TForm1.ButtonKuadratClick(Sender: TObject);
begin
if memo1.text<>'' then
 memo1.Text:=floattostr(sqr(strtofloat(memo1.Text)));
end;

procedure TForm1.ButtonPointClick(Sender: TObject);
begin
if memo1.text<>'' then
 memo1.Text:=memo1.Text + '.';
end;

procedure TForm1.ButtonNotClick(Sender: TObject);
begin
if memo1.text<>'' then
 memo1.Text:=floattostr(strtofloat(memo1.Text)*(-1));
end;

procedure TForm1.ButtonAkarClick(Sender: TObject);
begin
if memo1.text<>'' then
 memo1.Text:=floattostr(sqrt(strtofloat(memo1.Text)));
end;

procedure TForm1.ButtonPangkatClick(Sender: TObject);
begin
 if (memo1.text<>'') then
  if MemLogic='0' then MemOperator:='^' else
  if (MemOperator='') then
    begin
    MemOperator:='^';
    MemLogic:='0';
    MemAngka:=memo1.Text;
    end
  else
    begin
    if MemOperator='+' then memo1.Text:=floattostr(strtofloat(MemAngka)+strtofloat(memo1.Text));
    if MemOperator='-' then memo1.Text:=floattostr(strtofloat(MemAngka)-strtofloat(memo1.Text));
    if MemOperator='x' then memo1.Text:=floattostr(strtofloat(MemAngka)*strtofloat(memo1.Text));
    if MemOperator='/' then memo1.Text:=floattostr(strtofloat(MemAngka)/strtofloat(memo1.Text));
    if MemOperator='mod' then memo1.Text:=inttostr(strtoint(MemAngka) mod strtoint(memo1.Text));
    if MemOperator='div' then memo1.Text:=inttostr(strtoint(MemAngka)div strtoint(memo1.Text));
    if MemOperator='^' then memo1.Text:=floattostr(exp(strtofloat(memo1.Text)*ln(strtofloat(MemAngka))));
    MemAngka:=memo1.Text;
    MemOperator:='^';
    MemLogic:='0';
    end;
end;

procedure TForm1.ButtonLnClick(Sender: TObject);
begin
 if (memo1.text<>'') then
    memo1.Text := floattostr(ln(strtofloat(memo1.Text)));
end;

procedure TForm1.ButtonLogClick(Sender: TObject);
begin
  if memo1.Text<=inttostr(0) then memo1.Text :='Error'
  else
  if (memo1.text<>'') then
 memo1.Text := floattostr(log10(strtofloat(memo1.Text)));
end;

procedure TForm1.ButtonPerClick(Sender: TObject);
begin
 if memo1.Text = '0' then memo1.Text:='Error divide zero' else
 if memo1.Text<>'' then memo1.Text :=floattostr(1/strtofloat(memo1.Text));
 MemLogic :='0';
end;

procedure TForm1.ButtonFakClick(Sender: TObject);
var i,n,fak:integer;
begin
if memo1.Text<>'' then
 begin
 n  :=strtoint(memo1.Text);
 fak:=1;
 for i:=1 to n-1 do
   fak:=fak*n;

 memo1.Text:=inttostr(fak);
 MemLogic :='0';
 end;
end;

procedure TForm1.ButtonPhiClick(Sender: TObject);
begin
if memo1.Text<>'' then memo1.Text := floattostr(pi);
end;

procedure TForm1.ButtonSinClick(Sender: TObject);
var sudut:real;
begin
if memo1.Text<>'' then
 begin
 sudut:=strtofloat(memo1.Text);
 if RbDeg.Checked = true then  sudut:=sudut*pi/180 else
 if RbRad.Checked = true then  sudut:=sudut else
 if RbGrads.Checked = true then  sudut:=sudut*pi/200;
 memo1.Text := floattostr(sin(sudut));
 MemLogic :='0';
 end;
end;

procedure TForm1.ButtonCosClick(Sender: TObject);
var sudut:real;
begin
if memo1.Text<>'' then
 begin
 sudut:=strtofloat(memo1.Text);
 if RbDeg.Checked = true then  sudut:=sudut*pi/180 else
 if RbRad.Checked = true then  sudut:=sudut else
 if RbGrads.Checked = true then  sudut:=sudut*pi/200;
 memo1.Text := floattostr(cos(sudut));
 MemLogic :='0';
 end;
end;

procedure TForm1.ButtonTanClick(Sender: TObject);
var sudut:real;
begin
if memo1.Text<>'' then
 begin
 sudut:=strtofloat(memo1.Text);
 if RbDeg.Checked = true then  sudut:=sudut*pi/180 else
 if RbRad.Checked = true then  sudut:=sudut else
 if RbGrads.Checked = true then  sudut:=sudut*pi/200;
 memo1.Text := floattostr(tan(sudut));
 MemLogic :='0';
 end;
end;

procedure TForm1.ButtonMClick(Sender: TObject);
begin
 MemSimpan := memo1.Text ;
 MemLogic := '0';
 MemOperator :='';
 MemAngka := '0';
end;

procedure TForm1.ButtonMrClick(Sender: TObject);
begin
 memo1.Text := MemSimpan ;
end;

end.


Selamat Mencoba Semoga Sukses...

0 komentar:

Posting Komentar

luvne.com tipscantiknya.com ayeey.com cicicookies.com mbepp.com kumpulanrumusnya.com.com