Anda di halaman 1dari 36

LAPORAN HASIL PRAKTIKUM

Algoritma dan Pemograman III

Nama

: Yopi Lala

NIM

: DBC 113 016

Modul

: V (Lima)

JURUSAN TEKNIK INFORMATIKA


FAKULTAS TEKNIK
UNIVERSITAS PALANGKA RAYA
2014

BAB I
Tujuan dan Landasan Teori
A. Tujuan
Mahasiswa lebih mahir menggunakan perintah dasar pemrograman Delphi.
B. Landasan Teori
Array itu sebuah tipe data yang dapat diisi koleksi beberapa data dan mempunyai
index untuk masing-masing Elemen array dapat diakses dengan menggunakan indeks
yang berada pada kurung kotak([ ]).
Larik atau array juga bias diartikan sebagai kumpulan dari nilai-nilai data bertipe
sama dalam urutan tertentu yang menggunakan sebuah nama yang sama. Nilai-nilai
data di suatu larik disebut dengan elemen-elemen larik. Letak urutan dari suatu
elemen larik ditunjukkan oleh suatu subscript atau suatu indeks larik.
Larik dapat berdimensi satu, dua, tiga atau lebih. Larik dimensi satu (onedimensional array) mewakili bentuk suatu vektor. Larik dimensi dua (twodimensional array) mewakili bentuk dari suatu matrik atau tabel. Larik dimensi tiga
(three-dimensional array) mewakili bentuk suatu ruang.
Data Delphi menyediakan beberapa tipe data array, yaitu static array, dynamic
array, serta open array.
1.Static Array
Statis array adalah tipe data array yang sudah tetap dan tidak bisa di rubahrubah ukurannya, array tipe statis bisa berupa satu dimensi atau multidimensi.
2.DynamicArray
Array dinamis tidak mempunyai permintaan

penyimpanan di dalam

memori(preallocated storage), ketika didefinisikan hanya berupa pointer.array


dinamis harus

di set terlebih dahulu sebelum dapat digunakan, seperti :

SetLength(dynArray, 5);

3.Open Array
Open Array mengindikasikan type parameter namun tidak mengetahui berapa
banyak elemen yang akan disimpan ke array tersebut.
Berikut contoh dari definisi tersebut
Function Sum (const A : array of Integer) : Integer;
Var
I: Integer;
Begin
Result := 0;
For I := Low (A) to High(A) do
Result := Result + A[I];
End;
Bentuk umum definisi array adalah :
<NamaArray>=array[Tipe Indeks] of <Tipe Dasar>
<NamaArray>=array[Tipe Indeks, ] of <Tipe Dasar>
<NamaArray>=array of <Tipe Dasar>

BAB II
Langkah Kerja
Program 1 :
1. Memilih menu file dan klik new Form
2. Pada Form 2 tanamkan control GroupBox (2buah), label (6 buah), Edit (3
buah), Button (3 Buah), dan stringGrid (3 buah) pada jendela tool Additional.
3. Mengatur properti-properti dari masing-masing control sesuai dengan table
sebagai berikut :
Komponen
Form2
GroupBox 1

GroupBox 2
StringGrid 1
StringGrid 2
StringGrid 3
Label 1
Label 2
Label 3
Label 4
Label 5

Properti
Nama
Caption
Borderstyle
Name
Caption

Nilai
Frmarray Matrik
Menjumlahkan Matriks
bsDialog
GroupBox 1
Input Jumlah Baris dan kolom

Name
Caption
Name
FixedRow
FixedColl
Name
FixedRow
FixedColl
Name
FixedRow
FixedColl
Name
Caption
Name
Caption
Name
Caption
Name
Caption
Name
Caption

matriks
GroupBox2
Input Elemen Matriks
StringGrid 1
0
0
StringGrid 2
0
0
StringGrid 3
0
0
Label 1
Jumlah Baris
Label 2
Jumlah Kolom
LblInput
Elemen
Label 4
MATRIK A
Label 5
MATRIK B

Label 6
Edit 1
Edit 2
Edit 3
Button 1
Button 2
Buton 3

Name
Caption
Name
Name
Name
Name
Caption
Name
Caption
Name
Caption

Label 6
MATRIK C
EdBaris
EdKolom
EdMat
BTJumlah
OK
BTJumlah
Matrik A+B
BTBtInput
OK

