Professional Documents
Culture Documents
1.1. Tujuan
Nilai [1..5] inilah yang dimaksud dengan index subrange integer. Index dari
larik diatas dapat dideklarasikan terlebih dahulu di bagian deklarasi tipe :
Type
Jangkauan = 1..5 ; {tipe subrange integer}
Var
NilaiHuruf : array [Jangkauan] of char ;
Begin
end.
Karena nilai 0 sampai 255 merupakan nilai subrange byte, maka deklarasi ini
dapat ditulis :
Var
X : array [byte] of real ;
Var
Jumlah : array [(Jan, Peb, Mar)] of integer ;
Begin
Jumlah[Jan] : = 125 ;
Jumlah{Peb] : = 75 ;
Jumlah[Mar] : = 18 ;
Writeln ( Jumlah untuk bulan maret = , Jumlah{Mar});
End.
end.
BAB II
LANGKAH KERJA
GroupBox1
GroupBox2
StringGrid1
StringGrid2
Properti
Nilai
Name
FrmArray_Matrik
Caption
Menjumlahkan Matriks
Name
GroupBox1
Caption
Name
GroupBox2
Caption
Name
StringGrid1
FixedRow
FixedColl
Name
StringGrid2
StringGrid3
Label1
Label2
Label3
Label4
Label5
Label6
Edit1
Edit2
Edit3
Button1
Button2
Button3
FixedRow
FixedColl
Name
FixedRow
FixedColl
Name
Caption
Name
Caption
Name
Caption
Name
Caption
Name
Caption
Name
Caption
Name
Name
Name
Name
Caption
Name
Caption
Name
Caption
StringGrid3
0
0
Label1
Jumlah Baris
Label2
Jumlah Kolom
LblInput
Elemen
Label4
MATRIK A
Label5
MATRIK B
Label6
MATRIK C
EdBaris
EdKolom
EdMat
BtJumlah
OK
BTJumlah
Matrik A+B
BTBtInput
OK
if status=True then
begin
StringGrid1.Cells[i,j]:=EdMat.Text;
groupbox2.Caption:=Input Elemen Matriks A
end
else if status=false then
begin
StringGrid2.Cells[i,j]:=EdMat.Text;
groupbox2.Caption:=Input Elemen Matriks B;
end;
If(i<>strtoint(Edkolom.text)-1)
or
(j<>strtoint(Edbaris.Text)-
1)then
begin
if i<strtoint(Edkolom.Text)-1 then
i:=i+1
else if j<strtoint(Edbaris.Text)-1 then
begin
i:=0;
j:=j+1;
end;
end
else
begin
if
status=true then
ShowMessage(Elemen sudah habis isi Matrik berikutnya)
else
begin
ShowMessage(Elemen sudah habis isi jumlahkan Matriks A dan
B);
GroupBox2.enabled:=false;
end;
i:=0;
j:=0;
Status:=false;
end;
10. Setelah melakukan koding di atas, kini kita lakukan kode program untuk
event OnClick pada BTTambah.
procedure TFrmArray_Matrik.BtTambahclick(Sender:Tobject);
var EmaA, EmatB:integer;
begin
for i:=0 to strtoint(Edbaris.Text)-1 do
for j:=0 to strtoint(Edkolom.text)-1 do
begin
EMaA:=StrToint(StringGrid1.Cells[i,j]);
EMatB:=Strtoint(StringGrid2.Cells[i,j]);
StringGrid3.Celss[i,j]:=IntTostr(EMaA+EMatB);
end;
end;
TUGAS PRAKTIKUM
Tombol Urutkan akan mengurutkan angka yang ada di dalam list box
sesuai dengan opsi urut yang dipilih.
BAB III
PEMBAHASAN
pertama
adalah
sebuah
program
yang
bertujuan
untuk
Messages,
SysUtils,
Variants,
Classes,
Graphics,
Controls,
10
Forms,
Dialogs, Grids, StdCtrls;
type
TFrnArray_Matrik = class(TForm)
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
Label1: TLabel;
Label2: TLabel;
EdBaris: TEdit;
EdKolom: TEdit;
lBINPUT: TLabel;
EdMat: TEdit;
BTInput: TButton;
BtJumlah: TButton;
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
StringGrid3: TStringGrid;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
BtTambah: TButton;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure BtTAMBAHClick(Sender: TObject);
procedure EdMatChange(Sender: TObject);
procedure BTInputClick(Sender: TObject);
procedure BtJumlahClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
i,j,k,l:integer;
status:boolean;
FrnArray_Matrik: TFrnArray_Matrik;
implementation
{$R *.dfm}
procedure TFrnArray_Matrik.FormCreate(Sender: TObject);
begin
GroupBox2.Enabled:=false;
end;
procedure TFrnArray_Matrik.BtJumlahClick(Sender: TObject);
begin
Status:=true;
StringGrid1.RowCount:=strtoint(EdBaris.Text);
StringGrid1.ColCount:=strtoint(EdKolom.Text);
StringGrid2.RowCount:=strtoint(EdBaris.Text);
StringGrid2.ColCount:=strtoint(EdKolom.Text);
StringGrid3.RowCount:=strtoint(EdBaris.Text);
StringGrid3.ColCount:=strtoint(EdKolom.Text);
EdBaris.Enabled:=false;
EdKolom.Enabled:=false;
GroupBox2.Enabled:=true;
end;
procedure TFrnArray_Matrik.BtTAMBAHClick(Sender: TObject);
Var EMaA,EMab:integer;
11
begin
for i:=0 to strtoint(EdBaris.text)-1 do
for j:=0 to strtoint(EdKolom.text)-1 do
begin
EMaA:=Strtoint(StringGrid1.cells[i,j]);
EMaB:=Strtoint(StringGrid2.cells[i,j]);
StringGrid3.cells[i,j]:=Inttostr(EMaA+EMAB);
end
end;
12
Penjelasan Koding :
var
i,j:integer;
status:boolean;
FrnArray_Matrik: TFrnArray_Matrik;
Blok statement di atas merupakan blok deklarasi variabel beserta tipe data
yang digunakan. i dan j adalah variabel yang akan digunakan sebagai statement
perulangan. Sedangkan boolean merupakan tipe data logika,yang berisi dua
kemungkinan nilai:TRUE(benar) atau FALSE(salah).
procedure TFrnArray_Matrik.FormCreate
procedure TFrnArray_Matrik.FormCreate(Sender: TObject);
begin
GroupBox2.Enabled:=false;
end;
Prosedur ini difungsikan pada event FormCreate, dimana ketika prosedur ini
berjalan maka komponen dalam GroupBox2 (group elemen matrik) dinonaktifkan dan tidak dapat diberikan inputan.
procedure TFrnArray_Matrik.BtJumlahClick
procedure TFrnArray_Matrik.BtJumlahClick(Sender: TObject);
begin
Status:=true;
StringGrid1.RowCount:=strtoint(EdBaris.Text);
StringGrid1.ColCount:=strtoint(EdKolom.Text);
StringGrid2.RowCount:=strtoint(EdBaris.Text);
StringGrid2.ColCount:=strtoint(EdKolom.Text);
StringGrid3.RowCount:=strtoint(EdBaris.Text);
StringGrid3.ColCount:=strtoint(EdKolom.Text);
EdBaris.Enabled:=false;
EdKolom.Enabled:=false;
GroupBox2.Enabled:=true;
end;
13
Blok ini berisi baris statement yang memiliki tujuan yang sama yaitu
membaca inputan dari EdBaris (jumlah baris matrik) dan EdKolom (jumlah
kolom matrik).
StringGrid1.RowCount:=strtoint(EdBaris.Text);
14
StringGrid1.Cells[i,j]:=EdMat.Text;
groupbox2.Caption:='Input Elemen Matriks A'
end
else if status=false then
begin
StringGrid2.Cells[i,j]:=EdMat.Text;
groupbox2.Caption:='Input Elemen Matriks B'
end;
if(i<>strtoint(EdKolom.Text)-1) or (j<>strtoint(EdBaris.Text)-1) then
begin
if i< strtoint(EdKolom.Text)-1 then
i:=i+1
else if j< strtoint(EdBaris.Text)-1 then
begin
i:=0;
j:=j+1 ;
end;
end
else
begin
if status = true then
ShowMessage('Elemen sudah habis, isi matrik berikutnya!')
else
begin
ShowMessage('Elemen sudah habis! jumlahkan Matriks A dan B');
GroupBox2.Enabled:=false;
end;
i:=0;
j:=0;
status:=false;
end;
end;
Blok
Jika groupBox2 dapat diakses, maka caption pada GroupBox2 akan muncul
pesan Input Elemen Matriks A. Setelah seluruh elemen matriks A selesai
diinputkan, status akan bernilai false dan caption GroupBox2 akan memunculkan
pesan Input Elemen Matriks B.
StringGrid1.Cells[i,j]:=EdMat.Text;
15
16
EMaA:=Strtoint(StringGrid1.cells[i,j]);
EMaB:=Strtoint(StringGrid2.cells[i,j]);
StringGrid3.cells[i,j]:=Inttostr(EMaA+EMAB);
OUTPUT :
Adapun Output yang dihasilkan setelah mengikuti langkah kerja pada Bab 2,
adalah sebagai berikut :
17
Classes,
Graphics,
Controls,
type
18
TForm1 = class(TForm)
Btnkel: TButton;
matrix1: TStringGrid;
matrix2: TStringGrid;
matrix3: TStringGrid;
LbmatA: TLabel;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
EdBaris: TEdit;
Edkolom: TEdit;
Btnok: TButton;
Btnpro: TButton;
GroupBox2: TGroupBox;
LblInput: TLabel;
EdMat: TEdit;
BTInput: TButton;
Label4: TLabel;
Label3: TLabel;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BtnkelClick(Sender: TObject);
procedure BtnokClick(Sender: TObject);
procedure BtnproClick(Sender: TObject);
procedure EdMatChange(Sender: TObject);
procedure BTInputClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
mtr1,mtr2,mtr3:array [0..100,0..100] of integer;
d,e,i,j,k :integer;
Status: Boolean;
implementation
{$R *.dfm}
{ mat1:array[1..10,1..10]of integer;
mat2:array[1..10,1..10]of integer;
}
procedure TForm1.BtnokClick(Sender: TObject);
begin
Status:=True;
matrix1.RowCount:=strtoint(EdBaris.Text);
matrix1.ColCount:=strtoint(EdKolom.Text);
matrix2.RowCount:=strtoint(EdBaris.Text);
matrix2.ColCount:=strtoint(EdKolom.Text);
matrix3.RowCount:=strtoint(EdBaris.Text);
matrix3.ColCount:=strtoint(EdKolom.Text);
EdBaris.Enabled:=false;
EdKolom.Enabled:=false;
GroupBox1.Enabled:=true;
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
for d:=0 to matrix1.rowCount-1 do
begin
for e:=0 to matrix1.ColCount-1 do
begin
19
try
mtr1[d,e]:=strtoint(matrix1.Cells[e,d]);
except on econverterror do
begin
messagedlg('masukkan angka dengan benar',mtError,[mbok],0);
bersih;
exit;
end;
end;
end;
end;
for d:=0 to matrix2.rowCount-1 do
begin
for e:=0 to matrix2.ColCount-1 do
begin
try
mtr2[d,e]:=strtoint(matrix2.Cells[e,d]);
except on econverterror do
begin
messagedlg('masukkan angka dengan benar',mtError,[mbok],0);
bersih;
exit;
end;
end;
end;
end;
for i:=0 to matrix1.RowCount-1 do
begin
for j:=0 to matrix2.ColCount-1 do
begin
for k:=0 to matrix1.ColCount-1 do
begin
mtr3[i,j]:=mtr3[i,j]+mtr1[i,k]*mtr2[k,j];
end;
end;
end;
for d:=0 to matrix1.rowCount-1 do
begin
for e:=0 to matrix2.ColCount-1 do
begin
form1.matrix3.Cells[e,d]:=inttostr(mtr3[d,e]);
end;
end;
end;
procedure hitung;
var br1,kl1,br2,kl2:integer;
begin
if (form1.Edbaris.Text='') or (form1.Edkolom.Text='') then
messagedlg('Inputan
Tidak
Lengkap
/
Kosong',mtError,[mbok],0)
else
begin
try
br1:=strtoint(form1.Edbaris.Text);
kl1:=strtoint(form1.Edkolom.Text);
Masih
except on econverterror do
begin
messagedlg('masukkan angka dengan benar',mtError,[mbok],0);
20
end;
end;
begin
form1.matrix1.RowCount:=br1;
form1.matrix1.ColCount:=kl1;
form1.matrix2.RowCount:=br2;
form1.matrix2.ColCount:=kl2;
form1.matrix3.RowCount:=br1;
form1.matrix3.ColCount:=kl2;
end;
end;
end;
procedure TForm1.BtnproClick(Sender: TObject);
begin
for d:=0 to matrix1.rowCount-1 do
begin
for e:=0 to matrix1.ColCount-1 do
begin
try
mtr1[d,e]:=strtoint(matrix1.Cells[e,d]);
except on econverterror do
begin
messagedlg('Masukkan ANGKA ',mtError,[mbok],0);
bersih;
exit;
end;
end;
end;
end;
for d:=0 to matrix2.rowCount-1 do
begin
for e:=0 to matrix2.ColCount-1 do
begin
try
mtr2[d,e]:=strtoint(matrix2.Cells[e,d]);
except on econverterror do
begin
messagedlg('Masukan ANGKA',mtError,[mbok],0);
bersih;
exit;
end;
end;
end;
end;
for i:=0 to matrix1.RowCount-1 do
begin
for j:=0 to matrix2.ColCount-1 do
begin
for k:=0 to matrix1.ColCount-1 do
begin
mtr3[i,j]:=mtr3[i,j]+mtr1[i,k]*mtr2[k,j];
end;
end;
end;
for d:=0 to matrix1.rowCount-1 do
begin
for e:=0 to matrix2.ColCount-1 do
begin
form1.matrix3.Cells[e,d]:=inttostr(mtr3[d,e]);
end;
end;
end;
21
Penjelasan Koding :
Var
mtr1,mtr2,mtr3:array [0..100,0..100] of integer;
d,e,i,j,k :integer;
Status: Boolean;
Blok statement di atas merupakan blok deklarasi variabel beserta tipe data
yang digunakan. d, e, i, j, k adalah variabel yang akan digunakan dalam beberapa
prosedur di dalam program. mtr1, mtr2, mtr3 memiliki tipe data berupa tabel
larik bernilai [i,j] yaitu 1 hingga 100. Sedangkan boolean merupakan tipe data
logika,yang berisi dua kemungkinan nilai:TRUE(benar) atau FALSE(salah).
22
procedure TFrnArray_Matrik.FormCreate
procedure TFrnArray_Matrik.FormCreate(Sender: TObject);
begin
GroupBox2.Enabled:=false;
end;
Prosedur ini difungsikan pada event FormCreate, dimana ketika prosedur ini
berjalan maka komponen dalam GroupBox2 (group elemen matrik) dinonaktifkan dan tidak dapat diberikan inputan.
procedure TForm1.BtnokClick
procedure TForm1.BtnokClick(Sender: TObject);
begin
Status:=True;
matrix1.RowCount:=strtoint(EdBaris.Text);
matrix1.ColCount:=strtoint(EdKolom.Text);
matrix2.RowCount:=strtoint(EdBaris.Text);
matrix2.ColCount:=strtoint(EdKolom.Text);
matrix3.RowCount:=strtoint(EdBaris.Text);
matrix3.ColCount:=strtoint(EdKolom.Text);
EdBaris.Enabled:=false;
EdKolom.Enabled:=false;
GroupBox1.Enabled:=true;
end;
23
24
Blok
Jika groupBox2 dapat diakses, maka caption pada GroupBox2 akan muncul
pesan Input Elemen Matriks A. Setelah seluruh elemen matriks A selesai
diinputkan, status akan bernilai false dan caption GroupBox2 akan memunculkan
pesan Input Elemen Matriks B.
StringGrid1.Cells[i,j]:=EdMat.Text;
25
26
SysUtils,
Variants,
Classes,
Graphics,
Controls,
type
TForm1 = class(TForm)
EdBanyak: TEdit;
EdInput: TEdit;
lbbanyak: TLabel;
LblInput: TLabel;
BtnInput: TButton;
GroupBox1: TGroupBox;
RBAscending: TRadioButton;
RBDescending: TRadioButton;
LBLoop1: TListBox;
LBLoop2: TListBox;
BtnUrut: TButton;
LBloop3: TListBox;
btexit: TButton;
Lbascending: TLabel;
Label3Lbdecending: TLabel;
procedure BtnInputClick(Sender: TObject);
procedure BtnUrutClick(Sender: TObject);
procedure btexitClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
Data : array of integer;
end;
var
Form1: TForm1;
i, j, k, l, n, nilai : integer;
implementation
{$R *.dfm}
procedure QuickSortAsc(var A: array of Integer; iLo, iHi: Integer) ;
var
Lo, Hi, Pivot, T: Integer;
begin
Lo := iLo;
Hi := iHi;
Pivot := A[(Lo + Hi) div 2];
repeat
while A[Lo] < Pivot do Inc(Lo) ;
28
29
end;
OUTPUT :
Adapun Output yang dihasilkan setelah mengikuti langkah kerja pada Bab 2,
adalah sebagai berikut :
30
BAB III
KESIMPULAN
31
Array adalah kumpulan data yang bertipe sama. Elemen array dapat diakses
dengan menggunakan indeks yang berada pada kurung kotak ([]). Delphi
menyediakan beberapa tipe array, yaitu static array, dynamic array serta open
array.
Bentuk umum definisi array adalah :
<NamaArray>=array [Tipe Indeks] of <Tipe Dasar>
<NamaArray>=array [Tipe Indeks,] of <Tipe Dasar>
<NamaArray>=array of <Tipe Dasar>
Array dinamik adalah array yang tipe indeksnya integer dan ukurannya
dapat berubah selama program berjalan. Batas minimum array dinamik adalah 0.
Batas maksimum array dinamik dapat diatur dengan SetLength. Contoh :
Type
TArrayDinamik = array of integer;
Var
D1 : TArrayDinamik
Begin
SetLength(D1,6);
End;
Ascending adalah pengurutan yang dilakukan dari nilai terkecil hingga nilai
terbesar, sebaliknya Descending adalah pengurutan dari nilai terbesar ke nilai
terkecil
32
BAB V
DAFTAR PUSTAKA
Modul pratikum Algoritama dan Pemrograman III. Universitas Palangka Raya. Fakultas
Teknik. 2013. Jurusan Teknik Informatika.
33
BAB VI
LAMPIRAN
Input Program Pertama
34
35
36
37
38
39