Cara Membuat Procedure

Cara Membuat Procedure

A. Letak Procedure
Procedure dibuat di dalam program menempati bagian kepala program, kepala program
berisi deklarasi atau pengenalan baik pengenalan variabel, tipe, unit, konstanta, procedure
dan function. Sedangkan badan program berisi program utama atau pokok program. Untuk
lebih jelasnya dapat dilihat pada struktur lengkap program pascal sebagai berikut:

Program Nama_program;
Uses ...... {CRT/WinCrt, Dos, WinDos, dll.);
Const
Nama_konstanta = ....;
Type
Nama_Tipe = .......;
Var
Nama_Variabel : .....; Kepala program
Procedure Nama_Procedure;
Var nama_var : .....;
begin
----
----
end;

BEGIN
------
------ Badan program
------
END.

B. Input Output Procedure
Procedure mirip seperti program sehingga juga mempunyai input dan / atau output. Input
procedure bisa langsung dimasukkan pada waktu procedure dipanggil, atau bisa melalui
parameter / variabel. Output procedure bisa berupa action yang dilakukan oleh procedure
atau bisa melalui parameter / variabel.
Sebagai contoh:
1. Procedure BacaData
Input : data yang langsung dimasukkan pada waktu procedure tersebut dipanggil.
Output : ariabel array X dan variabel banyaknya data n.
Sehingga kepala procedurenya adalah:
Procedure BacaData(Var X : larik;Var n : integer);

2. Procedure TentukanFrekuensi
Input : variabel array X (data ada yang sama) dan jumlah data n.
Output : variabel array Y (data berbeda semua) dan F (frekuensi) serta variabel
banyaknya data yang berbeda semua m.
Sehingga kepala procedurenya adalah :
Procedure TentukanFrekuensi(X:larik;n:integer;Var Y,F:larik;
Var m : integer);
Dari contoh di atas terlihat bahwa parameter pada procedure ada yang menggunakan kata
Var, ada yang tidak menggunakannya. Jika variabelnya merupakan input saja maka tidak
menggunakan Var, akan tetapi jika variabelnya merupakan ouput maka menggunakan
Var.

C. Badan Procedure
Badan procedure berisi perintah utama dari procedure tersebut, sehingga harus tahu
algoritma dari procedure tersebut. Sebagai contoh:

