Upload
yopi-miri
View
39
Download
5
Embed Size (px)
DESCRIPTION
Yp
Citation preview
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 (one-
dimensional array) mewakili bentuk suatu vektor. Larik dimensi dua (two-
dimensional 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 rubah-
rubah 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 Properti Nilai
Form2 Nama Frmarray Matrik
Caption Menjumlahkan Matriks
Borderstyle bsDialog
GroupBox 1 Name GroupBox 1
Caption Input Jumlah Baris dan kolom
matriks
GroupBox 2 Name GroupBox2
Caption Input Elemen Matriks
StringGrid 1 Name StringGrid 1
FixedRow 0
FixedColl 0
StringGrid 2 Name StringGrid 2
FixedRow 0
FixedColl 0
StringGrid 3 Name StringGrid 3
FixedRow 0
FixedColl 0
Label 1 Name Label 1
Caption Jumlah Baris
Label 2 Name Label 2
Caption Jumlah Kolom
Label 3 Name LblInput
Caption Elemen
Label 4 Name Label 4
Caption MATRIK A
Label 5 Name Label 5
Caption MATRIK B
Label 6 Name Label 6
Caption MATRIK C
Edit 1 Name EdBaris
Edit 2 Name EdKolom
Edit 3 Name EdMat
Button 1 Name BTJumlah
Caption OK
Button 2 Name BTJumlah
Caption Matrik A+B
Buton 3 Name BTBtInput
Caption 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);BeginGroupBox2.Enabled:=false;End.
7. Melakukan kode program untuk event OnClick pada BTJumlah.
Procedure TFrmArray_Matrik.BtJumlahClick(Sender: TObject);BeginStatus:=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);BeginLbInput.Caption:=’[‘+’’+inttostr(i)+’,’+Inttostr(j)+’]’;End;
9. Melakukan kode program untuk event OnClick pada BTInput.
Procedure TFrmArray_Matrik.BtInputClick(Sender: TObject);BeginIf status=True thenBegin
StringGrid1.Cells[I i]:=EdMat.Text;Groupbox2.Caption:=Input Elemen Matriks A’
EndElse if status=false thenBegin
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)thenBeginIf i<strtoint(Edkolom.Text)-1 thenI:=+1Else if j<strtoint(Edbaris.Text)-1thenBegin
I:=0;J:=j+1;
End;EndElseBeginIf status=true then
ShowMessage(‘Elemen sudah habis Isi Matrik Berikutnya’)ElseBrgin
ShowMesagge(‘Elemen sudah habis Isi Jumlahkan matrik A dan B’);
GroupBox2.Enabled:=false;End;I:=0;J:=0;Status:=false;End;
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 Name Frm1
Caption Perkalian Matrriks
GroupBox1 Caption Input Jumlah Baris dan
Kolom Matriks
GroupBox2 Caption Input Elemen Matriks
Label1 Name Lbl1
Caption Jumlah Baris
Label1 Name Lbl2
Caption Jumlah Kolom
Label3 Name Lbl3
Caption Elemen
Label4 Name Lbl4
Caption MATRIK A
Label5 Name Lbl5
Caption MATRIK B
Label6 Name Lbl6
Caption MATRIK C
Edit1 Name Ed1
Text
Edit2 Name Ed2
Text
Edit3 Name Ed3
Text
Button1 Name Btn1
Caption OK
Button2 Name Btn2
Caption OK
Button3 Name Btn3
Caption MATRIK A * B
Font Style Bold
Button4 Name Btn4
Caption Keluar
Font Style Bold
StringGrid1 Name MatriksA
FixedRows 0
FixedCols 0
StringGrid2 Name MatriksB
FixedRows 0
FixedCols 0
StringGrid3 Name MatriksAB
FixedRows 0
FixedCols 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;
vari,j,k,l:integer;status:boolean; FrnArray_Matrik: TFrnArray_Matrik;
implementation
{$R *.dfm}
procedure TFrnArray_Matrik.FormCreate(Sender: TObject);beginGroupBox2.Enabled:=false;end;
procedure TFrnArray_Matrik.BtTAMBAHClick(Sender: TObject);
Var EMaA,EMab:integer;beginfor i:=0 to strtoint(EdBaris.text)-1 dofor j:=0 to strtoint(EdKolom.text)-1 dobegin EMaA:=Strtoint(StringGrid1.cells[i,j]); EMaB:=Strtoint(StringGrid2.cells[i,j]); StringGrid3.cells[i,j]:=Inttostr(EMaA+EMAB);endend;
procedure TFrnArray_Matrik.EdMatChange(Sender: TObject);beginLbInput.Caption:='['+''+inttostr(i)+','+inttostr(j)+']';
end;
procedure TFrnArray_Matrik.BTInputClick(Sender: TObject);beginif status=True thenbeginStringGrid1.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);beginapplication.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.
vari,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;beginfor i:=0 to strtoint(EdBaris.text)-1 dofor j:=0 to strtoint(EdKolom.text)-1 dobegin EMaA:=Strtoint(StringGrid1.cells[i,j]); EMaB:=Strtoint(StringGrid2.cells[i,j]); StringGrid3.cells[i,j]:=Inttostr(EMaA+EMAB);endend;
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);beginLbInput.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);beginif status=True thenbeginStringGrid1.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 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);beginapplication.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, 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;beginn := 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 thenbegin Btninput.Enabled := True; BtnInput.Enabled := False; end else begin Btnurut.Enabled := true; end; end;
procedure TForm1.BtnUrutClick(Sender: TObject);varindek : Word;beginif 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);beginif (application.MessageBox('Anda Yakin Keluar Dari Program ini ?','Pemberitahuan',Mb_YesNo)=idyes)thenclose;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;beginn := 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 thenbegin 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);varindek : Word;beginif 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);beginif (application.MessageBox('Anda Yakin Keluar Dari Program ini ?','Pemberitahuan',Mb_YesNo)=idyes)thenclose;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-delphikonversi-
tanggal-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;
vari,j,k,l:integer;status:boolean; FrnArray_Matrik: TFrnArray_Matrik;
implementation
{$R *.dfm}
procedure TFrnArray_Matrik.FormCreate(Sender: TObject);beginGroupBox2.Enabled:=false;end;
procedure TFrnArray_Matrik.BtTAMBAHClick(Sender: TObject);
Var EMaA,EMab:integer;beginfor i:=0 to strtoint(EdBaris.text)-1 dofor j:=0 to strtoint(EdKolom.text)-1 dobegin EMaA:=Strtoint(StringGrid1.cells[i,j]); EMaB:=Strtoint(StringGrid2.cells[i,j]); StringGrid3.cells[i,j]:=Inttostr(EMaA+EMAB);endend;
procedure TFrnArray_Matrik.EdMatChange(Sender: TObject);beginLbInput.Caption:='['+''+inttostr(i)+','+inttostr(j)+']';
end;
procedure TFrnArray_Matrik.BTInputClick(Sender: TObject);beginif status=True thenbeginStringGrid1.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);beginapplication.Terminate;close;end;
end.
Program 2
unit Unit1;
interface
usesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;
typeTForm1 = 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;
varForm1: TForm1;i, j, k, l, n, nilai : integer;
implementation
{$R *.dfm}
procedure QuickSortAsc(var A: array of Integer; iLo, iHi: Integer) ;varLo, Hi, Pivot, T: Integer;beginLo := iLo;Hi := iHi;Pivot := A[(Lo + Hi) div 2];repeatwhile A[Lo] < Pivot do Inc(Lo) ;while A[Hi] > Pivot do Dec(Hi) ;if Lo <= Hi thenbeginT := 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) ;
varLo, Hi, Pivot, T: Integer;beginLo := iLo;Hi := iHi;Pivot := A[(Lo + Hi) div 2];repeatwhile A[Lo] > Pivot do Inc(Lo) ;while A[Hi] < Pivot do Dec(Hi) ;if Lo <= Hi thenbeginT := 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;beginn := StrToInt(EdBanyak.Text);nilai :=StrToInt(EdInput.Text);repeati:=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) thenLbloop1.Items.Add(IntToStr(nilai));
if Lbloop1.Items.Count = N thenbeginBtninput.Enabled := True;BtnInput.Enabled := False;end elsebeginBtnurut.Enabled := true;end;
end;
procedure TForm1.BtnUrutClick(Sender: TObject);varindek : Word;beginif RBAscending.Checked thenbeginSetLength(Data,LBLoop1.Items.Count) ;
for indek := 0 to LBLoop1.Items.Count - 1 doData[indek] := StrToInt(LBLoop1.Items[indek]);
QuickSortAsc(Data,Low(Data),High(Data));
LBLoop2.Items.Clear;
for indek := 0 to LBLoop1.Items.Count - 1 doLBLoop2.Items.Add(IntToStr(data[indek]))endelsebeginif RBDescending.Checked thenSetLength(Data,LBLoop1.Items.Count) ;
for indek := 0 to LBLoop1.Items.Count - 1 doData[indek] := StrToInt(LBLoop1.Items[indek]);
QuickSortDesc(Data,Low(Data),High(Data));
LBLoop3.Items.Clear;
for indek := 0 to LBLoop1.Items.Count - 1 doLBLoop3.Items.Add(IntToStr(data[indek]))
end;end;
procedure TForm1.btexitClick(Sender: TObject);beginif (application.MessageBox('Anda Yakin Keluar Dari Program ini ?','Pemberitahuan',Mb_YesNo)=idyes)thenclose;end;
end.