4. Melakukan desain seperti ditunjukkan pada gambar berikut

5. Melakukan deklarasi variable dan array pada


Var :
I,j,k,l:integer;
Status:Boolean;

6. Melakukan kode program untuk event OnCreate pada Form.


Procedure TFrmArray_matrik.FormCreate(Sender:TObject);
Begin
GroupBox2.Enabled:=false;
End.

7. Melakukan kode program untuk event OnClick pada BTJumlah.


Procedure
TObject);
Begin

TFrmArray_Matrik.BtJumlahClick(Sender:

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;

8. Melakukan kode program untuk event OnChange pada Edmat.


Procedure TFrmArray_Matrik.EdMatChange(Sender: TObject);
Begin
LbInput.Caption:=[++inttostr(i)+,+Inttostr(j)+];
End;

9. Melakukan kode program untuk event OnClick pada BTInput.


Procedure TFrmArray_Matrik.BtInputClick(Sender: TObject);
Begin
If status=True then
Begin
StringGrid1.Cells[I i]:=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)
o(i<)strtoint
(Edbaris.Text)-1)then
Begin
If i<strtoint(Edkolom.Text)-1 then
I:=+1
Else if j<strtoint(Edbaris.Text)-1then
Begin
I:=0;
J:=j+1;
End;
End
Else
Begin
If status=true then
ShowMessage(Elemen
sudah
habis
Isi
Matrik
Berikutnya)
Else
Brgin

ShowMesagge(Elemen
sudah
matrik A dan B);
GroupBox2.Enabled:=false;
End;
I:=0;
J:=0;
Status:=false;
End;

habis

Isi

Jumlahkan

10. Melakukan kode program untuk event OnClick pada BTTabah.


Procedure

TFrmArray_Matrik.BtTambahClick(Sender:

TObject);
Var EMaA,EMatB:Integer;
Begin
For i:=0 to strtoint(EdBaris.Txt)-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+EMatB);
End;
End;

Program 2
Buatlah program untuk melakukan perkalian dua buah matrik.
1. Buatlah program untuk mengurutkan N buah bilangan (ascending dan
descending)

Tombol input digunakan untuk memasukan isi textbox bilangan i ke

dalam list box.


Tombol Urutkan akan mengurutkan angka yang ada di dalam list box
sesua dengan opsi urut yang dipilih.

BAB III
PEMBAHASAN
Tugas Praktikum :
Project 1
Pada praktikum modul lima ini, kita diminta membuat program untuk melakukan
perkalian dua buah matrik. Dimana untuk membuat desain interface program kita
membutuhkan satu buah form, 4 buah button, 3 buah edit teks, 6 buah label, 2 buah
GroupBox, dan 3 buah StringGrid. Berikut adalah desain yang kita dapatkan :

Setelah kita membuat desain interface seperti pada gambar di atas, sekarang kita
mengatur property-properti dari masing-masing component yang telah kita buat,
sehingga kita akan lebih mudah dalam membuat koding programnya, berikut adalah
masing-masing property dari komponen-komponen pada program di atas :
Form1
GroupBox1
GroupBox2
Label1
Label1
Label3
Label4
Label5
Label6
Edit1

Name
Caption
Caption
Caption
Name
Caption
Name
Caption
Name
Caption
Name
Caption
Name
Caption
Name
Caption
Name
Text

Frm1
Perkalian Matrriks
Input Jumlah Baris dan
Kolom Matriks
Input Elemen Matriks
Lbl1
Jumlah Baris
Lbl2
Jumlah Kolom
Lbl3
Elemen
Lbl4
MATRIK A
Lbl5
MATRIK B
Lbl6
MATRIK C
Ed1

Edit2
Edit3
Button1
Button2
Button3
Button4
StringGrid1
StringGrid2
StringGrid3

Name
Text
Name
Text
Name
Caption
Name
Caption
Name
Caption
Font Style
Name
Caption
Font Style
Name
FixedRows
FixedCols
Name
FixedRows
FixedCols
Name
FixedRows
FixedCols

Ed2
Ed3
Btn1
OK
Btn2
OK
Btn3
MATRIK A * B
Bold
Btn4
Keluar
Bold
MatriksA
0
0
MatriksB
0
0
MatriksAB
0
0

