Pembuatan Aplikasi Kalkulator Menggunakan Bahasa Pemrograman Lazarus
Berikut ini cuma contoh aplikasi sangat sederhana yaitu pembuatan aplikasi kalkulator sederhana menggunakan bahasa pemrograman lazarus. Fasilitas yang disediakan adalah fasilitas penghitungan paling sederhana (penjumlahan,pengurangan, perkalian dan pembagian dengan bilangan pecahan dan bilangan negatif. Disini dijelaskan deklarasi variabel & prosedur-prosedur yang penting dalam pembuatan aplikasi tersebut :
unit u_calculator;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, ExtCtrls, Menus;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Button10: TButton;
Button11: TButton;
Button13: TButton;
Button14: TButton;
Button15: TButton;
Button16: TButton;
Button17: TButton;
Button18: TButton;
Button19: TButton;
Button2: TButton;
Button20: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
Edit1: TEdit;
MainMenu1: TMainMenu;
MenuItem1: TMenuItem;
MenuItem2: TMenuItem;
MenuItem3: TMenuItem;
procedure Button10Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure Button13Click(Sender: TObject);
procedure Button14Click(Sender: TObject);
procedure Button15Click(Sender: TObject);
procedure Button16Click(Sender: TObject);
procedure Button17Click(Sender: TObject);
procedure Button18Click(Sender: TObject);
procedure Button19Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button20Click(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 MenuItem2Click(Sender: TObject);
procedure MenuItem3Click(Sender: TObject);
procedure proses_hitung();
procedure proses_inc(kar : Char);
procedure proses_array(kar : Char);
procedure FormCreate(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
//————————————————————
//DEKLARASI VARIABLE GLOBAL
var
Form1: TForm1;
posisi : Byte;
tempstr : String;
hasil : Real;
temp : array[1..20] of String;
ketik : boolean;
keterangan fungsi masing-masing variabel :# posisi : menunjukkan posisi penempatan angka atau simbol ke dalam variabel penampung. variabel penampung tersebut bernama temp.# tempstr : variabel untuk menampung yang membantu agar pemakai dapat memasukkan angka lebih dari satu digit# hasil : variabel penampung hasil penghitungan# temp : variable array untuk menampung angka & tanda penghitungan# ketik : variable boolean sebagai penanda apakah pengguna sudah menekan tombol tanda hitung
implementation
{ TForm1 }
//————————————————————
//FORM CREATE
procedure TForm1.FormCreate(Sender: TObject);
begin
hasil := 0;
tempstr := ”;
posisi := 1;
edit1.Text:= FloatToStr(hasil);
ketik:=false;
end;
Prosedur FormCreate bertujuan memberikan nilai variable-variable pada pertama kali aplikasi dijalankan. Fungsi FloatToStr() berfungsi untuk mengubah nilai angka pecahan menjadi String dan ditampilkan pada komponen edit1.
//————————————————————
//PENEKANAN TOMBOL ANGKA
procedure TForm1.proses_inc(kar : Char);
begin
if (ketik = false) then
Edit1.Text := ”;
tempstr:=Edit1.Text;
tempstr:=tempstr+kar;
hasil:=StrToFloat(tempstr);
Edit1.Text:=FloatToStr(hasil);
ketik:=true;
end;
Penekanan tombol angka pada mulanya melakukan pemeriksaan apakah sebelum penekanan tombol tersebut ditekan tombol tanda hitung. Jika baru saja ditekan tanda hitung maka angka dianggap operan yang baru. Kemudian nilai yang ditampilkan dimasukkan ke variable tempstr untuk kemudian digabung dengan karakter angka yang baru saja ditekan. Kemudian hasil penggabungan tadi dijadikan nilai angka untuk mencegah angka 0 berada di depan bilangan dan akhirnya ditampilkan pada komponen edit1 dengan bantuan fungsi FloatToStr().
//MENEKAN TOMBOL ANGKA 0
procedure TForm1.Button1Click(Sender: TObject);
begin
proses_inc(‘0’);
end;
//MENEKAN TOMBOL ANGKA 1
procedure TForm1.Button2Click(Sender: TObject);
begin
proses_inc(‘1’);
end;
//MENEKAN TOMBOL ANGKA 2
procedure TForm1.Button3Click(Sender: TObject);
begin
proses_inc(‘2’);
end;
//MENEKAN TOMBOL ANGKA 3
procedure TForm1.Button4Click(Sender: TObject);
begin
proses_inc(‘3’);
end;
//MENEKAN TOMBOL ANGKA 4
procedure TForm1.Button5Click(Sender: TObject);
begin
proses_inc(‘4’);
end;
//MENEKAN TOMBOL ANGKA 5
procedure TForm1.Button6Click(Sender: TObject);
begin
proses_inc(‘5’);
end;
//MENEKAN TOMBOL ANGKA 6
procedure TForm1.Button7Click(Sender: TObject);
begin
proses_inc(‘6’);
end;
//MENEKAN TOMBOL ANGKA 7
procedure TForm1.Button8Click(Sender: TObject);
begin
proses_inc(‘7’);
end;
//MENEKAN TOMBOL ANGKA 8
procedure TForm1.Button9Click(Sender: TObject);
begin
proses_inc(‘8’);
end;
//MENEKAN TOMBOL ANGKA 9
procedure TForm1.Button10Click(Sender: TObject);
begin
proses_inc(‘9’);
end;
//TOGGLE TANDA NEGATIF
procedure TForm1.Button20Click(Sender: TObject);
begin
if Edit1.Text <> ‘0’ then
if (LeftStr(Edit1.Text, 1) = ‘-‘) then
Edit1.Text := RightStr(Edit1.Text, Length(Edit1.Text)-1)
else
Edit1.Text:=’-‘ + Edit1.Text;
end;
Tanda negatif akan ditampilkan bersifat toggle setiap pengguna menekan tombol tanda +/-, yaitu pada pertama kali memeriksa apakah angka yang tampil cuma angka nol (0), jika cuma angka nol tanda negatif tidak ditampilkan. Kemudian dilakukan pengecekan apakah sudah berstatus angka negatif dengan cara mengambil 1 karakter paling kiri dengan bantuan fungsi LeftStr(). Jika ya, maka kita hilangkan tanda negatif tersebut dengan hanya mengambil angkanya saja dengan bantuan fungsi RightStr(). Jika bilangan tersebut berstatus angka positif, maka kita cuma perlu menambahkan tanda negatif di depan bilangan tersebut.
//PENEKANAN TANDA TITIK
procedure TForm1.Button14Click(Sender: TObject);
begin
if (pos(‘.’, Edit1.Text) = 0) then
Edit1.Text:=Edit1.Text+’.’;
end;
Penggunaan tanda titik sebagai penanda bahwa bilangan tersebut bilangan pecahan hanya memakai satu kali tanda titik saja. Jika pengguna menekan tanda titik maka perlu dilakukan pengecekan apakah sudah terdapat tanda titik pada bilangan tersebut dengan bantuan fungsi pos() yang menghasilkan nilai boolean.
//PENEKANAN TOMBOL BACKSPACE
procedure TForm1.Button11Click(Sender: TObject);
var
pjgkata : Byte;
begin
pjgkata := Length(Edit1.Text);
Edit1.Text:=LeftStr(Edit1.Text, pjgkata-1);
if (Edit1.Text = ”) then
Edit1.Text := ‘0’;
end;
Tombol backspace berfungsi untuk menghapus angka satuan pada suatu bilangan. Pertama kali dilakukan penghitungan panjang bilangan. Kemudian dilakukan pemotongan sampai 1 digit sebelum akhir bilangan dengan bantuan fungsi LeftStr().
//PENEKANAN TOMBOL CLEAR
procedure TForm1.Button13Click(Sender: TObject);
var
i : Byte;
begin
posisi := 1;
tempstr := ”;
hasil := 0;
for i := 1 to 20 do
temp[i] := ”;
Edit1.Text:=’0′;
ketik:=false;
end;
Penekanan tombol Clear selain mengubah nilai yang ditampilkan pada komponen edit1 menjadi angka nol (0) juga mereset nilai variable-variable yang ada.
//————————————————————
//MEMASUKKAN ANGKA & TANDA HITUNG KE VARIABLE ARRAY PENAMPUNG
procedure TForm1.proses_array(kar : Char);
begin
if (ketik = true) then
begin
temp[posisi] := Edit1.Text;
temp[posisi+1]:=kar;
posisi += 2;
ketik:=false;
end;
end;
Prosedur proses_array berfungsi memasukkan suatu bilangan beserta tanda hitung pada variable penampung temp yang berbentuk array. Bilangan dimasukkan pada variable temp pada nilai posisi dan tanda hitung pada nilai posisi + 1. Karena posisinya berubah 2 angka, maka variable posisi kita tambahkan dengan nilai 2.
//MENEKAN TANDA +
procedure TForm1.Button16Click(Sender: TObject);
begin
proses_array(‘+’);
end;
//MENEKAN TANDA –
procedure TForm1.Button17Click(Sender: TObject);
begin
proses_array(‘-‘);
end;
//MENEKAN TANDA x
procedure TForm1.Button18Click(Sender: TObject);
begin
proses_array(‘x’);
end;
//MENEKAN TANDA /
procedure TForm1.Button19Click(Sender: TObject);
begin
proses_array(‘/’);
end;
//————————————————————
//PROSES PENGHITUNGAN AKHIR
procedure TForm1.proses_hitung();
var
i : Byte;
begin
if (temp[posisi-1] <> ‘+’) or (temp[posisi-1] <> ‘-‘) or (temp[posisi-1] <> ‘x’) or (temp[posisi-1] <> ‘/’) then
begin
temp[posisi]:=Edit1.Text;
inc(posisi);
hasil := StrToFloat(temp[1]);
for i := 2 to posisi-1 do
if (temp[i] = ‘+’) then
hasil := hasil + StrToFloat(temp[i+1])
else if (temp[i] = ‘-‘) then
hasil := hasil – StrToFloat(temp[i+1])
else if (temp[i] = ‘x’) then
hasil := hasil * StrToFloat(temp[i+1])
else if (temp[i] = ‘/’) then
hasil := hasil / StrToFloat(temp[i+1]);
Edit1.Text:=FloatToStr(hasil);
end;
end;
Prosedur proses_hitung() dijalankan jika pengguna menekan tanda sama dengan (“=”) yang kemudian akan dilakukan penghitungan hasil akhir dari penghitungan yang dilakukan. pertama-tama bilangan pertama dimasukkan pada variable penampung hasil. Kemudian dilakukan penghitungan sesuai tanda hitung dengan membaca setiap nilai pada variable array temp.
//MENEKAN TOMBOL SAMA DENGAN (“=”)
procedure TForm1.Button15Click(Sender: TObject);
begin
proses_hitung();
end;
//————————————————————
//PILIH MENU ABOUT
procedure TForm1.MenuItem3Click(Sender: TObject);
begin
ShowMessage(‘Kalkulator Palinukan’+#13#10#13#10+’- JAIN RAHMAN -‘);
end;
Prosedur ini untuk menampilkan About dengan bantuan prosedur ShowMessage().
//PILIH MENU KELUAR
procedure TForm1.MenuItem2Click(Sender: TObject);
begin
Close;
end;
Prosedur ini untuk menutup aplikasi dengan menjalankan prosedur Close.
initialization
{$I u_calculator.lrs}
end.
Untuk mendownload, silahkan klik di sini
Category: Pemrograman, Tutorial
mantap nah….raja…hihi
nice post
@ budi : tarima kasih sdh malajari cara mposting. hahaha, maklum gagap teknologi
bah…situ low profil banarai…padahal muantep jua
langsung di coba.,.
kada paham nah.,. screenshot’nya kurang.,., hee.,.
tapi di coba dulu.,.
@reza : sip…sekalian gasan tugas… 😀
@reza : bisa download scriptnya tuh diatas…tinggal di edit ja…
Hanyar membaiki judulnya td..supaya nyaman dilihat.hehe,memantau hj nh..sambil begadang
Kereeen….umpat mengopi skripnya gasan belajar…..
mantap ga…. 😀
@ all : masih ada bug. sudah pang diperbaiki, tapi balum ta upload. nih masih m’upload foto buhan palinukan bajalanan ke pagat – batu benawa. jadi jangan dibawamahitung lah, kaina salah hasil 😀
@ budi : aq dasar gagap teknologi bud ae
Ditunggu tutorial selanjutnya…kd bisa baulah program saurang pang, jadi menunggu source code open ampun urang ae hehehe
sama ja om ae…untung jua kita baisi programer muda kayak jain ni…mudahan jain mangaluarakan program2 lainnya…aminnnnnn
MANTABBBBB banar Om Jain…
salute you 1000%. Ulun mahadang ja nah.karena kada bisa bujur. kena ulun baguru lah???
he…
mantappp…………
@ all : sama haja masih balajar. program yg sdh dibaiki bug nya blum sempat ta upload, maklum kadada akses inet drumah, harus kwarnet dhulu. bila sdh diupload ada ja mahabari.
@ pak syams : pak pian adakah tutorial mnyambung ke database? bila batamu ulun baastilah handak baguru anu pian sebagai masternya lah
@Jain, umpat balajar ulun nah…
kalu di java dan c++ gimana?????
pengen coba bikin buat ngitung binery IP 🙂
mantapppppp…….