Type larik = array[1..1000] of integer;
Var X : Laik; n : integer;
Procedure BacaData(Var X : larik; Var n : integer);
Var i : integer;
Begin
Write(‘ Masukkan banyak data : ‘); Readln(n);
For i:= 1 to n do
Begin
Write(‘ masukkan data ke : ‘, i ,’ = ‘);Readln(X[i]);
End;
End;
Procedure UrutkanData(Var X : larik; n : integer);
Var i,j,C : integer;
Begin
For i:= 1 to n-1 do
For j:=i+1 to n do
If X[i] > X[j] then
Begin
C := X[i];
X[i] := X[j];
X[j] := C;
End;
End;
Procedure TentukanFrekuensi(X:larik;n:integer;Var Y,F:larik;
Var m : integer);
Var i,j : integer;
Begin
For i:= 1 to n do F[i]:=1;
X[n+1] :=X[n]+1; j:=1;
For i:=1 to n do
If X[i] = X[i+1] then F[j] := F[j] + 1
else
begin
Y[j] := X[i]; j := j + 1;
End;
m := j -1;
end;
Procedure MaximumFrekuensi(F: Larik;m: integer;Var Max: integer);
Var i : integer;
Begin
Max := X[1];
For i:= 2 to n do
If F[i] > Max then Max := F[i];
End;
Procedure CetakModus(Y,F : Larik;m,max:integer);
Var i : integer;
Begin
If Max = 1 then writeln(‘Tidak ada modusnya’)
Else
begin
Writeln(‘Modusnya adalah : ‘);
For i:= 1 to m do
If F[i] = Max then writeln(Y[i]);
End;
End;
Secara lengkap program untuk menentukan modus dari n data adalah sebagai berikut:
Program Modus;
Uses Crt;
Type larik = array[1..1000] of integer;
Var X,Y,F : Laik; m,n,max : integer;
Procedure BacaData(Var X : larik;Var n : integer);
Var i : integer;
Begin
Write(‘ Masukkan banyak data : ‘); Readln(n);
For i:= 1 to n do
begin
Write(‘ masukkan data ke : ‘, i ,’ = ‘);Readln(X[i]);
End;
End;
Procedure UrutkanData(Var X : larik; n : integer);
Var i,j,C : integer;
Begin
For i:= 1 to n-1 do
For j:=i+1 to n do
If X[i] > X[j] then
Begin
C := X[i]; X[i] := X[j]; X[j] := C;
End;
End;
Procedure TentukanFrekuensi(X:larik;n:integer;Var Y,F:larik;
Var m : integer);
Var i,j : integer;
Begin
For i:= 1 to n do F[i]:=1;
X[n+1] :=X[n]+1; j:=1;
For i:=1 to n do
If X[i] = X[i+1] then F[j] := F[j] + 1
else
begin
Y[j] := X[i]; j := j + 1;
End;
m := j -1;
end;
Procedure MaximumFrekuensi(F: Larik;m: integer;Var Max: integer);
Var i : integer;
Begin
Max := X[1];
For i:= 2 to n do
If F[i] > Max then Max := F[i];
End;
Procedure CetakModus(Y,F : Larik;m,max:integer);
Var i : integer;
Begin
If Max = 1 then writeln(‘Tidak ada modusnya’)
Else
Begin
Writeln(‘Modusnya adalah : ‘);
For i:= 1 to m do
If F[i] = Max then writeln(Y[i]);
End;
End;
Begin
BacaData(X,n) ;
UrutkanData(X,n);
TentukanFrekuensi(X,n,Y,F,m);
MaximumFrekuensi(F,m,Max);
CetakModus(Y,F,m,max);
End.

Ada 2 jenis pemograman modular yang dibahas dalam praktikum ini, yaitu :
1. Procedure (Prosedur)
2. Function (Fungsi)

1 Procedure

Deklarasi:
Procedure NamaProcedure(DaftarParameter) ;
{Deklarasi}
Begin
.............
.............
.............
End;

Pemanggilan Procedure:
Suatu procedure bukan merupakan program yang berdiri sendiri, sehingga tidak dapat
dieksekusi secara langsung. Untuk itu suatu procedure memerlukan sebuah akses pada
program utama / modul lain yang befungsi sebagai pemanggil. Sedangkan cara
pemanggilannya adalah dengan menuliskan nama procedurenya berikut parameternya (jika
ada).

Hal-hal yang berhubungan dengan procedure:
Ada beberapa hal yang berhubungan dengan penulisan sebuah procedure program yaitu:
1. Variabel global dan variabel lokal
Variabel global adalah variabel yang dapat dikenali diseluruh bagian program biasanya
variabel ini merupakan variabel yang dideklarasikan pada deklarasi
program umum.
Variabel lokal adalah variabel yang dikenal pada lingkup yang lebih sempit dari pada
variabel global.
2. Parameter
Ada 2 (dua) parameter yang berlaku dalam sebuah procedure, yaitu:
a. Parameter Formal
Yaitu parameter yang dideklarasikan mengikuti pendeklarasian program utama.
b. Paramete Aktual
Yaitu parameter yang dituliskan mengikuti pemanggilan procedure.
Aturan antara parameter formal dan parameter aktual:
1) Banyaknya parameter aktual harus sama dengan banyaknya parameter formal
2) Tiap-tiap parameter aktual harus bertipe sama dengan parameter formal yang
bersesuaian
3) Tiap-tiap parameter aktual harus diekspresikan yang sesuai dengan parameter formal.
Pengiriman parameter:
a. Pengiriman parameter secara nilai (by Value)
- Tiap-tiap parameter dalam procedure utama akan berisi nilai yang dikirim oleh
parameter aktual dan bersifat lokal di procedure
- Pengiriman nilai parameter secara by value merupakan pengiriman searah,
artinya hanya dari parameter aktual ke parameter formal
- Perubahan parameter formal tidak mempengaruhi terhadap nilai parameter aktual