Setelah kita mengatur property dari komponen sesuai dengan table di atas, sekarang
kita akan mengetikan koding dari program yang akan kita buat. Berikut adalah koding
yang kita gunakan untuk membuat operasi perkalian pada matriks.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, 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.BtTAMBAHClick(Sender: TObject);
Var EMaA,EMab: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]);
EMaB:=Strtoint(StringGrid2.cells[i,j]);
StringGrid3.cells[i,j]:=Inttostr(EMaA+EMAB);

end
end;

procedure TFrnArray_Matrik.EdMatChange(Sender: TObject);


begin
LbInput.Caption:='['+''+inttostr(i)+','+inttostr(j)+']';
end;
procedure TFrnArray_Matrik.BTInputClick(Sender: TObject);
begin
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;
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.Button1Click(Sender: TObject);
begin
application.Terminate;
close;
end;
end.
Berikut adalah sedikit penjelasan dari koding di atas.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, 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;

Koding di atas merupakan koding untuk mendesain desain interface dari program
yang akan kita buat dan pengaturan dari component-komponent yang kita butuhkan.
var
i,j,k,l:integer;
status:boolean;
FrnArray_Matrik: TFrnArray_Matrik;

Koding di atas merupakan deklarasi dari variable yang akan kita gunakan
pada program nanti, pada program ini kita menggunakan variable I,j k, l yang bertipe
data integer yang akan di simpan pada variable tersebut adalah data yang berupa
angka bilangan bulat, selain itu maka program error. Selanjutnya status bertipe data
Boolean yang artinya pada status hanya mengenal ya atau tidak dan benar atau salah
jadi tipe data boleean berarti tipe data yang hanya memiliki dua kemungkinan benar
atau salah saja. Sedangkan FrnArray_Matrik bertipe data array atau larik yang artinya
dapat menyimpan data yang tipe datanya berbeda-beda.
procedure TFrnArray_Matrik.BtTAMBAHClick(Sender: TObject);

Var EMaA,EMab: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]);
EMaB:=Strtoint(StringGrid2.cells[i,j]);
StringGrid3.cells[i,j]:=Inttostr(EMaA+EMAB);
end
end;

Procedure di atas di gunakan untuk melakukan operasi penjumlahan pada


matriks di mana opersai tersebut harus sesuai dengan kaidah penjumlahan pada
matriks.
procedure TFrnArray_Matrik.EdMatChange(Sender: TObject);
begin
LbInput.Caption:='['+''+inttostr(i)+','+inttostr(j)+']';
end;

Procedure di atas di gunakan untuk mengganti label yang akan di tampilkan pada saat
kita menginputkan data ke dalam matriks, label yang muncul adalah berupa kolom
dan baris ke berapa data yang kita input.
procedure TFrnArray_Matrik.BTInputClick(Sender: TObject);
begin
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)
(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;

or

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;
end;

Procedure di atas di gunakan untuk memasukan data ke dalam stringgrid


secara berurutan dari baris ke 1 dan kolom ke satu sampai baris dan kolom pada
matriks tersebut penuh, jika penuh maka akan muncul pesan peringatan bahwa
elemen pad amatriks tebut sudah penuh dan kita akan di suruh memasukan data pada
elemen matriks selanjutnya.
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 di atas di gunakan untuk menetukan berapa jumlah kolom dan baris
matriks yang akan kita lakukan operasi penjumlahan.

procedure TFrnArray_Matrik.Button1Click(Sender: TObject);


begin
application.Terminate;
close;
end;
end.

Sedangkan procedure di atas di gunakan untuk keluar dari program, jika kita
mengklik button tersebut dan program akan berakhir.
Sekarang kita masuk pada program selanjutnya, program yang selanjutnya,
adalah program yang di gunakan untuk mengurutkan N buah bilangan secara
ascending dan descending. Berikut adalah tampilan programnya.

Untuk membuat program seperti gambar di atas, kita membutuhkan empat


buah label, tiga buah button, dua buah edit text, satu buah group box, dua buah radio
button dan tiga buah list box. Setelah kita membuat desain seperti gambar di atas,
sekarang kita mengatur property-properti dari komponen di atas. Dan setalah itu kita
akan mengetikkan koding seperti di bawag ini.
unit Unit1;
interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms,
Dialogs, StdCtrls;
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);
procedure FormCreate(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)
while A[Hi] > Pivot do Dec(Hi)
if Lo <= Hi then
begin
T := A[Lo];
A[Lo] := A[Hi];
A[Hi] := T;
Inc(Lo) ;
Dec(Hi) ;
end;
until Lo > Hi;
if Hi > iLo then QuickSortAsc(A,
if Lo < iHi then QuickSortAsc(A,
end;

;
;

iLo, Hi) ;
Lo, iHi) ;

