Upload
ariana-tika
View
360
Download
15
Embed Size (px)
Citation preview
LAPORAN PRAKTIKUM
PEMROGRAMAN VISUAL
“DELPHI”
Disusun Oleh:
Nama : Olga Aprilia Saudah
NIM : M3111115
Kelas/Shift : TI C / 1
PROGRAM STUDI DIII TEKNIK INFORMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS SEBELAS MARET
SURAKARTA
2012
1
I. PENDAHULUAN
A. Latar Belakang
Delphi merupakan bahasa pemrograman perkembangan dari
Pascal. Seperti bahasa pemrograman visual lainnya Delphi juga
memiliki IDE (Integrated Development Environment). Lingkungan ini
menyediakan semua tools yang diperlukan untuk mendesain,
mengembangkan, menguji, melakukan proses debugging, dan proses
penyebaran aplikasi (application deployment). Borland Delphi
memiliki fasilitas yang menarik dengan bahasa pemrograman yang
relatif mudah untuk dipelajari, dapat divisualisasikan, dan
dioperasikan. Delphi mendukung berbagai fasilitas yang tidak dimiliki
oleh software pemrograman lain, salah satu yang paling umum
diketahui adalah fasilitas source completion. Source completion
adalah fasilitas yang disediakan Delphi yang berguna untuk
melengkapi kode yang dituliskan pada kode editor secara otomatis.
Karena kelebihannya itu Borland Delphi digunakan pada penulisan ini
untuk dijadikan pembuat program pada praktikum kali ini.
B. Tujuan
1. Membuat program sederhana dengan menggunakan Borland
Delphi 7.0
2. Menggetahui tipe data array dan penggunaannya pada program
Delphi 7.0
3. Menggunakan komponen StringGrid dalam program.
II. DASAR TEORI
Array
Array adalah suatu tipe data terstruktur yang dapat menyimpan banyak data
dengan suatu nama yang sama dan menempati tempat di memori yang
berurutan serta bertipe data sama pula.
2
Array dapat diakses berdasarkan indeksnya. Array umumnya dimulai dari 0
dan ada pula yang dimulai dari angka bukan 0. Pengaksesan larik biasanya
dibuat dengan menggunakan perulangan (looping). array dapat di bedakan
berdasarkn jumlah dimensinya.
Dimensi satu.Array ini biasanya digunkan hanya untuk menyimpan
nilai tunggal, seperti umur karyawan, atau semua tipe data yang
tungga.
Dimensi dua. Array ini biasanya digunkan untuk mengakses tabel
ataupun matriks pada matematika yang memerlukan 2 dimensi.
Multi dimensi. Array ini sangat jarang digunkan, karena sangat jarang
ada program yang memerlukan penapungan data secara multi dimensi
atau lebih dari 3 dimensi. oleh karena itu array multi dimensi jarang
digunakan.
Array sangat membantu kita dalam menyelesaikan atau pembuatan program
terutama pada penanganan kumpulan data atau statistika. contohnya: bila
kita di suruh untuk membuat sebuah program untuk menyimpan nama-nama
pegawai sebuah perusahaan yang nantinya akan di buatkan absensinya. bila
kita tidak membuat dengan array maka kita akan memerlukan nama variable
yang sangat banyak, tetapi bila kita menggunkan array kita hanya
memerlukan 1 variabel saja yang memiliki banyak nomor index.
StringGrid
StringGrid merupakan komponen visual Delphi yang digunakan menyajikan
data dalam bentuk lajur atau Grid. Beberapa properti yang sering digunakan
dalan komponen StringGrid diantaranya:
ColCount
Properti Colcount digunakan untuk menentukan jumlah kolom pada
StringGrid
3
RowCount
Properti RowCount digunakan untuk menentukan jumlah baris pada
StringGrid
FixedCols
Properti FixedCols menyataka jumlah kolom tetap (kolom judul) yang
berada dikolom paling kiri dari tabel. Kolom tersebut tidak akan tergulung
jika pengguna melakukan scrolling secara horispntal.
FixedRows
Properti FixedRows menyatakan jumlah baris tetap (baris judul) yang
berada dikolom paling atas dari tabel. Baris tersebut tidak akan tergulung
jika pengguna melakukan scrolling secara vertikal.
Cells [kolom,baris]
Properti Cells [kolom,baris] menyatakan konten sel pada alamat [kolom,
baris]. Melalui properti Cell dapat diakses data-data pada masing-masing
cell. Tipe datanya berupa string sehingga data-data non string harus
dikonversi dulu sebelum dimasukkan ke dalam properti ini.
4
III. LANGKAH KERJA
- Program Perkalian Matriks
1. Membuka Borland Delphi 7.0
2. Menanamkan beberapa komponen pada Form1, kontrol GroupBox (2
buah), Label (6 buah) Edit (3 buah), Button (3 buah) dan StringGrid (3
buah) pada jendela tool Additional.
3. Mengatur properti-properti dari masing-masing kontrol sesuai dengan
table sebagai berikut:
Komponen Properti Nilai
Form1 Name FrmMatrixKali
Caption MENGALIKAN MATRIKS
BorderStyle bsDialog
GroupBox1 Name GBInput
Caption Input Matriks
GroupBox2 Name GBElemen
Caption Input Elemen Matriks
StringGrid1 Name StringGrid1
FixedRows 0
5
FixedCols 0
StringGrid2 Name StringGrid2
FixedRows 0
FixedCols 0
StringGrid3 Name StringGrid3
FixedRows 0
FixedCols 0
Label1 Name Label1
Caption Matriks A
Label2 Name Label2
Caption Jumlah Baris
Label3 Name Label3
Caption Jumlah Kolom
Label4 Name Label4
Caption Matriks B
Label5 Name Label5
Caption Jumlah Baris
Label6 Name Label6
Caption Jumlah Kolom
Label7 Name Label7
Caption Matriks A
Label8 Name Label8
Caption Matrik A
Label9 Name Label9
Caption Matrik B
Label10 Name Label10
Caption Matriks B
Label11 Name Label11
Caption Matriks C
Label12 Name lblinputa
6
Caption Elemen
Label13 Name lblinputb
Caption Elemen
Edit1 Name EdBarisA
Text (dikosongkan)
Edit2 Name EdKolomA
Text (dikosongkan)
Edit3 Name EdBarisB
Text (dikosongkan)
Edit4 Name EdKolomB
Text (dikosongkan)
Edit5 Name EdInputA
Text (dikosongkan)
Edit6 Name EdInputB
Text (dikosongkan)
Button1 Name BtOK
Caption OK
Button2 Name BtOkA
Caption OK
Button3 Name BtOkB
Caption OK
Button4 Name BtKali
Caption Matriks A x B
4. Mengganti warna pada Form
5. Mendesain Form seperti tampilan dibawah ini:
7
6. Membuka Unit1, kemudian mendeklarasikan variabel dan array pada
Var.
var
FrmMatriksKali: TFrmMatriksKali;
status:boolean;
i,j,k:integer;
data1,data2:array[1..100,1..100] of integer;
hasil:array[1..100,1..100] of integer;
7. Melakukan kode program untuk event on create pada Form.
procedure TFrmMatriksKali.FormCreate(Sender: TObject);
begin
GBElemen.Enabled:=true;
end;
8. Melakukan kode program untuk event on click pada BtOK.
procedure TFrmMatriksKali.btokClick(Sender: TObject);
begin
8
if ((edkoloma.Text)<>(edbarisb.Text)) then
begin
ShowMessage('Ukuran Matriks tidak sesuai');
edkoloma.SetFocus;
end
else
begin
GBElemen.Enabled:=true;
Status:=True;
StringGrid1.RowCount:=strtoint(edbarisa.Text);
StringGrid1.ColCount:=strtoint(edkoloma.Text);
StringGrid2.RowCount:=strtoint(edbarisb.Text);
StringGrid2.ColCount:=strtoint(edkolomb.Text);
StringGrid3.RowCount:=strtoint(edbarisa.Text);
StringGrid3.ColCount:=strtoint(edkolomb.Text);
edbarisa.Enabled:=false;
edkoloma.Enabled:=false;
edbarisb.Enabled:=false;
edkolomb.Enabled:=false;
edinputa.SetFocus;
end;
end;
9. Melakukan kode program event on change pada EdInputA.
procedure TFrmMatriksKali.edinputaChange(Sender: TObject);
begin
Lblinputa.Caption:='['+''+inttostr(i)+','+Inttostr(j)+']';
end;
10. Melakukan kode program event on change pada EdInputB.
procedure TFrmMatriksKali.edinputbChange(Sender: TObject);
begin
Lblinputb.Caption:='['+''+inttostr(i)+','+Inttostr(j)+']';
9
end;
11. Melakukan kode program event on click pada BtOkA.
procedure TFrmMatriksKali.btokaClick(Sender: TObject);
begin
StringGrid1.Cells[i,j]:=edinputa.Text;
GBElemen.Caption:='Input Elemen Matriks A';
if (i<>strtoint(edkoloma.Text)-1) or (j<>strtoint(edbarisa.Text)-1) then
begin
if i<strtoint(edkoloma.Text)-1 then
i:=i+1
else if j<strtoint(edbarisa.Text)-1 then
begin
i:=0;
j:=j+1;
end;
end
else
begin
ShowMessage('Elemen sudah habis. Isi Matrik Berikutnya');
i:=0;
j:=0;
edinputb.SetFocus;
edinputa.Enabled:=false;
btoka.Enabled:=false;
end;
end;
12. Melakukan kode program event on click pada BtOkB.
procedure TFrmMatriksKali.btokbClick(Sender: TObject);
begin
StringGrid2.Cells[i,j]:=edinputb.Text;
10
GBElemen.Caption:='Input Elemen Matriks B';
if (i<>strtoint(edkolomb.Text)-1) or (j<>strtoint(edbarisb.Text)-1) then
begin
if i<strtoint(edkolomb.Text)-1 then
i:=i+1
else if j<strtoint(edbarisb.Text)-1 then
begin
i:=0;
j:=j+1;
end;
end
else
begin
ShowMessage('Elemen sudah habis. Kalikan Matriks');
i:=0;
j:=0;
edinputb.Enabled:=false;
btokb.Enabled:=false;
end;
end;
13. Melakukan kode program event OnClick pada btKali.
procedure TFrmMatriksKali.btkaliClick(Sender: TObject);
var w,x,y:integer;
begin
for y := 0 to StrtoInt(edkoloma.Text)-1 do
begin
for x := 0 to StrtoInt(edkolomb.Text)-1 do
begin
data1[y,x] := StrToInt(StringGrid1.Cells[y,x]);
data2[y,x] := StrToInt(StringGrid2.Cells[y,x]);
end;
11
end;
for w := 0 to StrtoInt(edbarisa.Text)-1 do
begin
for y := 0 to StrtoInt(edkoloma.Text)-1 do
begin
hasil[w,y] := 0;
for x := 0 to strtoint(edkolomb.Text)-1 do
begin
hasil[w,y] := hasil[w,y] + data1[x,w]*data2[y,x];
end;
end;
end;
for y := 0 to StrtoInt(edkoloma.Text)-1 do
begin
for x := 0 to strtoint(edkolomb.Text)-1 do
begin
stringGrid3.Cells[x,y] := IntToStr(hasil[y,x]);
end;
end;
end;
14. Kemudian Save All (Project+Unit) dan menjalankan programnya
dengan menekan F9 (Run).
12
IV. ANALISA
1. Ketika di Run tampilan program seperti dibawah ini:
Hal tersebut terjadi karena didalam unit terdapat script program:
Yang artinya ketika form kali matriks (FrmKaliMatriks) di run, maka
GroupBox Input dan Elemen akan aktif.
2. Kemudian menginputkan matriks 2 x 2, misalnya matrixA= (2 22 2) dan
matrixB=(3 33 3),
Pertama dimulai dengan menginputkan jumlah baris dan kolom baik
matrik A maupun B. Dalam penginputannya antara Kolom matriks A
13
harus sama dengan kolom matrik B, begitu pula pada barisnya. Apabila
beda, maka akan muncul peringatan seperti dibawah ini:
Hal tersebut terjadi karena pada unit terdapat script:
14
Arti script tersebuat adalah ketika BtOK di klik, maka akan muncul sebuah
kondisi yang apabila inputan pada komponen edkoloma tidak sama dengan
inputan pada edbarisb, maka akan muncul sebuah pesan “Ukuran Matriks
Tidak Sesuai”, sesuai dengan script:
begin
if ((edkoloma.Text)<>(edbarisb.Text)) then
begin
ShowMessage('Ukuran Matriks tidak sesuai');
kemudian kursor akan langsung aktif pada edkoloma. Hal tersebut
dikarenakan adanya script: edkoloma.SetFocus;
Namun apabila edkoloma dan edbarisb sama, maka akan masuk ke kondisi
kedua, yang kemudian akan diproses ke script yang lainnya.
Kemudian Enabled pada edbarisa, edkoloma, edbarisb, edkolomb diubah
menjadi False dan edinputa akan aktif.
edbarisa.Enabled:=false;
15
edkoloma.Enabled:=false;
edbarisb.Enabled:=false;
edkolomb.Enabled:=false;
edinputa.SetFocus;
Dibawah ini merupakan tampilan dari program apabila diinputkan dua
buah matriks.
Dalam penginputan elemen berada pada GBElemen, tepatnya pada
edinputa dan edinputb. Terdapat script:
procedure TFrmMatriksKali.btokaClick(Sender: TObject);
begin
StringGrid1.Cells[i,j]:=edinputa.Text;
GBElemen.Caption:='Input Elemen Matriks A';
if (i<>strtoint(edkoloma.Text)-1) or (j<>strtoint(edbarisa.Text)-1) then
begin
if i<strtoint(edkoloma.Text)-1 then
16
i:=i+1
else if j<strtoint(edbarisa.Text)-1 then
begin
i:=0;
j:=j+1;
end;
end
else
begin
ShowMessage('Elemen sudah habis. Isi Matrik Berikutnya');
i:=0;
j:=0;
edinputb.SetFocus;
edinputa.Enabled:=false;
btoka.Enabled:=false;
end;
end;
Maksud dari script tersebut adalah apabila btoka di klik, maka
kolom dan abris pada StringGrid1 berasal dari inputan dari edinputa dan
caption pada GBElemen akan berubah menjadi “Input Elemen Matriks
A”. Kemudian terdapat kondisi pertama yang nilai i tidak sama dengan
inputan pada edkolomb maka dikurangi 1, atau apabila nilai j tidak
sama dengan inputan pada edbarisa dikurangi 1 pula. Selanjutnya masuk
ke kondisi kedua, jika nilai i kurang dari nilai inputan edkoloma mka
dikurangi 1, lalu nilai I akan ditambah 1, namun apabila kondisi tersebut
salah maka akan masuk ke kondisi ketiga dimana nilai j apabila
besarnya kurang dari nilai inputan, edbaris dikurangi1, maka nilai i
menjadi 0 dan nilai j ditambah 1. Dan jika kondisi pertama tidak
terpenuhi (kondisi kedua dan ketiga tidak akan dieksekusi), maka akan
muncul sebuah pesan yang isinya “Elemen sudah habis. Kalikan
17
Matriks”. Lalu nilai i dan j menjadi 0, kemudian enabled pada edinputa
dan btoka diubah menjadi false (non-aktif) dan yang aktif pada edinputb.
Kemudian masuk keprosedur selanjutnya, terdapat prosedur:
Penjelasan prosedur diatas hampir sama dengan prosedur sebelumnya,
letak perbedaannya pada komponen yang berperan, misalnya pada
prosedur sebelumnya edkoloma, kali ini edkolomb. Pada dasarnya sama,
karena fungsi dari kedua script diatas adalah untuk penginputan anggota
matriks.
Kemudian pada edinput (baik edinputa maupun edinputb) terdapat event
on change, yang didalamnya terdapat script:
18
Maksud dari kedua prosedur diatas adalah, jika nilai pada edinputa(pada
prosedur eninputa) atau edinputb(pada prosedur eninputb), maka caption
pada Lbinputa / Lbinputb dikonversi dari Integer ke String kurung buka
siku “[“ kemudian dengan nilai i, kemudian string koma “,” kemudian
nilai j dan kurung tutup siku “]”
3. Kemudian BtnKali ditekan lalu tampilan program akan seperti:
Hal tersebut terjadi karena pada BtKali terdapat event on click yang
didalamnya memuat script:
19
Maksud dari script diatas adalah ketika BtKali di klik, maka komponen
StringGrid3 akan ditampilkan, begitu pula label11 juga akan
ditampilkan. Lalu masuk ke perulangan for to do untuk nilai y=0 sampai
besar inputan pada edkoloma dikurangi 1 lakukan perulangan kedua
untuk x=0 sampai nilai inputan pada edkolomb dikurangi1, nilai data1
[y,x] adalah konversi tipe data String ke Integer dari nilai StringGrid1
[y,x] dan nilai data2 adalah hasil konversi tipe data String ke Integer dari
nilai pada StringGrind[y,x].
Kemudian terdapat perulangan kembali for to do yaitu untuk nilai w=0
sampai dengan nilai inputan edbarisa dikurangi 1, lakukan perulangan
lagi untuk nilai y=0 sampai nilai pada inputan edkoloma dikurangi1,
maka nilai hasil menjadi 0. Setelah itu masuk kedalam perulangan ketiga
untuk nilai x=0 sampai nilai inputan edkolomb dikurangi 1, terdapat
perhitungan untuk nilai hasil, yaitu nilai hasil untuk kolom nilai w dan
20
baris y ditambah nilai data1 untuk kolom x dan baris w dikali nilai data2
untuk kolom y dan baris x.
Kemudian terdapat perulangan lagi yaitu untuk y=0 sampai inputan pada
edkoloma dikurangi1, akan masuk ke perulangan kedua untuk nilai x=0
sampai nilai inputan edkolombdikurangi 1, maka akan di tampilkan
untuk nilai pada StringGrid3[y,x] yang dikonversi dari Integer ke String.
*Catatan : x = baris, y = kolom
21
V. KESIMPULAN
Dari praktikum kali ini praktikan dapat menarik kesimpulan:
1. Array merupakan sebuah tipe data yang berguna untuk menyimpan
sekelompok data yang sejenis. Pada realitanya bentuk array ada 2, yaitu:
a. Array Satu Dimensi
Bentuk umum penulisan Array satu dimensi adalah:
Nama_Array : Array[indeks] of Type Array
b. Array Dua Dimensi
Array berdimensi dua disebut dengan array multi dimensi. Bentuk
umum penulisan Array multi
dimensi adalah:
Nama_Array : Array[indeks_Baris,Indeks_Kolom] of Type Array
2. String Grid digunakan untuk menampilkan data array satu dimensi atau
dua (multi) dimensi.
22
VI. DAFTAR PUSTAKA
Pranata, Antony.2000.Pemrograman Borland Delphi.Yogyakarta:ANDI OFFSET
_____________.2003.Pemrograman Delphi 7.0.Yogyakarta:ANDI OFFSET
http://lecturer.d3ti.mipa.uns.ac.id/tutut/files/2012/02/Modul-VIII.pdf
(diunduh 29 April 2012)
http://alpro.awardspace.com/array.html
http://fairuzelsaid.wordpress.com/2011/12/22/menggunakan-stringgrid-pada-
delphi/
(diunduh 5 Mei 2012)
23