Disusun Oleh:
Puji dan syukur saya panjatkan kepada Allah SWT atas rahmat dan karunia-nya
sehingga makalah yang berjudul “Fungsi & Rekursi” dapat terselesaikan dengan baik.
Makalah ini merupakan salah satu tugas yang diberikan oleh dosen pengampu mata kuliah
Algoritma Dasar dan Pemrograman kepada mahasiswa Program Studi Teknik Informatika
Jurusan Teknik Elektro sebagai salah satu bagian dari komponen penilaian akademis.
Makalah ini saya membahas terkait fungsi & rekursi dalam algoritma dan
pemrograman. Demikian Makalah ini kami buat, semoga bermanfaat.
i
DAFTAR ISI
ii
BAB 1
PENDAHULUAN
1.3 Tujuan
Tujuan dari dibuatnya makalah ini adalah untuk mengetahui defenisi dan pengertian
fungsi & rekursi , bentuk rekursi, proses rekursi , cara mendeklarasikan fungsi dengan bahasa
pemrograman pascal, tujuan pembuatan fungsi , dan juga contoh permasalahan yang terdapat
unsur fungsi dan contoh permasalahan yang terdapat unsur rekursi, dan juga penyelesainnya
dalam 4 langkah pemrograman.
1
2
1.4 Manfaat
Manfaat dari makalah ini adalah mahasiswa dapat mengerti konsep dasar dari fungsi dan
rekursi serta mengerti cara mendeklarasikan fungsi , dan dapat mengerti cara menyelesaikan
masalah yang terdapat unsur fungsi dan rekursi.
BAB 2
PEMBAHASAN
3
4
Parameter
Parameter adalah nama variabel yang dideklarasikan pada bagian header Fungsi.
1) Parameter aktual (argumen) adalah parameter yang digunakan ketika fungsi itu
dipanggil dalam suatu blok program. Jadi isi dari parameter aktual ini adalah
nilai, jadi nilai dari isi paramter aktual ini yang akan mengganti parameter
formal.
2) Parameter formal adalah parameter yang terdapat atau di deklarasikan pada
bagian fungsi
5
Aturan Parameter
Aturan yang harus diperhatikan antara parameter aktual dan parameter formal:
1) Jumlah parameter aktual pada pemanggilan Fungsi harus sama dengan jumlah
parameter formal pada header Fungsinya.
2) Tiap parameter aktual harus bertipe sama dengan tipe parameter formal yang
bersesuaian
2) Variabel Lokal
Variabel lokal adalah variabel yang hanya dapat digunakan atau dipanggil dalam
satu prosedur saja. Variabel lokal ini hanya dikenal oleh fungsi tempat variabel
tersebut dideklarasikan dan tidak ada inisialisasi secara otomatis (saat variabel
dibuat, nilainya tidak menentu). Pendeklarasian variabel lokal dilakukan setelah
fungsi main.
Deklarasi Fungsi
FUNCTION Nama_Fungsi
(parameter_input:tipe;
Var parameter_output : tipe);
Var …… {Deklarasi Variabel Lokal}
Begin
<pernyataan dalam Fungsi>;
End;
6
Program FungsiPenjumlahan;
uses crt;
Function hitung(Var A,B : integer):integer;
begin
hitung:=A+B;
end;
Var x,y : integer;
Begin
Writeln('Silahkan masukan Angka (1-10):');
write('Nilai X : ');readln(x);
write('Nilai Y : ');readln(y);
writeln;
write(x,' + ',y,' = ',hitung(x,y));
readln;
end.
Pada program diatas saya menggunakan fungsi hitung bertipe integer dengan
parameter A dan B sebagai variabel lokal. Kemudian saya juga menggunakan variabel
x dan y sebagai variabel global untuk menyimpan nilai input. Cara pemanggilan fungsi
pun sama dengan prosedur yaitu dengan cara mengetikan nama fungsi diikuti
parameter dan diakhiri dengan titik koma.
Pemanggilan prosedur atau fungsi ke dirinya sendiri bisa berarti proses yang berulang
yang tidak bisa diketahui kapan akan berakhir. Dalam pemakaian sehari-hari, rekursi
merupakan teknik pemrograman yang berdaya guna untuk digunakan pada pekerjaan
pemrograman dengan mengeksperisikannya ke dalam suku-suku dari program lain dengan
menambahkan langkah-langkah sejenis. Contoh paling sederhana dari proses rekursi adalah
menghitung nilai faktorial dari bilangan bulat. Nilai faktorial, secara rekursif dapat ditulis
sebagai berikut :
0! = 1
N! = N x (N-1)!, Untuk N > 0
yang secara notasi pemrograman bisa ditulis sebagai:
FAKTORIAL (0) = 1 1)
FAKTORIAL (N) = N * FAKTORIAL (N-1) 2)
Persamaan 2) di atas merupakan contoh hubungan rekurens (recurrence relation), yang
berarti bahwa nilai suatu fungsi dengan argumen tertentu bisa dihitung dari fungsi yang sama
dengan argumen yang lebih kecil. Persamaan 1) yang tidak bersifat rekursif, disebut nilai awal.
Setiap fungsi rekursi paling sedikit mempuyai 1 (satu) nilai awal; jika tidak, fungsi tersebut
tidak bisa dihitung secara eksplisit.
Proses rekursi akan selesai , ini terletak pada kondisi pernyataan if-nya. Jika pernyataan
if menjadi FALSE maka akan menghentikan proses rekursi Prinsif dan proses rekursi:
1. Memiliki kasus non rekursi(sederhana)
2. Kasus awal diarahkan menuju kasus sederhana
3. Mendefinisikan proses rekursi
Fungsi yang didefinisikan secara rekursif , Langkah-langkah untuk mendefinisikan
fungsi dengan domain bilangan cacah:
1. Langkah basis: Definisikan nilai fungsi pada saat nol.
2. Langkah rekursif: Berikan aturan untuk mencari nilai fungs iuntuk setiap bilangan
bulat berdasarkan nilai fungsi pada bilangan bulat yang lebih kecil.
Definisi seperti itu disebut rekursif atau definisi induktif.
Dari definisi tersebut, statemen pertama menunjukkan nilai yang utama dari fungsi, dan
statemen kedua menunjukan perulangan penurunan dari n yaitu n-1. Selain fungsi, prosedur
juga dapat dilakukan operasi rekursif. Sebagai contoh penggunaan proses rekursif pada
prosedur adalah prosedur pencarian biner (binary search). Dalam beberapa hal rekursif kurang
efisien dibandng proses iterasi.
Dalam artian pemecahan secara rekursif dan secara iterasi mempunyai keuntungan dan
kekurangan yang bisa saling diperbandingkan. Adalah cukup sulit untuk menentukan mana
yang paling sederhana, paling jelas, paling efisien dan paling mudah dibanding yang lain. Bisa
ditambahkan, pemilihan secara iteratif maupun rekursif boleh dikatakan merupakan
kesenangan seorang programmer sesuai dengan keinginannya.
1) Mendefenisikan Masalah
Buatlah program untuk menghitung hambatan total seri . untuk nilai r1,r2,dan r3
diinputkan oleh user.
2) Solusi
Untuk mencari hambatan total(rt), digunakan rumus rt:=r1+r2+r3, rt adalah
hambatan total, variable menggunakan variable local yaitu : r1,r2,r3,rt dengan tipe
data integer
3) Flowchart
10
4) Menulis program
program fungsi_tanpa_parameter;
uses crt;
function hmtn:integer;
var rt,r1,r2,r3:integer; {variable local}
begin
{bagian fungsi}
writeln('======== program hambatan seri ============');
writeln;
write('masukan r1 = '); readln(r1);
write('masukan r2 = '); readln(r2);
write('masukan r3 = '); readln(r3);
rt:=r1+r2+r3;
writeln;
writeln('====== output =========');
writeln;
writeln('hambatan r1 = ',r1,’ ohm’);
writeln('hambatan r2 = ',r2,’ ohm’);
writeln('hambatan r3 = ',r3,’ ohm’);
writeln('total hambatan = ',rt,’ ohm’)
end;
1) Mendefenisikan masalah
Buatlah program untuk menghitung hambatan total paralel . untuk nilai r1,r2,dan
r3 diinputkan oleh user.
2) Solusi
Untuk mencari hambatan total paralel, digunakan rumus rt=1/(1/r1+1/r2+1/r3), rt
adalah hambatan total parallel, dua jenis variable , yaitu variable local dan variable
formal yang terdapat didalam fungsi, variable local yaitu: R1,R2,R3 dengan tipe
data integer, dan variable formal yaitu : rt,r1,r2,r3 dengan tipe data real.
3) Flowchart
12
{bagian fungsi}
begin
rt:=1/(1/r1+1/r2+1/r3)
end;
var R1,R2,R3:integer; {variable lokal}
begin
1) Mendefenisikan Masalah
buatlah program untuk mencari rata-rata siswa smp, dimana nilai diambil dari tiga
mata pelajaran yaitu: ipa,mtk,dan ips, nilai diinputkan oleh user.
2) Solusi
Untuk mencari rata-rata nilai, digunakan rumus yaitu rata=(n_ipa+n_mtk+n_ips)/3,
variable yang digunakan ada 3 jenis yaitu variable local , global, dan formal, variable
global yaitu: n_total dengan tipe data real, dan variable local yaitu: n_ipa, n_mtk dan
n_ips dengan tipe data integer, dan yang terakhir variable formal yaitu: rata dengan
tipe data real.
13
3) Flowchart
rata:=(n_ipa+n_mtk+n_ips)/3;
end;
{bagian program utama}
begin
clrscr;
writeln;
t_nilai(n_total);
writeln('nilai rata-rata = ', n_total:0:2);
readln;
end.
14
d) Rekursi
1) Mendefenisikan masalah
Buatlah program untuk menampilkan bilangan 1 sampai 10
2) Solusi
Tentukan logika rekursif untuk menampilkan bilangan 1 sampai 10, logika yang
digunakan yaitu if atau dengan statement keputusan, untuk variable menggunakan
variable global yaitu I dengan tipe data integer.
3) Flowchart
{bagian fungsi }
begin
writeln(i);
i:=i+1;
if i<=10 then
cetak:=cetak;
end;
3.1 Kesimpulan
Fungsi dan rekursi merupakan bagian yang sangat penting dalam pembuatan program
karena fungsi dan rekursi dapat membuat algoritma menjadi lebih efisien, dan dapat
memecahkan suatu permasalahan dengan lebih cepat dan tepat, maka oleh karena itu
penggunaan fungsi dan rekursi sangat dibutuhkan guna memberi efisiensi dalam pembuatan
algoritma.
3.2 Saran
Penggunaan fungsi dan rekursi sebaiknya dapat di gunakan dengan sesederhana
mungkin, agar,mendapatkan hasil algoritma yang efisien dan tepat sehingga dapat
mempermudah kita dalam memahami alur dari suatu algoritma yang dibuat
15
16
DAFTAR PUSTAKA
Condrokacon, https://condrokacon.wordpress.com/2013/05/31/function-pada-pascal/,
(diakses 24 desember 2017).
Asepyenot, https://asepsumpena09.wordpress.com/2014/11/08/definisi-fungsi-rekursif-
dan-contohnya/, (diakses 24 desember 2017).