procedure QuickSortDesc(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) ;
while A[Hi] < Pivot do Dec(Hi) ;
if Lo <= Hi then
begin
T := A[Lo];
A[Lo] := A[Hi];
A[Hi] := T;
Inc(Lo) ;
Dec(Hi) ;
end;
until Lo > Hi;
if Hi > iLo then QuickSortDesc(A, iLo, Hi) ;
if Lo < iHi then QuickSortDesc(A, Lo, iHi) ;
end;
procedure TForm1.BtnInputClick(Sender: TObject);
var nilai : Integer;
begin
n
:= StrToInt(EdBanyak.Text);
nilai :=StrToInt(EdInput.Text);
repeat

i:=i+1;
LblInput.Caption :='Bilangan ke '+IntToStr(i);
LBLoop1.Items.Add(IntToStr(nilai));
EdInput.Clear;
EdInput.SetFocus;
until i<=n;
if TryStrToInt(EdInput.Text,Nilai) then
Lbloop1.Items.Add(IntToStr(nilai));
if Lbloop1.Items.Count = N then
begin
Btninput.Enabled := True;
BtnInput.Enabled := False;
end else
begin
Btnurut.Enabled := true;
end;
end;

procedure TForm1.BtnUrutClick(Sender: TObject);


var
indek : Word;
begin
if RBAscending.Checked then
begin
SetLength(Data,LBLoop1.Items.Count) ;
for indek := 0 to LBLoop1.Items.Count - 1 do
Data[indek] := StrToInt(LBLoop1.Items[indek]);
QuickSortAsc(Data,Low(Data),High(Data));
LBLoop2.Items.Clear;
for indek := 0 to LBLoop1.Items.Count - 1 do
LBLoop2.Items.Add(IntToStr(data[indek]))
end
else
begin
if RBDescending.Checked then
SetLength(Data,LBLoop1.Items.Count) ;
for indek := 0 to LBLoop1.Items.Count - 1 do
Data[indek] := StrToInt(LBLoop1.Items[indek]);

QuickSortDesc(Data,Low(Data),High(Data));
LBLoop3.Items.Clear;
for indek := 0 to LBLoop1.Items.Count - 1 do
LBLoop3.Items.Add(IntToStr(data[indek]))
end;
end;
procedure TForm1.btexitClick(Sender: TObject);
begin
if (application.MessageBox('Anda Yakin Keluar Dari Program
ini ?','Pemberitahuan',Mb_YesNo)=idyes)then
close;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
end;
end.
Berikut adalah sedikit penjelasan dari koding program di atas :
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms,
Dialogs, StdCtrls;
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);
procedure FormCreate(Sender: TObject);

Procedure di atas di gunakan untuk membuat desain interface dari program


yang kita buat, di mana pada desain tersebut kita menggunakan empat buah label, tiga
buah button, dua buah edit text, satu buah group box, dua buah radio button dan
tiga buah list box. Selain membuat desai interfacenya koding di atas juga di gunakan
untuk memberi nama pada masing-masing komponen.
var
Form1: TForm1;
i, j, k, l, n, nilai : integer;

Koding di atas merupakan bagian deklarasi variable dari program yang telah
kita buat. Di mana semua variable di atas bertipe data integer yang artinya tipe data
tersebut hanya menyimpan data berupa angka.
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) ;
while A[Hi] > Pivot do Dec(Hi) ;
if Lo <= Hi then
begin
T := A[Lo];
A[Lo] := A[Hi];
A[Hi] := T;
Inc(Lo) ;
Dec(Hi) ;
end;

until Lo > Hi;


if Hi > iLo then QuickSortAsc(A, iLo, Hi) ;
if Lo < iHi then QuickSortAsc(A, Lo, iHi) ;
end;

