Anda di halaman 1dari 12

FUNGSI

Fungsi

Fungsi adalah sub program yang


memberikan/mengembalikan sebuah nilai dari tipe
tertentu. Sebagaimana halnya prosedur, fungsi
diakses dengan memanggil namanya.
Fungsi juga dapat mengandung daftar parameter
formal. Parameter formal pada fungsi selalu berupa
parameter masukan, karena parameter pada fungsi
merupakan masukan yang digunakan oleh fungsi
tersebut untuk menghasilkan nilai

Deklarasi fungsi
function NamaFungsi(daftar parameter
masukan) :tipe data
deklarasi
deskripsi
Bagian Pernyataan

Pemanggilan Fungsi

Fungsi diakses dengan cara memanggil namanya


dari program utama atau sub program lain, diikuti
dengan daftar parameter aktual (jika ada).
Karena fungsi menghasilkan nilai, maka nilai
tersebut dapat ditampung dalam suatu variabel
(peubah) yang bertipe sama dengan tipe fungsi.
(i). peubah := NamaFungsi(daftar parameter aktual);
atau dimanipulasi langsung seperti :
(ii) write(NamaFungsi(daftar parameter aktual));
(iii) if NamaFungsi(daftar parameter aktual) > 0 then....
(iv) y := 2* NamaFungsi(daftar parameter aktual) +3;

Contoh
Function Maks(X,Y : integer) : integer
Deskripsi
if X > Y then Maks X
else Maks Y
end if
Pemanggilan :

Write(Maks(3,6))
ZMaks(4,5)
If Maks(A,B) > 0 then
ZMaks(A,B) * 2

REKURSI

Suatu subprogram tidak hanya bisa memanggil sub


program lain, tetapi juga bisa memanggil dirinya
sendiri. Cara ini dikenal dengan sebutan rekursi.
Rekursi banyak dipakai pada persoalan yang dapat
dipecahkan secara induktif. Misalnya untuk
menghitung faktorial.
1,

jika m 0

1x 2 x3 x 4....xm

jika m 0

m!

Pemecahan secara rekursif :


0!=1
(penghentian rekursi)
jika m > 0, m ! = m x (m-1) ! (langkah induksi)

Fungsi Rekursif
Fungsi

yang memanggil dirinya sendiri


disebut fungsi rekursif. Contoh fungsi rekursif
untuk menghitung faktorial.

Function FaktorialR(m:byte) : longint


deskripsi
If m = 0 then FaktrialR 1
else FaktorialR m * FaktorialR(m-1)
End if

Latihan
function move(input n : integer):integer;
deklarasi
if (n=1) then move 1 else
move 2*move(n-1)+1
end if
Berapa move(8) ?

Latihan
function Z (input ki, ka : integer):integer
deskripsi
if ki<ka then
Z Z(1,((ki+ka) div 2)-1) +
Z( ((ki+ka) div 2 ) +1, ka)+1
else Z 1
end if
Berapakah nilai Z(1,7) ?

Prosedur Rekursif
Procedure Balik (X : integer)
Deklarasi
Sisa : integer
Deskripsi
write (X mod 10)
Sisa X div 10;
If Sisa <> 0 Then Balik(Sisa)
End if
Jika prosedur di atas dipanggil dengan Balik(1024) apa
hasilnya ?

Latihan
Procedure Star(input t : integer)
deskripsi
if (t<2) then write (*)
else
star (t-1)
star (t-2)
end if
Berapa kali simbol * dituliskan jika prosedur dipanggil
dengan perintah Star(6) ?

Latihan
1. Lihat kembali Algoritma Euclidean untuk
menghitung nilai FPB. Buatlah prosedur
untuk menghitung nilai FPB berdasarlan
Algoritma Euclidean, secara rekursif.
2. Buatlah fungsi rekursif dan non rekursif
untuk menghitung nilai XN, dengan X
bilangan riil dan N bilangan bulat

Anda mungkin juga menyukai