Array dan Subrutin Procedure dan Function Delphi 7

 on Selasa, 16 Mei 2017  

Pada bab ini akan membahas mengenai array dan subrutin. Subrutin terdiri dari dua, yaitu procedure dan function. Pada dasarnya bentuk pemrograman dengan Delphi 7 adalah menggunakan procedure dan function. Kedua subrutin ini berisi pernyataan-pernyataan yang berfungsi untuk melakukan tugas tertentu. Satu perbedaan dari kedua subrutin tersebut adalah bahwa function selalu mengembalikan satu nilai setelah dipanggil, sedangkan procedure dapat mengembalikan lebih dari satu nilai. Ada dua jenis procedure pada Delphi yaitu procedure yang dibuat sendiri oleh pembuat program atau sebut saja user procedure dan event procedure.

4.1 Array
Array merupakan sebuah variabel yang dapat menampung lebih dari satu data. Array ini dapat diibaratkan seperti lemari yang mempunyai sekat-sekat dimana setiap sekat dalam istilah array disebut dengan elemen, dapat menampung satu data. Setiap elemen dalam array diberi identitas dengan istilah index dimana elemen pertama diberi index 0, elemen kedua diberi index 1, dst. Data yang ditampung pada setiap elemen harus mempunyai tipe data yang sejenis.
Bila anda ingin mengolah data berupa data nilai misalnya 60, 50, 90, 70, dan 80 dimana anda ingin memperoleh hasil yaitu jumlah nilai, rata-rata nilai, standard deviasi maka pengolahan data tersebut lebih tepat menggunakan array supaya kode programnya lebih sederhana. Tetapi ada kalanya untuk data tertentu misalnya matrik harus diselesaikan dengan array.
Ada beberapa jenis array yaitu array dimensi satu, array dimensi dua, array dimensi tiga, dst. Pemilihan dimensi array bergantung kepada data yang diolah. Bila sekelompok data yang mempunyai keterkaitan antar data berada dalam satu arah maka digunakan array dimensi satu seperti data nilai diatas. Bila sekelompok data yang mempunyai keterkaitan antar data berada dalam dua arah maka digunakan array dimensi dua, contohnya adalah data matrik. Bila dalam tiga arah digunakan dimensi tiga, dst. Berdasarkan kapasitasnya, ada array statis dan dinamis. Array statis, kapasitasnya untuk menampung data ditentukan pada saat disain, sedangkan array dinamis kapasitasnya ditentukan pada saat run time.
Seperti layaknya variabel, array juga harus dideklarasikan sebelum digunakan. Sintaks untuk mendeklarasikan array statis adalah :

var <NamaArray> : array [BatasAwal..BatasAkhir] of <TipeData>;
Contoh :
var
DataNilai : array[1..100] of Integer;               {array dimensi satu}
Matrik_A : array[1..5, 1..10] of Integer;         {array dimensi dua}
Gaya_B : array[1..5, 1..10, 1..15] of Real;      {array dimensi tiga}

Pada array DataNilai maksud dari [1..100] adalah  untuk menentukan elemen-elemennya yang dimulai dari index 0 s/d 99, dan dituliskan sbb. :
DataNilai[0];
DataNilai[1];
---
---
DataNilai[99];
sehingga kapasitasnya untuk menampung data maksimum 100 data.

Sedangkan array Matrik_A  maksud dari [1..5, 1..10] adalah untuk menentukan elemen-elemennya dimulai dari index 0 s/d 4 pada dimensi pertama dan pada dimensi kedua dimulai dari index 0 s/d 9, dan dituliskan sbb. :
Matrik_A[0,0];            Matrik_A[0,1] ;           --  --     Matrik_A[0,9];
Matrik_A[1,0];            Matrik_A[1,1] ;           --  --     Matrik_A[1,9];
--                                  --                                  --  --     --
--                                  --                                  --  --     --
Matrik_A[4,0];            Matrik_A[4,1] ;           --  --     Matrik_A[4,9];
sehingga kapasitasnya untuk menampung data maksimum 50 data.

Untuk mendeklarasikan array dinamis adalah :

var <NamaArray> : array of <TipeData>;

Contoh :
var
  pjual : array of  Integer;
  N : Integer;
begin
  N := 5;
  SetLength(pjual, N);
  ---
  end;
Pada contoh diatas procedure SetLength(pjual, N) adalah untuk menentukan elemen-elemen array. Bila variabel N diisi dengan 5 maka indexnya dimulai dari 0 s/d 4 sehingga kapasitasnya maksimum 5 data. Tetapi bila variabel N diisi dengan 50 maka indexnya dimulai dari 0 s/d 49 dan kapasitas maksimumnya 50 data. Jadi kapasitas array ini sangat tergantung kepada variabel N.

