Jumat, 04 Maret 2011

Procedure dan Function

Penggunaan variabel yang terdapat dalam suatu prosedur atau fungsi dengan variabel induk selalu berbeda. Bagaimana jika dalam fungsi dan program induk mempunyai variabel yang sama. Variabel mana yang akan diisi bila di dalam prosedur mengisi suatu nilai ke nama variabel tersebut?
Untuk mengetahuinya coba kamu jalankan program ini



Program PnF;
Uses Crt;

Var
 A, Hasil : Integer;
 B : Real;

Function Bagi1 (A : Integer) : Real;
Var
 B : Real;
Begin
 B := 100/A;
 Bagi1 := B;
End;

Procedure Bagi2 (A : Integer; Var Hasil : Integer);
Var
 B : Real;
Begin
 B := 100/A;
 Hasil := Trunc(B);
End;

Begin
 Clrscr;
 B := 10;
 A := 2;
 Hasil := 20;
 Writeln ('Hasil Bagi dengan fungsi : ',Bagi1(A):10:2);
 Writeln('Isi B : ',B:10:2);
 Writeln('Isi A : ',A);
 Bagi2(A,Hasil);
 Writeln('Hasil Bagi dengan Prosedur : ',Hasil);
 Writeln('Isi B : ',B:10:2);
 Writeln('Isi A : ',A);
 Readln;
End


Bila dijalankan hasilnya seperti ini.

Hasil Bagi dengan fungsi : 50.00
Isi B : 10.00
Isi A : 2
Hasil Bagi dengan Prosedur : 50
Isi B : 10.00
Isi A : 2

Dari hasil tersebut diketahui bahwa variabel "A" tidak berpengaruh walau di dalam prosedur atau fungsi digunakan variabel dengan nama "A". Variabel "A" yang dioperasikan di dalam prosedur adalah variabel yang didefinisikan di dalam prosedur ataupun fungsi. Variabel "B" juga tidak berpengaruh. Variabel "Hasil" berpengaruh karena pada prosedur didefinisikan dengan kata "Var".

Dalam pembuatan prosedur maupun fungsi dapat saja memanfaatkan sesama prosedur atau fungsi. Sebagai contoh pada program kamu terdapat 2 buah prosedur atau fungsi. Prosedur atau fungsi A dapat memanggil prosedur atau fungsi B atau kebalikannya. Namun harus hati-hati agar jangan kedua prosedur atau fungsi saling memanggil sehingga tidak terdapat ujung pada pemanggilan kedua prosedur atau fungsi. Berikut ini adalah contoh program yang terdiri dari beberapa prosedur dan fungsi.

Program DPF;
Uses Crt;

Var
 A, B : Integer;

Procedure Kali10(Var X : Integer);
Begin
 X := S10Kali(X);
End;

Function S10Kali(X : Integer) : Integer;
Var
 A : Integer;
Begin
 A := A * 10;
 S10Kali := A;
End;

Begin
 Clrscr;
 A := 10;
 B := 10;
 Kali10(A);
 Writeln('Hasil Kali A dengan Sepuluh : ',A);
 Writeln('Hasil Kali B dengan Sepuluh : ',S10Kali(B));
 Readln;
End.

Bila kamu lihat, prosedur "Kali10" memanggil fungsi "S10Kali".

0 komentar:

Posting Komentar