laporan praktikum algoritma dan pemograman iii

45
LAPORAN HASIL PRAKTIKUM Algoritma dan Pemograman III Nama : Yopi Lala NIM : DBC 113 016 Modul : V (Lima)

Upload: yopi-miri

Post on 22-Dec-2015

32 views

Category:

Documents


5 download

DESCRIPTION

Yp

TRANSCRIPT

Page 1: Laporan Praktikum Algoritma dan Pemograman III

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

Page 2: Laporan Praktikum Algoritma dan Pemograman III

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

Page 3: Laporan Praktikum Algoritma dan Pemograman III

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>

Page 4: Laporan Praktikum Algoritma dan Pemograman III

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

Page 5: Laporan Praktikum Algoritma dan Pemograman III

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

Page 6: Laporan Praktikum Algoritma dan Pemograman III

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.

Page 7: Laporan Praktikum Algoritma dan Pemograman III

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

Page 8: Laporan Praktikum Algoritma dan Pemograman III

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.

Page 9: Laporan Praktikum Algoritma dan Pemograman III

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

Page 10: Laporan Praktikum Algoritma dan Pemograman III

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

Page 11: Laporan Praktikum Algoritma dan Pemograman III

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;

Page 12: Laporan Praktikum Algoritma dan Pemograman III

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;

Page 13: Laporan Praktikum Algoritma dan Pemograman III

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

Page 14: Laporan Praktikum Algoritma dan Pemograman III

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;

Page 15: Laporan Praktikum Algoritma dan Pemograman III

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;

Page 16: Laporan Praktikum Algoritma dan Pemograman III

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

Page 17: Laporan Praktikum Algoritma dan Pemograman III

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.

Page 18: Laporan Praktikum Algoritma dan Pemograman III

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;

Page 19: Laporan Praktikum Algoritma dan Pemograman III

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

Page 20: Laporan Praktikum Algoritma dan Pemograman III

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

Page 21: Laporan Praktikum Algoritma dan Pemograman III

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;

Page 22: Laporan Praktikum Algoritma dan Pemograman III

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

Page 23: Laporan Praktikum Algoritma dan Pemograman III

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.

Page 24: Laporan Praktikum Algoritma dan Pemograman III

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

Page 25: Laporan Praktikum Algoritma dan Pemograman III

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]))

Page 26: Laporan Praktikum Algoritma dan Pemograman III

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

Page 27: Laporan Praktikum Algoritma dan Pemograman III

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

Page 28: Laporan Praktikum Algoritma dan Pemograman III

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

Page 29: Laporan Praktikum Algoritma dan Pemograman III

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}

Page 30: Laporan Praktikum Algoritma dan Pemograman III

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 ;

Page 31: Laporan Praktikum Algoritma dan Pemograman III

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.

Page 32: Laporan Praktikum Algoritma dan Pemograman III

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;

Page 33: Laporan Praktikum Algoritma dan Pemograman III

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

Page 34: Laporan Praktikum Algoritma dan Pemograman III

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;

Page 35: Laporan Praktikum Algoritma dan Pemograman III

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.

Page 36: Laporan Praktikum Algoritma dan Pemograman III