Contoh :

Procedure Hitung(A,B,C : integer) ;
Begin
B: = A;
C: = A + B ;
Writeln(A,B,C);
End;
Var X, Y, Z : integer ;
Begin
Readln(X); Readln(Y); Readln(Z);
Hitung(X,Y,Z); Writeln(X,Y,Z) ;
Readln;
End.

Keterangan:
Misalkan dimasukkan nilai dari X=5, Y=7 dan Z=15 maka nilai ini akan dikirim ke
parameter formal pada procedure yaitu A, B, C sehingga nilai awal A=5, B=7 dan
Z=15. Setelah melalui proses maka hasil outputnya adalah bahwa nilai X=5, Y=7 dan
Z=15. Sebab apapun yang diproses pada procedure tidak akan mempengaruhi nilai
dari parameter aktual X, Y, Z.
b. Pengiriman parameter secara acuan (by Reference)
- Merupakan pengiriman dua arah yaitu dari parameter aktual ke parameter formal
dan dari parameter formal ke parameter aktual sebagai hasil output dari
procedure
- Perubahan nilai pada parameter formal mempengaruhi pada parameter aktual
- Dicirikan dengan pengunaan deklarasi VAR , pada parameter procedurenya.

Contoh:

Procedure Hitung(Var A,B,C : integer);
Begin
B: = A;
C: = A + B ;
Writeln(A,B,C) ;
End;
Var X,Y,Z : integer;
Begin
Readln(X) ; Readln(X) ; Readln(X) ;
Hitung(X,Y,Z) ; Writeln(X,Y,Z) ;
Readln ;
End.

Keterangan :
Misalkan dimasukkan nilai dari X=5, Y=8 dan Z=15 maka nilai ini akan dikirim ke
parameter formal pada procedure yaitu A, B, C sehingga nilai awal A=5, B=8 dan
C=15. Setelah melalui proses maka hasil outputnya adalah bahwa nilai X=A=5,
Y=B=A=5 dan Z=C=10. Sebab apapun yang diproses pada procedure akan
mempengaruhi nilai dari parameter aktual X, Y, Z.

Contoh program yang menggunakan procedure:
Program KOMBINASI;
uses crt;
var f1,f2,f3:longint;
n,r,delta:integer;
c: real;
Procedure facto(n:integer; var f:longint);
var i:integer;
begin
f:=1;
for i:=1 to n do
f:= f * i;
end;
{===============================PROGRAM UTAMA============================}
Begin
clrscr;
gotoxy(12,3);
write('Kita akan menghitung nilai kombinasi dari suatu angka');
gotoxy(19,4);
writeln('Yang mempunyai rumus : rCn = n!/(r!(n-r)!)'); gotoxy(20,5);
writeln('Nilai r harus lebih kecil/sama dengan n');
writeln;gotoxy(28,6);
write('Masukkan nilai n :',' ');readln(n);
writeln;gotoxy(28,8);
write('Masukkan nilai r :',' ');readln(r);
facto(n,f1);
facto(r,f2);
delta:=(n-r);
facto(delta,f3);
c:= f1/(f2*f3);gotoxy(30,10);
write('Hasilnya :',' ',c:2:0);
readln;
end.

Hasil Run Program:
Kita akan menghitung nilai kombinasi dari suatu angka
Yang mempunyai rumus : rCn = n!/(r!(n-r)!)
Nilai r harus lebih kecil/sama dengan n
Masukkan nilai n : 6
Masukkan nilai r : 2
Hasilnya : 15

2 Function

Deklarasi:
Function NamaFungsi(NamaParameter) : TipeData ;
{Deklarasi}
Begin
...........
...........
...........
End;

