Blok fungsi hampir sama dengan blok prosedur, hanya fungsi harus dideklarasikan dengan tipenya.
Deklarasi Tipe menunjukkan tipe hasil dari fungsi.
FUNCTION Nama_Fungsi(parameter):type;
Function Faktorial(Var Fak, Hasil :integer) : integer;
Function Pangkat(x,y : real) : real;
Contoh Fungsi :
Function Hitung(var A,B : integer): integer;
Begin
Hitung := A + B;
End;
Var
X,Y : integer;
Begin
write(‘Nilai X ? ‘); readln(X);
write(‘Nilai Y ? ‘); readln(Y);
writeln(X,’ + ‘,Y,’ = ‘,Hitung(X,Y));
End.
Perbedaan Fungsi dg Prosedur
Pada fungsi, nilai yang dikirimkan balik terdapat pd nama fungsinya, kalau pada prosedur nilai yang dikirim pada parameter yang dikirim secara acuan.
Sehingga nama fungsi digunakan untuk menampung hasil yang akan dikirimkan dari fungsi
Hitung := A + B;
Karena nilai balik berada di nama fungsi, maka fungsi tersebut dapat langsung digunakan untuk dicetak hasilnya.
writeln(X,’ + ‘,Y,’ = ‘,Hitung(X,Y));
atau nilai fungsi dipindahkan ke variabel lain
Hasil:= Hitung(X,Y);
writeln(X,’ + ‘,Y,’ = ‘,Hasil);
Sedang pada prosedur, nama prosedur tidak dapat digunakan langsung, yang dapat langsung digunakan adalah parameternya yang mengandung nilai balik.
Fungsi Tanpa Parameter
Suatu fungsi yang tanpa parameter berarti nilai balik yang dihasilkannya merupakan nilai yang sudah pasti.
Parameter digunakan untuk memberikan input pada fungsi dan fungsi akan memberikan hasil balik sesuai dengan parameter yang diberikan.
Hasil dari fungsi tanpa parameter tidak dapat diatur dari modul yang menggunakannya, karena tidak ada parameter yang dikirimkan
Fungsi tanpa parameter ini jarang digunakan
Contoh :
Function Deteksi : Boolean;
Begin
Deteksi := True;
End;
Begin
writeln(Deteksi);
End.
Fungsi tersebut jarang digunakan karena nilai dapat langsung ditentukan dimodul yang menggunakannya sbb :
Begin
Writeln(True);
End.
Parameter Dalam fungsi
Sama dengan prosedur, parameter dalam fungsi dapat dikirimkan secara nilai (by value) atau secara acuan (by reference).
Function Hitung (A,B : integer) : integer;
Function Hitungan (var A,B:integer):integer;
Pengiriman Secara Nilai
Function Besar(x,y : integer) : integer;
Begin
if x>y then
besar := x
else
besar:=y;
End;
Var
a,b : integer;
Begin
write(‘ Nilai pertama : ‘); readln(a);
write(‘Nilai kedua : ‘); readln(b);
write(‘Nilai yang besar adalah : ‘,Besar(a,b));
End.
Pengiriman Secara Acuan
Function Hitung (var a,b,c:integer):integer;
Begin
Hitung := a+b;
c := a * b;
End;
Var
x,y,z : integer;
Begin
write(‘ Nilai x : ‘); readln(x);
write(‘Nilai y : ‘); readln(y);
writeln(x,’ + ‘,y,’ = ‘,Hitung(x,y,z));
writeln(x,’ * ‘,y,’ = ‘,z);
End.
Baca Juga
Tidak ada komentar:
Posting Komentar