Contoh program array :

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text := '';
Edit2.Text := '';
Edit3.Text := '';
end;
procedure TForm1.Button2Click(Sender: TObject);
var
  nilai : Array of Integer;  i, N : Integer;
  jumlah, rata2, std, sigma : Real;
begin
  N := StrToInt(InputBox('Input','Banyaknya Data',''));
  SetLength(nilai,N);
  For i:=1 To N Do
    nilai[i-1] := StrToInt(InputBox('Input Data','ke ' + IntToStr(i),''));
  jumlah := 0;
  For i:=1 To N Do jumlah := jumlah + nilai[i-1];
  rata2 := jumlah/N;
  sigma := 0;
  For i:=1 To N Do
    sigma := sigma + sqr(nilai[i-1]-rata2);
  std := sqrt(sigma/N);
  Edit1.Text := FloatToStr(jumlah);
  Edit2.Text := FloatToStr(rata2);
  Edit3.Text := FloatToStr(std);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Application.Terminate;
end;
4.2 Event Procedure

Event procedure adalah procedure dari setiap event komponen. Event procedure akan dijalankan pada waktu terjadi event pada komponen. Sebagai contoh terjadi event click pada Button1 maka event procedure Button1Click akan dijalankan. Untuk lebih jelasnya perhatikan gambar 4.1 dibawah ini.


Bentuk sebuah event procedure adalah sebagai berikut :
procedure T<NamaForm>.<Nama_Objek><NamaEvevt(parameter);
begin
   <pernyataan>
   ---
   <pernyataan>
end;

Untuk membuat sebuah event procedure adalah pertama pilih komponen, lalu pada object inspector pilih tab event, kemudian klik event yang diinginkan, lalu klik ganda pada kolom sebelah kanan seperti yang ditunjukkan pada gambar 4.2 dibawah ini.


4.3 User Procedure
User procedure adalah procedure yang dibuat (didefinisikan) sendiri oleh pembuat program. Pernyataan-pernyataan didalam user procedure sama halnya dengan event procedure. Perbedaannya adalah user procedure akan dijalankan bila dipanggil dengan namanya, sedangkan event procedure akan dijalankan bila terjadi suatu event terhadap komponen. Biasanya user procedure dipanggil dari event procedure, tetapi dapat juga dipanggil dari user procedure yang lain.
Event procedure biasanya selalu ada dalam program aplikasi, sedangkan user procedure belum tentu ada karena sifatnya optional. Alasan utama memakai user procedure adalah untuk kode program yang diperlukan secara berulang-ulang. Agar kode program tersebut tidak dituliskan secara berulang-ulang maka digunakan user procedure. Tetapi untuk kode program yang tidak diperlukan secara berulang-ulang dapat juga memakai user procedure dengan tujuan agar program lebih terstruktur dan mudah dibaca.

Sintaks dari sebuah user procedure adalah sebagai berikut :
Procedure <NamaProcedure> (parameter);
<DeklarasiLokal>
Begin
   <pernyataan>
   ---
   <pernyataan>
End;

Untuk mengakses atau memanggil sebuah user procedure adalah sebagai berikut :
<NamaProcedure> (parameter);

Apabila parameternya tidak ada, untuk memanggilnya adalah sebagai berikut :
<NamaProcedure>;

Berikut ini adalah sebuah contoh untuk menghitung kombinasi dimana rumus untuk menghitung kombinasi adalah :
dimana :          N = Banyaknya data
                        R = Banyaknya kombinasi
                        C = Jumlah kombinasi yang terjadi
Dari rumus diatas dapat dilihat bahwa untuk menghitung kombinasi diperlukan tiga kali untuk menghitung faktorial oleh karena itu supaya program faktorial tidak ditulis sebanyak tiga kali maka digunakan user procedure untuk menghitung faktorial, seperti yang ditunjukkan pada gambar 4.3 dibawah ini.


Pada  diatas dapat dilihat bahwa user procedure diberi nama Faktor1, dan ada dua parameter yang diberi nama N dan Fak, dimana N adalah parameter input dan Fak adalah parameter output. Parameter output harus memakai klausa var. Pemakaian jumlah parameter sesuai dengan banyaknya input dan output. Dalam menghitung faktorial ada satu data input yaitu berapa faktorial dan satu output yaitu hasil faktorial sehingga digu-nakan sebanyak dua parameter dengan tipe sesuai dengan data input dan hasil faktorial. Untuk memberikan nama procedure dan parameter diberikan kebebasan kepada pembuat program, tetapi hanya boleh menggunakan huruf, angka, dan garis bawah.
Selanjutnya user procedure tersebut digunakan dari procedure yang lain dalam hal ini dari event procedure Button2Click. Untuk menggunakannya, dipanggil dengan menyebutkan namanya dan parameternya, seperti dibawah ini :