Procedure di atas di gunakan untuk melakukan pengurutan secara ascending


atau pengurutan dari yang terkecil sampai yang terbesar, sesuai dengan data yang
sudah kita inputkan.
procedure QuickSortDesc(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) ;
while A[Hi] < Pivot do Dec(Hi) ;
if Lo <= Hi then
begin
T := A[Lo];
A[Lo] := A[Hi];
A[Hi] := T;
Inc(Lo) ;
Dec(Hi) ;
end;
until Lo > Hi;
if Hi > iLo then QuickSortDesc(A, iLo, Hi) ;
if Lo < iHi then QuickSortDesc(A, Lo, iHi) ;
end;

Sedangkan procedure di atas di gunakan untuk melakukan pengurutan dari


yang terbesar sampai yang terbesar, di mana hal ini merupakan kebalikan dari
pengurutan secara ascending.
procedure TForm1.BtnInputClick(Sender: TObject);
var nilai : Integer;
begin
n
:= StrToInt(EdBanyak.Text);
nilai :=StrToInt(EdInput.Text);
repeat
i:=i+1;
LblInput.Caption :='Bilangan ke '+IntToStr(i);

LBLoop1.Items.Add(IntToStr(nilai));
EdInput.Clear;
EdInput.SetFocus;
until i<=n;
if TryStrToInt(EdInput.Text,Nilai) then
Lbloop1.Items.Add(IntToStr(nilai));
if Lbloop1.Items.Count = N then
begin
Btninput.Enabled := True;
BtnInput.Enabled := False;
end else
begin
Btnurut.Enabled := true;
end;
end;

Procedure di atas di gunakan untuk melakukan inputan atau masukan data jika
kita klik tombol input, jumlah data yang dapat di masukan sesuai dengan jumlah
banyak data yang telah kita masukkan.

procedure TForm1.BtnUrutClick(Sender: TObject);


var
indek : Word;
begin
if RBAscending.Checked then
begin
SetLength(Data,LBLoop1.Items.Count) ;
for indek := 0 to LBLoop1.Items.Count - 1 do
Data[indek] := StrToInt(LBLoop1.Items[indek]);
QuickSortAsc(Data,Low(Data),High(Data));
LBLoop2.Items.Clear;
for indek := 0 to LBLoop1.Items.Count - 1 do
LBLoop2.Items.Add(IntToStr(data[indek]))
end
else
begin
if RBDescending.Checked then
SetLength(Data,LBLoop1.Items.Count) ;

for indek := 0 to LBLoop1.Items.Count - 1 do


Data[indek] := StrToInt(LBLoop1.Items[indek]);
QuickSortDesc(Data,Low(Data),High(Data));
LBLoop3.Items.Clear;
for indek := 0 to LBLoop1.Items.Count - 1 do
LBLoop3.Items.Add(IntToStr(data[indek]))
end;
end;

Procedure di atas di gunakan untuk melakuka aksi pengurutan jika kita


mengklik tombol button tersebut, dan aksi pengurutan yang di lakukan sesuai dengan
radio button yang kita pilih, yaitu antara ascending dan descending.
procedure TForm1.btexitClick(Sender: TObject);
begin
if (application.MessageBox('Anda Yakin Keluar Dari Program ini
?','Pemberitahuan',Mb_YesNo)=idyes)then
close;
end;

Procedure di atas di gunakan untuk keluar dari program, di mana sebelum kita
keluar, kita akan di Tanya dulu apakah yakin ingin keluar jika kita klik ya maka
program akan keluar dan selesai dan sebaliknya jika tidak maka kita tidak akan keluar
dari program.

BAB IV
Kesimpulan
Dari praktikum yang telah kita buat, dapat di simpulkan bahwa :
1. Array (larik) merupakan tipe data terstruktur yang dapat menyimpan
sejumlah data yang bertipe sama. Berbeda dengan himpunan, suatu array
dapat menampung data yang jauh lebih banyak dan nilai yang ada pada
array dapat kembar.
2. Setiap elemen array mempunyai indeks, dengan menggunakan indeks ini,
setiap elemen array dapat diakses secara tersendiri.
3. Berdasarkan pengalokasiannya, array dapat dikategorikan sebagai :
array statis, dan
array dinamis.

BAB V
Daftar Pustaka
http://yulianus-putra.blogspot.com/2012/01/larik-atau-array-pada-delphi.html
http://devribudic.blogspot.com/2013/04/array-dalam-delphi.html
http://pemodelan.com/tiga-jenis-array-pada-delphi.html
https://annur24.wordpress.com/2013/12/23/array-pada-delphi/
https://annur24.wordpress.com/2013/12/23/contoh-array-pada-delphikonversitanggal-ke-hari/
(Di akses pada Rabu, 3 Desember 2014 sekitar pukul 17.20 WIB)

BAB VI
Lampiran

Program 1

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, 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.BtTAMBAHClick(Sender: TObject);
Var EMaA,EMab: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]);
EMaB:=Strtoint(StringGrid2.cells[i,j]);
StringGrid3.cells[i,j]:=Inttostr(EMaA+EMAB);
end
end;