Struktur dari fungsi ini hampir sama dengan procedur hanya saja function harus
dideklarasikan beserta tipe datanya dan fungsi ini adalah mengembalikan nilai sehingga tipe
data dalam sebuah function menunjukkan tipe dari data akhir dari deklarasi sebuah fungsi.
Suatu fungsi dapat dipanggil dengan menggunakan beberapa cara, misalkan nama fungsinya
adalah Rata, maka ia akan dapat dipanggil dengan menggunakan:
Rata2 : = Rata(vector,Ukuran) ;
X := Y + Rata(vector,Ukuran) ;
Write(‘Nilai rata-ratanya = ‘, rata(vector,ukuran));

Perbedaan prinsip antara procedure dengan function:
1. Pada function nilai yang dikirim balik terdapat nama fungsinya (karena nama fungsi
digunakan untuk menampung nama fungsi yang terakhir)
2. Function dapat langsung ditampikan hasilnya. Misal : writeln(Hitung(X,Y));

Catatan:
Untuk keterangan yang lain yang meliputi macam variabel, parameter, aturan antar
parameter dan cara pengiriman parameter sama dengan yang ada pada procedure, sehingga
tidak perlu dituliskan lagi.

Contoh Program yang menggunakan fungsi:

PROGRAM FAKTORIAL;
Uses crt;
Var i, N, Hsl : integer;
Function Fakto(N:integer):integer;
Var Fak: integer;
Begin
Fak := 1;
for i:=1 to N do
Fak := Fak * i;
Fakto := Fak;
end;
Begin
clrscr;
write('Faktorial berapa yang anda ingin hitung : ');
readln(N);
writeln('Hasil perhitungan : ',Fakto(N));
readln;
end.

Hasil Run Program :
Faktorial berapa yang anda ingin hitung : 5
Hasil perhitungan : 120

Dalam turbo Pascal telah dikenal ada beberapa tipe data yang kemudian dapat digolongkan
menjadi 2 (dua) kelompok besar tipe data yaitu tipe data standard dan tipe data terstruktur.
Pada laporan ini akan dibahas mengenai tipe-tipe data terstruktur yang meliputi tipe data
array, tipe data record, dan tipe data set.

REKURSI
Salah satu keistimewaan yang dimiliki oleh Turbo Pascal adalah bahwa pascal dapat
melakukan suatu proses yang dinamakan sebagai proses Rekursi, yaitu proses untuk
memanggil dirinya sendiri. Dalam procedure dan function proses ini bisa berarti proses
berulang yang tidak diketahui kapan akan berakhirnya.

Contoh paling sederhana dari proses rekursi adalah Proses mencari faktorial dari suatu.
Faktorial N = N! = N (N–1) (N–2)……………..3.2.1
N! = N (N–1)! , untuk N>0
N! = N (N–1) (N–2)!
Jika ditulis dalam program menjadi :
Faktorial(0) = 1;
Faktorial(N) = N (N–1)!
Ini merupakan sebuah hubungan rekurens yang berarti nilai suatu fungsi dengan argument
tertentu dapat dihitung dengan menggunakan fungsi yang sama hanya saja dengan argument
yang lebih kecil.

Contoh program:

PROGRAM FAKTORIAL;
Uses crt ;
Var i , N , Hsl : integer
Function Fakto(N:integer):integer ;
Var Fak: integer ;
Begin
if (N=0) or (N=1) then
Fakto:= 1
else
Fakto:= N*Fakto(N-1) ;
end;
Begin
clrscr;
write('Faktorial berapa yang anda ingin hitung : ') ;
readln(N) ;
writeln('Hasil perhitungan : ',Fakto(N)) ;
readln ;
end .

Hasil Run Program:
Faktorial berapa yang anda ingin hitung : 5
Hasil perhitungan : 120
Dari program diatas maka notasi Fakto(N-1) yang digunakan untuk memanggil program
sebelumnya dinamakan sebagai Pemanggil atau rekursi.


..... SEMOGA BERMANFAAT ....


0 komentar to "Cara Membuat Procedure"

Posting Komentar

Whar_Wher Jalanan. Diberdayakan oleh Blogger.

Postingan Populer

Retainers