Faktor1(N,X);
Faktor1(N-R,Y);
Faktor1(R,Z);

Dalam pemanggilan ini alurnya adalah variabel N akan mengirim nilainya ke parameter pertama (input) procedure Faktor1, dan hasilnya diterima oleh variabel X dari parameter kedua (output) procedure Faktor1.

Contoh lain dari user procedure adalah sebagai berikut :
type
  TForm1 = class(TForm)
    ---
    Procedure edDataHapus;
     ---
  private
    { Private declarations }
   ---

implementation

{$R *.dfm}

Procedure TForm1.edDataHapus;
Begin
Edit1.Text := '';
Edit2.Text := '';
End;
---
End.

Pada contoh diatas user procedure diberi nama edDataHapus, dan sebelum nama tersebut didahului dengan nama formnya karena kode programnya berkaitan dengan komponen. Procedure tersebut harus dideklarasikan pada klausa type, lihat contoh diatas.

4.4 Function
Pada dasarnya funtion hampir sama dengan user procedure, perbedaannya adalah user procedure dapat mengembalikan lebih dari satu nilai output, sedangkan function hanya mengembalikan satu nilai output. Sintaks dari sebuah function adalah sebagai berikut :
Function <NamaFunction> (parameter) : <TipeData>;
<DeklarasiLokal>
Begin
   <pernyataan>
   ---
   <pernyataan>
End;

Parameter dari suatu function adalah hanya parameter input. Parameter ini dapat lebih dari satu, dapat juga tanpa parameter sama sekali. <TipeData> adalah untuk menyatakan tipe data dari nama function. Hal ini dinyatakan karena nama dari function  berfungsi sebagai output. Oleh karena itulah function hanya mengembalikan satu nilai output. Untuk mengakses atau memanggil sebuah function sintaksnya sebagai berikut :
<NamaVariabelPenerima> := <NamaFunction> (parameter);

Dapat dilihat dalam sintaks pemanggilan bahwa nama variabel penerima tidak dituliskan didalam kurung sebagai parameter seperti dalam user procedure. Hal inilah yang menun-jukkan perbedaan lain antara function dengan user procedure.


Pada diatas menunjukkan contoh dari sebuah function untuk menghitung faktorial dalam rumus kombinasi. Function diberi nama Faktor2 dengan tipe data Real. Parameter (input) yang hanya satu diberi nama N dengan tipe data Integer. Tipe data parameter dan nama function disesuaikan dengan data input dan output. Nama function dan parameter diberi kebebasan kepada pembuat program, tetapi ketentuannya sama dengan memberikan nama variabel. Satu pernyataan yang harus dibuat pada bagian akhir dari suatu function yaitu mempertukarkan hasil perhitungan dari suatu function dengan nama function. Dalam hal ini adalah Faktor2 := Fak.
Untuk memanggil function tersebut dari event procedure Button2Click adalah :

X := Fakor2(N);
Y := Fakor2(N-R);
Z := Fakor2(R);

Dapat dilihat dari pemanggilan tersebut bahwa nama variabel penerima yang ditulis terlebih dahulu dalam hal ini X, lalu operator pemberian, kemudian nama function dan parameternya didalam kurung. Alur pemanggilan ini adalah variabel N akan mengirimkan nilainya ke parameter function, lalu hasil perhitungan function diterima variabel penerima X dari nama function.
Pemanggilan seperti diatas dapat disederhanakan sebagai berikut :

C := Faktor2(N)/(Faktor2(N-R)*Faktor2(R));

sehingga variabel penerima X, Y, Z bisa tidak digunakan, dan menghemat memori. Maka dalam contoh menghitung kombinasi walaupun kita dapat menggunakan user procedure atau funtion, lebih efisien menggunakan function.
Jadi untuk membuat suatu subrutin kita dapat menggunakan function atau user procedure namun sebaiknya kita dapat melihat mana yang lebih efisien. Tetapi ada kalanya kita tidak dapat menggunakan function misalnya kalau output yang dibutuhkan lebih dari satu.


Create : Abednego,S.T



Array dan Subrutin Procedure dan Function Delphi 7 4.5 5 Meta Aksara Dev Selasa, 16 Mei 2017 Pada bab ini akan membahas mengenai array dan subrutin. Subrutin terdiri dari dua, yaitu procedure dan function. Pada dasarnya bentuk p...


Tidak ada komentar:

Posting Komentar

Diberdayakan oleh Blogger.
J-Theme