Showing posts with label Delphi. Show all posts
Showing posts with label Delphi. Show all posts

Wednesday, March 5, 2014

CARA PENANGANAN KESALAHAN DALAM PEMROGRAMAN

- 0 comments
Sebuah kompilator akan sering menemui program yang mengandung kesalahan, maka kompilator harus memiliki strategi apa yang harus dilakukan untuk menangani kesalahan - kesalahan tersebut.

1        Jenis – jenis Kesalahan
n  Kesalahan Leksikal
Misalnya kesalahan mengeja keyword,
contoh: then ditulis ten
n  Kesalahan Sintaks
Misalnya pada operasi aritmatika kekurangan jumlah paranthesis (kurung).
contoh : A:=X+(B*(C+D)         
n  Kesalahan Semantik
o   Tipe data yang salah, misal tipe data integer digunakan untuk variabel string.
    Contoh :        Var     Siswa : Integer
                                 Siswa := 'Aka'           {tipe string}
o  Variabel belum didefinisikan tetapi digunakan dalam operasi.
    Contoh :        B := B + 1      {B belum didefinisikan}

2        Penanganan Kesalahan
n  Prosedur penanganan kesalahan terdiri dari :
·           Mendeteksi kesalahan
·      Melaporkan kesalahan
·      Tindak lanjut perbaikan / pemulihan
n  Pelaporan kesalahan yang dilakukan oleh sebuah kompilator yang menemukan kesalahan meliputi :
·      Kode kesalahan
·      Pesan kesalahan dalam bahasa natural
·      Nama dan atribut identifier
·      Tipe – tipe yang terkait bila type checking
Contoh : Error Message : Error 162  jumlah: unknown identifier
Ø  Kode kesalahan = 162
Ø  Pesan kesalahan = unknown identifier
Ø  Nama identifier = jumlah
Adanya pesan kesalahan tersebut akan memudahkan pemrogram dalam mencari dan mengoreksi sumber dari kesalahan.
n  Pada saat kompilator menemukan kesalahan terdapat beberapa tingkatan reaksi diantaranya adalah :
a.     Reaksi yang tidak dapat diterima (tidak melaporkan error)
·         Kompilator crash : berhenti atau hang
·         Looping : kompilator masih berjalan tapi tidak pernah berakhir karena looping tak berhingga (indefinite/onbounded loop)
·         Menghasilkan program objek yang salah : kompilator melanjutkan proses sampai selesai tapi program objek yang dihasilkan salah. Ini berbahaya bila tidak diketahui pemrogram, karena baru akan muncul saat program dieksekusi.
b.  Reaksi yang benar tapi kurang dapat diterima dan kurang bermanfaat. Kompilator menemukan kesalahan pertama, melaporkannya, lalu berhenti (halt). Ini bisa muncul bila pembuat kompilator menganggap jarang terjadi kemunculan error dalam program sehingga kemampuan kompilator untuk mendeteksi dan melaporkan kesalahan hanya satu untuk setiap kali kompilasi. Pemrogram akan membuang waktu untuk melakukan pengulangan kompilasi setiap kali terdapat sebuah error.                 
c.  Reaksi yang dapat diterima
·           Reaksi yang sudah dapat dilakukan, yaitu kompilator melaporkan kesalahan / error, dan selanjutnya melakukan:
Ø Recovery / pemulihan, lalu melanjutkan menemukan kesalahan / error yang lain bila masih ada.
Ø Repair / Perbaikan kesalahan, lalu melanjutkan proses translasi dan menghasilkan program objek yang valid
Kebanyakan kompilator dewasa ini sudah memiliki kemampuan recovery dan repair.
·         Reaksi yang belum dapat dilakukan, yaitu kompilator mengkoreksi kesalahan, lalu menghasilkan program objek sesuai dengan yang diinginkan pemrogram. Disini komputernya sudah memiliki kecerdasan untuk mengetahui maksud pemrogram. Tingkatan respon ini belum dapat diimplementasikan pada kompilator yang ada dewasa ini.

3        Pemulihan Kesalahan
Tujuannya mengembalikan kondisi parser ke kondisi stabil (supaya bisa melanjutkan proses parsing ke posisi selanjutnya). Strategi yang dilakukan error recovery sebagai berikut :
v  Mekanisme Ad Hoc
Recovery yang dilakukan tergantung dari pembuat kompilator sendiri/Spesifik, dan tidak terikat pada suatu aturan tertentu. Cara ini biasa disebut juga special purpose error recovery.
v  Syntax Directed Recovery
Melakukan recovery berdasarkan syntax
Contoh : ada program
                               begin
                                          A:=A+1
                                                  B:=B+1;
                                                 C:=C+1
                               end;
kompilator akan mengenali sebagai (dalam notasi BNF)
          begin < statement>?<statement>;<statement>end;
? akan diperlakukan sebagai “;”
v  Secondary Error Recovery
Berguna untuk melokalisir kesalahan / error, caranya :
·           Panic mode
Maju terus dan mengabaikan teks sampai bertemu delimeter (misal ‘;’)
contoh :
                IF A := 1
                    Kondisi := true;
Teks diatas terjadi kesalahan karena tidak ada instruksi THEN, kompilator akan maju terus sampai bertemu ‘;’
·      Unit deletion
Menghapus keseluruhan suatu unit sintaktik (misal: <block>,<exp>,<statement> dan sebagainya), efeknya sama dengan panic mode tetapi unit deletion memelihara kebenaran sintaksis dari source program dan mempermudah untuk melakukan error repairing lebih lanjut.
v  Context Sensitive Recovery
          Berkaitan dengan semantik,misal bila terdapat variabel yang belum dideklarasikan(undifined variabel) maka diasumsikan tipenya berdasarkan kemunculannya.
Contoh :
                   B:= 'nama'
sementara diawal program variabel B belum dideklarasikan, maka  berdasarkan kemunculannya diasumsikan variabel B bertipe string.

4        Error Repair
Bertujuan untuk memodifikasi source program dari kesalahan dan membuatnya valid sehingga memungkinkan kompilator untuk melakukan translasi program yang mana akan dialirkan ketahapan selanjutnya pada proses kompilasi. Mekanisme error repair meliputi :
Ø  Mekanisme Ad Hoc
Tergantung dari pembuat kompilator sendiri / spesifik.
Ø  Syntax Directed Repair
Menyisipkan simbol terminal yang dianggap hilang atau membuang terminal penyebab kesalahan
Contoh :
                                           While a<1
                                            I:=I+1;
Kompilator akan menyisipkan DO karena kurang simbol DO
contoh lain :
                                 Procedure Increment;
                                 begin
                                          x:=x+1;
                                 end;
                                 end;
terdapat kelebihan simbol end, yang menyebabkan kesalahan maka kompilator akan membuangnya.
Ø  Context Sensitive Repair
Perbaikan dilakukan pada kesalahan :
·           Tipe identifier. Diatasi dengan membangkitkan identifier dummy, misalkan :
                       Var A : string;
                       begin
                             A:=0;
                                 end;
·         Tipe konstanta. Diatasi dengan membangkitkan konstanta baru dengan tipe yang tepat.
Ø  Spelling repair
Memperbaiki kesalahan pengetikan pada identifier, misal :
                       WHILLE A = 1 DO
 Identifier yang salah tersebut akan diperbaiki menjadi WHILE
[Continue reading...]

Thursday, March 21, 2013

Dummy Drop Down

- 0 comments
Dummy drop down adalah sebuah trik untuk seolah-olah membuat drop down, dimana kita mempunyai sebuah edit dan saat kita mengetikan kata tertentu maka akan muncul dibawahnya data yang akan kita cari semacam sugestion seperti di search google.

komponen yang dibutuhkan
edit,
dbgrid untuk tampil sugestion pencarian
dan komponen untuk koneksi ke database.

ok sample  kodenya:

procedure TFmengajar.Edit1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
kodeds:=edit1.text;
//jika edit kosong dbgrid jangan di tampilkan
if (edit1.Text='') then
begin
gridkdds.Visible:=false;
exit;
end
else
with query1 do
begin
close;
sql.Clear;
sql.add('select kd_kary,nm_kary from t_karyawan where kd_kary like:kodeds order by kd_kary asc');
query1.ParamByName('kodeds').Value:=kodeds+'%';
query1.Open;
end;

if (key=vk_return) then
begin
edit1.Text:=query1.FieldByName('kd_kary').AsString;
ednama.Text:=query1.FieldByName('nm_kary').AsString;
//sembunyikan dbgrid setelah di tekan tombol enter
gridkdds.Visible:=false;
end
else
//tampilkan dbgrid tepat di bawah edit
begin
gridkdds.Left:=edit1.Left;
gridkdds.Top:=edit1.Top+edit1.Height;
gridkdds.Visible:=true;

end;
end;



[Continue reading...]

Wednesday, March 6, 2013

IDE Delphi dan OOP

- 0 comments
Delphi adalah suatu program berbasis bahasa Pascal yang berjalan dalam lingkungan Windows. Delphi telah memanfaatkan suatu teknik pemrograman yang disebut RAD yang telah membuat pemrograman menjadi lebih mudah. Delphi adalah suatu bahasa pemrograman yang telah memanfaatkan metode pemrograman Object Oriented Programming (OOP).

Lingkungan kerja Borland Delphi dapat dilihat pada gambar di bawah ini.





Fungsi dari elemen-elemen di atas adalah :
- Object Inspector : suatu window yang berguna untuk mengatur suatu object baik properti, events dan method.

- Form : Digunakan sebagai layar/window yang digunakan sebagai lembar kerja kita. Di form-lah semua komponen seperti tombol dan komponen lainnya disimpan.

- Window Unit/Source Code : Window/layar yang berisi perintah-perintah yang akan dieksekusi oleh komputer. Di layar inilah kita mengisikan program-program.

- Component Palette : Layar yang berisikan komponen-komponen yang dipakai dipakai dalam program kita.

Pengantar Object Oriented Programming (OOP)
Perbedaan konsep pemrograman berbasis objek dengan konsep pemrograman biasa adalah sebagai berikut :
1. Dalam pemrograman biasa, suatu benda hanya memiliki properti (ciri) yang membentuk dirinya.
Contoh : Objek manusia memiliki nama, tinggi, berat, warna kulit dan lain-lain.
2. Dalam pemrograman berorientasi objek, suatu benda tidak hanya memiliki properti (ciri) tetapi juga memiliki method dan event.
Contoh: Objek manusia tidak hanya memiliki properti nama, tinggi, berat, warna kulit tetapi juga mempunyai metode / langkah yang dapat dikerjakan dan juga event (suatu kejadian yang bisa terjadi pada objek).
Event dapat berupa : Event ketika lapar, ketika haus, ketika ngantuk dan lain-lain.
Method dapat berupa : Makan, minum, tidur.
Suatu method bisa saja dipanggil ketika suatu event terjadi. Contoh ketika manusia lapar, maka dia akan melakukan method makan. 



[Continue reading...]
 
Copyright © . Only-me - Posts · Comments
Theme Template by BTDesigner · Powered by Blogger