Jumat, 05 Agustus 2011

Penanganan Kesalahan


CARA PENANGANAN KESALAHAN

Kesalahan Program bisa merupakan :
  1. Kesalahan Leksikal : THEN ditulis TEN
  2. Kesalahan Sintaks : A:=X+(B*(C+D)       {jumlah kurungnya kurang}
  3. Kesalahan Semantik :
  Tipe data yang salah.
                        Contoh :          Var Siswa : Integer
                                                Siswa := 'Yanuar'         {tipe string}
  Variabel belum didefinisikan.
                        Contoh :          B := B + 1       {B belum didefinisikan}

Langkah-langkah Penanganan Kesalahan adalah sebagai berikut :
l  Mendeteksi Kesalahan
l  Melaporkan Kesalahan
l  Tindak lanjut pemulihan/perbaikan

sebuah kompilator yang menemukan kesalahan akan melakukan pelaporan kesalahan, yang biasanya meliputi :
l  Kode kesalahan
l  Pesan kesalahan dalam bahasa natural
l  Nama dan atribut identifier
l  Tipe-tipe yang terkait bila type checking

Contoh : Error Massage: Error 162 Jumlah := unknown identifier
artinya :
è  kode kesalahan = 162
è  pesan kesalahan = unknown identifier
è  nama identifier = Jumlah

Adanya pesan kesalahan tersebut akan memudahkan pemrogram dalam mencari dan mengoreksi sumber dari kesalahan.

REAKSI KOMPILATOR PADA KESALAHAN

Terdapat beberapa tingkatan reaksi yang dilakukan oleh kompilator saat menemukan kesalahan, yaitu :
  1. Reaksi-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.
  1. 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.
  2. Reaksi-reaksi yang dapat diterima:
  Reaksi yang sudah dapat dilakukan, yaitu kompilator melaporkan error, dan selanjutnya melakukan :
      Recovery/pemulihan, lalu melanjutkan mencari error 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.

ERROR RECOVERY

Pemulihan kesalahan bertujuan mengembalikan kondisi parser kekondisi stabil (supaya bisa melanjutkan proses parsing keposisi selanjutnya). Strategi untuk melakukan error recovery sebagai berikut:
  1. Mekanisme Ad Hoc. Recovery yang dilakukan tergantung dari pembuat kompilator sendiri/spesifik dan tidak terikat pada suatu aturan tertentu. Cara ini bisa disebut juga sebagai special purpose error recovery.
  2. Syntax directed recovery. Melakukan recovery berdasarkan syntax. Contoh :
            Begin
          A:=A+1
          B:=B+1;
          C:=C+1
     end;
kompilator akan mengenali sebagai (dalam notasi BNF):
            begin<statement>?<statement>;<statement>end;
'?' akan dikenali sebagai ';'
  1. Secondary Error Recovery berguna untuk melokalisir error, dengan cara sebagai berikut:
  Panic Mode. Maju terus dan mengabaikan teks sampai bertemu delimiter (';'). contoh,
                              IF A:=1
                              Kondisi := true;
Pada teks diatas tidak terdapat instuksi THEN, kompilator akan maju terus/skip sampai bertemu titik koma.
  Unit Deletion. Menghapus keseluruhan suatu unit sintaktik (misal: <blok>, <exp>, <statement> ). Efeknya mirip dengan panic mode tetapi unit deletion memelihara kebenaran sintaksis dari source program dan mempermudah untuk melakukan error repairing lebih lanjut.
  1. Context Sensitive Recovery. Berkaitan dengan semantik, misal bila terdapat variabel yang belum dideklarasikan (Undefined Variable) maka diasumsikan tipenya berdasarkan kemunculannya.        Contoh :
                              B:= 'nama'
sementara diawal program variabel B belum dideklarasikan, maka  berdasarkan kemunculannya diasumsikan variabel B bertipe string.

ERROR REPAIRING

Perbaikan kesalahan bertujuan memodifikasi source program dari kesalahan dan membuatnya valid sehingga memungkinkan kompilator untuk melakukan translasi program yang mana akan dialirkan ketahapan selanjutnya pada proses kompilasi. Mekanismenya sebagai berikut :
  1. Mekanisme Ad Hoc. Tergantung dari pembuat kompilator sendiri/spesifik.
  2. Syntax Directed Repar. Menyisipkan simbol terminal yang dianggap hilang atau membuang terminal penyebab kesalahan. Contoh :algoritma berikut kurang instruksi DO
                        WHILE A < 1
            I:=I+1;
Kompilator akan menyisipkan DO
contoh lain :
                        Procedure Increment;
          begin
            x:=x+1;
          end;
          end;
terdapat kelebihan simbol end, yang menyebabkan kesalahan maka kompilator akan membuangnya.
  1. Context Sensitive Repair. Perbaikan dilakukan pada kesalahan berikut.

  Tipe Identifier. Diatasi dengan membangkitkan identifier dummy, contoh:
                              Var A:string;
            begin
              A:=0;
            end;
kompilator akan memperbaiki kesalahan dengan membangkitkan identifier baru, misal B yang bertipe integer.
  Tipe  Konstanta diatasi dengan membangkitkan konstanta baru dengan tipe yang tepat.
  1. Spelling Repair. Memperbaiki kesalahan pengetikan pada identifier, misal:
                        WHILLE A=1 DO
identifier yang salah tersebut akan diperbaiki menjadi WHILE.

Rabu, 03 Agustus 2011

Visual Basic Teori


Ø  Prosedur adalah sebuah rutin program yang mampu menerima berbagai nilai atau data namun tidak ada nilai yang dikembalikan.
Ø  Fungsi adalah sebuah rutin program yang mampu menerima berbagai nilai atau data dan memberikan suatu hasil tertentu
Ø  Procedure digunakan untuk memadatkan tugas-tugas berulang ataupun proses yang digunakan bersama, seperti perhitungan yang sering dilakukan, text dan manipulasi kontrol, serta operasi database
Ø  penulisan (syntax) prosedur :
Ø  [Public | Private] Sub <nama_sub> ([<argumen>])
 Pernyataan-pernyataan
End Sub
Ø  penulisan (syntax) fungsi :
Ø  [Public | Private] Function <nama_function> ([<argumen>]) As <tipe_data>
 Pernyataan-pernyataan
End Function
Ø  Pemanggilan Prosedur
Call <nama_sub>([<argumen>])
Ø  Pemanggilan  Fungsi
[Var]=[NamaFungsi][(Input1,Input2…)]

Ø  Database adalah kumpulan beberapa data yang saling berhubungan berdasarkan kode-kode tertentu sehingga membentuk sebuah sistem.
Ø  Secara hirarki database bisa digambarkan sebagai berikut :

 
Character sebagai satuan data terkecil dikumpulkan menjadi field (kolom),kumpulan field membentuk sebuah record (baris), beberapa record disimpan dalam file (tabel), dan kumpulan file akan membentuk sebuah database
Ø  Tipe Field
§  Long
   Digunakan untuk menampung data numerik untuk bilangan bulat.
    • Currency
   Digunakan untuk menampung data numerik. Kelebihannya adalah currency tidak akan melakukan pembulatan bilangan pada operasi matematik.
    • Single
   Digunakan untuk menampung data numerik untuk bilangan pecahan.
    • Double
                Fungsinya sama dengan Single.
    • Date/Time
                Digunakan untuk menampung data tanggal atau jam.
    • Text
                Digunakan untuk menyimpan data karakter, dengan daya tampung sebesar 255 karakter.
    • Memo
    • Sama dengan text, tetapi dapat menampung sampai dengan 64.000 karakter.

Ø  Koneksi kontrol Data dengan Database
§  Kontrol data merupakan interface (antar muka) yang menghubungkan sebuah form dengan file data
    Di dalam kontrol data memiliki beberapa    
     properti yaitu :
    • Connect
                Hubungan file data, bisa bersumber dari Access, Dbase, Excel, Foxpro, Lotus,Paradox, dan file Text.
    •  Database Name
                Menyatakan nama file database (.mdb) yang digunakan.
    • Record Source
                Diisi tabel yang digunakan.
    • EOF Action
                Pengecekan pergerakan kursor. Jika kursor sampai pada akhir file, maka terdapat 3 pilihan properti ; MoveLast (record terakhir), EOF (akhir file), AddNew (menambah record baru).
    • Record Set Type
                Tipe record ; 0 – Tabel, 1 – Dynaset, 2 – Snapshot.

  • Record set adalah status record yang menunjukkan tindakan apa yang akan dilakukan terhadap record tersebut dengan beberapa metode antara lain :
Metode
Keterangan
AddNew
Menambah record baru
MoveFirst
Pindah ke record pertama
MoveNext
Pindah 1 record ke depan
MovePrevious
Pindah 1 record ke belakang
MoveLast
Pindah ke record terakhir
Delete
Menghapus record

Ø  Menampilkan Data Record pada DBGrid
§  DBGrid merupakan kontrol yang digunakan untuk menampilkan data record dari koneksi kontrol data.
§  Klik menu project, pilih component (Ctrl+T) untuk menampilkan DBGrid
§  Pada jendela komponen aktifkan Microsoft Data Bound Grid Control 5.0 (SP3)




Ø  Kontrol DBGrid memiliki beberapa properti penting
Properti
Keterangan
AllowAddNew
Jika true maka pengguna dapat menambah record baru pada DBGrid. Jika false, sebaliknya
AllowArrows
Jika true maka pengguna memindah record pada DBGrid dengan tombol anak panah keyboard. Jika false, sebaliknya
AllowDelete
Menentukan apakah pengguna bisa menghapus atau tidak
AllowUpdate
Menentukan apakah pengguna  dapat mengubah data record pada DBGrid
DataSource
Untuk dihubungkan dengan  kontrol data sehingga DBGrid dapat menampilkan isi data record

Ø  Berpindah Record dengan Kode Progaram

MoveFirst à berpindah ke record pertama
NamaKontrolData.Recordset.MoveFirst
Ø  Menambah, Menghapus, dan Mengubah Record dengan Kode Program
AddNew à menambah record
NamaKontrolData.Recordset.AddNew

Ø  Pencarian data dengan metode Find
FindFirst mencari data dimulai dari record pertama
NamaKontrolData.Recordset.FindFirst “Kreteria”

Ø  Pencarian data berdasarkan tipe data jika kriteria ditempatkan pada kontrol TextBox
§  Tipe data teks
Ø  NamaKontrolData.Recordset.FindFirst “NamaField=‘”+ Txtcoba +”’”
§  Tipe data angka
NamaKontrolData.Recordset.FindFirst “NamaField=” + Txtcoba
    • Tipe data tanggal
  • NamaKontrolData.Recordset.FindFirst “NamaField=#”+ Txtcoba +”#”

Aturan penulisan untuk metode seek
NamaKontrolData.Recordset.Index = “NamaIndex”
NamaKontrolData.Recordset.Seek “Operator”, criteria

Ø  Penyaringan Record (Filter)
§  Filter adalah cara untuk mengelompokkan data yang sama bedasarkan kriteria.
§  Bentuk Penulisan penyeringan
Ø  NamaKontrolData.RecordResource =“Select* From NamaTabel In ‘LokasiTabel’ Where Namafield =‘” & Kriteria & ”’” NamaKontrolData.Refresh
§  Membatalkan penyeringan
NamaKontrolData.RecordResource =“Select* From NamaTabel”

Ø  Mencetak Data ke Form
§  Menggunakan Metode Print untuk mencetak ke Form
Ø  NamaForm.Print Tab(Nilai)<data yang akan dicetak>
§  Untuk mencetak Form aktif ke printer
Ø  NamaForm.PrintForm