procedure TFrnArray_Matrik.EdMatChange(Sender: TObject);


begin
LbInput.Caption:='['+''+inttostr(i)+','+inttostr(j)+']';
end;
procedure TFrnArray_Matrik.BTInputClick(Sender: TObject);
begin
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;
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.Button1Click(Sender: TObject);
begin
application.Terminate;

close;
end;
end.

Program 2

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms,
Dialogs, StdCtrls;
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) ;
while A[Hi] > Pivot do Dec(Hi) ;
if Lo <= Hi then
begin
T := A[Lo];
A[Lo] := A[Hi];
A[Hi] := T;
Inc(Lo) ;
Dec(Hi) ;
end;
until Lo > Hi;
if Hi > iLo then QuickSortAsc(A, iLo, Hi) ;

if Lo < iHi then QuickSortAsc(A, Lo, iHi) ;


end;
procedure QuickSortDesc(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) ;
while A[Hi] < Pivot do Dec(Hi) ;
if Lo <= Hi then
begin
T := A[Lo];
A[Lo] := A[Hi];
A[Hi] := T;
Inc(Lo) ;
Dec(Hi) ;
end;
until Lo > Hi;
if Hi > iLo then QuickSortDesc(A, iLo, Hi) ;
if Lo < iHi then QuickSortDesc(A, Lo, iHi) ;
end;
procedure TForm1.BtnInputClick(Sender: TObject);
var nilai : Integer;
begin
n
:= StrToInt(EdBanyak.Text);
nilai :=StrToInt(EdInput.Text);
repeat
i:=i+1;
LblInput.Caption :='Bilangan ke '+IntToStr(i);
LBLoop1.Items.Add(IntToStr(nilai));
EdInput.Clear;
EdInput.SetFocus;
until i<=n;
if TryStrToInt(EdInput.Text,Nilai) then
Lbloop1.Items.Add(IntToStr(nilai));
if Lbloop1.Items.Count = N
begin

then

Btninput.Enabled := True;
BtnInput.Enabled := False;
end else
begin
Btnurut.Enabled := true;
end;
end;

procedure TForm1.BtnUrutClick(Sender: TObject);


var
indek : Word;
begin
if RBAscending.Checked then
begin
SetLength(Data,LBLoop1.Items.Count) ;
for indek := 0 to LBLoop1.Items.Count - 1 do
Data[indek] := StrToInt(LBLoop1.Items[indek]);
QuickSortAsc(Data,Low(Data),High(Data));
LBLoop2.Items.Clear;
for indek := 0 to LBLoop1.Items.Count - 1 do
LBLoop2.Items.Add(IntToStr(data[indek]))
end
else
begin
if RBDescending.Checked then
SetLength(Data,LBLoop1.Items.Count) ;
for indek := 0 to LBLoop1.Items.Count - 1 do
Data[indek] := StrToInt(LBLoop1.Items[indek]);
QuickSortDesc(Data,Low(Data),High(Data));
LBLoop3.Items.Clear;
for indek := 0 to LBLoop1.Items.Count - 1 do
LBLoop3.Items.Add(IntToStr(data[indek]))
end;
end;
procedure TForm1.btexitClick(Sender: TObject);
begin

if (application.MessageBox('Anda Yakin Keluar Dari Program


ini ?','Pemberitahuan',Mb_YesNo)=idyes)then
close;
end;
end.

Anda mungkin juga menyukai