Anda di halaman 1dari 19

MAKALAH

ALGORITMA DASAR DAN PEMROGRAMAN

FUNGSI & REKURSI

Untuk Memenuhi Salah Satu Tugas


Mata Kuliah Algoritma Dasar dan Pemrograman
Dosen Pengampu: Muhammad Hasbi, S.T., M.T.

Disusun Oleh:

Anugrah Priyo Sya’Bandi (NIM: 3201716029)

PROGRAM STUDI D3 TEKNIK INFORMATIKA


JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI PONTIANAK
2017/2018
KATA PENGANTAR

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.

Pontianak, 24 Desember 2017


Penyusun,

Anugrah Priyo Sya’Bandi

i
DAFTAR ISI

KATA PENGANTAR ................................................................................................................ i


DAFTAR ISI..............................................................................................................................ii
BAB 1 PENDAHULUAN ...................................................................................................... 1
1.1 Latar Belakang ............................................................................................................ 1
1.2 Rumusan Masalah ....................................................................................................... 1
1.3 Tujuan.......................................................................................................................... 1
1.4 Manfaat........................................................................................................................ 2
BAB 2 PEMBAHASAN ............................................................................................................ 3
2.1 Pengertian dan Defenisi Fungsi(function)................................................................... 3
2.2 Tujuan Pembuatan Fungsi(function) .......................................................................... 4
2.3 Mendeklarasikan Fungsi ............................................................................................. 4
2.4 Pengertian dan defenisi Rekursi .................................................................................. 6
2.5 Proses Rekursi ............................................................................................................. 7
2.6 Contoh Masalah dan penyelesaiannya ........................................................................ 9
BAB 3 PENUTUP .................................................................................................................. 15
3.1 Kesimpulan................................................................................................................ 15
3.2 Saran .......................................................................................................................... 15
DAFTAR PUSTAKA .............................................................................................................. 16

ii
BAB 1
PENDAHULUAN

1.1 Latar Belakang


tidak mungkin dalam pembuatan program untuk menyelesaikan permasalahan yang
sangat besar dibuat dengan script yang terdiri dari banyak baris, oleh karena itu dibutuhkan
modul untuk membuat potongan-potongan program yang lebih kecil agar lebih mudah untuk
ditangani dibanding dengan program yang terdiri dari banyak baris, dan Modul program ini
disebut fungsi (function),
didalam pembuatan program pada umumnya ditemukan suatu teknik atau cara yang
memanggil dirinya sendiri secara langsung ataupun tidak, dan proses pemanggilannya itu
disebut Rekursi. Masalah yang dapat diselesaikan secara rekursif adalah masalah
yang dibagi menjadi satu atau lebih masalah-masalah serupa yang lebih kecil.

1.2 Rumusan Masalah


1) Apa pengertian dan defenisi fungsi(function) & rekursi dalam pemrograman?
2) Bagaimana proses rekursi dalam pemrograman ?
3) Apa tujuan pembuatan fungsi dalam pemrograman?
4) Bagaimana mendeklarasikan fungsi dengan bahasa pemrograman pascal ?
5) Bagaimana contoh permasalahan yang terdapat unsur fungsi , dan contoh
permasalahan yang terdapat unsur rekursi , dan juga penyelesaiannya dalam 4
langkah pemrograman?

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

2.1 Pengertian dan Defenisi Fungsi(function)


Fungsi adalah kumpulan program kecil yang dikumpulkan untuk mempermudah
pekerjaan pembuatan program karena dapat dipakai berkali – kali tanpa harus menuliskan
ulang kodenya lagi. Fungsi digunakan untuk memecah program sehingga mudah dibaca,
dimengerti dan diperiksa ulang.
Sama halnya dengan Procedure, function diakses dengan memanggil namanya. Fungsi
juga dapat mengandung daftar parameter formal. Parameter pada fungsi yang selalu digunakan
hanya parameter masukkan. Parameter Masukkan pada fungsi berarti parameter tersebut
merupakan masukkan yang digunakan oleh fungsi tersebut untuk menghasilkan nilai.
Bentuk Umumnya :
 Function < Nama Function >: < Tipe data > ;
 Function < Nama procedure > ( < Daftar parameter > ) : < Tipe data >;
Fungsi diakses dengan cara memanggil namanya dari program utama, diikuti dengan
daftar parameter actual. Karena fungsi menghasilkan nilai, maka nilai tersebut dapat
diperlakukan dengan dua cara, yaitu :
1) Nilai yang dikembalikan oleh fungsi ditampung di dalam sebuah peubah yang
bertipe sama dengan fungsi.
2) Nilai yang dikembalikan oleh fungsi dapat langsung dimanipulasi.
Fungsi juga merupakan bagian program yang terpisah mirip dengan prosedur, tetapi ada
beberapa perbedaannya. Fungsi dapat berupa fungsi standar (sudah tersedia dalam Pascal) atau
fungsi dibuat sendiri. Bila pemakai membuat sendiri, maka harus dideklarasikan terlebih
dahulu.

3
4

2.2 Tujuan Pembuatan Fungsi(function)


 Memudahkan dalam pembuatan program.
 Menghemat ukuran program.
 Menguraikan tugas pemrograman rumit menjadi langkah-langkah yang lebih
sederhana atau kecil.
 Mengurangi duplikasi kode (kode yang sama ditulis berulang-ulang) dalam program.
 Dapat menggunakan kode yang ditulis dalam berbagai program yang berbeda.
 Memecah program besar menjadi kecil sehingga dapat dikerjakan oleh programmer-
programmer atau dipecah menjadi beberapa tahap sehingga mempermudah
pengerjaan dalam sebuah projek
 Menyembunyikan informasi dari user sehingga mencegah adanya perbuatan iseng
seperti memodifikasi atau mengubah program yang kita buat
 Meningkatkan kemampuan pelacakan kesalahan, jika terjadi suatu kesalahan kita
tinggal mencari fungsi yang bersangkutan saja dan tak perlu mencari kesalahan
tersebut di seluruh program.

2.3 Mendeklarasikan Fungsi


Pada prinsipnya, Fungsi hampir sama dengan Prosedur. Perbedaannya adalah bahwa
fungsi memiliki tipe data sedangkan prosedur tidak memiliki tipe data. Artinya bahwa sebuah
fungsi dapat mengembalikan nilai sesuai dengan tipenya ketika menerima panggilan.
Bentuk umum fungsi:
FUNCTION Nama_Fungsi
(parameter input : tipe;
var parameter output :tipe): Tipe Fungsi

 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

 Variabel Dalam Fungsi


1) Variabel Global
Variabel global merupakan variabel yang dapat digunakan atau dipanggil oleh
semua fungsi. Variabel global ini juga dapat digunakan jika ada variabel yang
digunakan pada beberapa fungsi/prosedur. Hal ini betujuan untuk menghemat
penulisan, karena tidak perlu lagi berkali – kali menuliskan variabel yang sama
pada beberapa fungsi/prosedur. Pendeklarasian untuk veriabel global dilakukan
sebelum fungsi main.

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

 Contoh Program yang memakai fungsi(function)


Fungsi juga memakai variabel saat dieksekusi, namun mempunyai kemampuan untuk
menghasilkan nilai pada procedure atau program yang memanggilnya.
Perhatikan contoh berikut ini:

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.

2.4 Pengertian dan defenisi Rekursi


Rekursif berarti suatu proses yang memanggil dirinya sendiri. Dalam rekursif sebenarnya
terkandung pengertian prosedur atau fungsi. Perbedaannya adalah bahwa rekursif bisa
memanggil ke dirinya sendiri, tetapi prosedur atau fungsi harus dipanggil lewat pemanggil
prosedur atau fungsi. Rekursif merupakan teknik pemrograman yang penting, dan beberapa
bahasa pemrograman modern mendukung keberadaan proses rekursif ini.
7

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.

2.5 Proses Rekursi


Untuk memahami proses rekursif yang terjadi dalam sebuah fungsi rekursif, perhatikan
contoh sederhana di bawah ini. Contoh di bawah ini menyajikan satu fungsi untuk menghitung
harga pangkat suatu nilai bilangan bulat misalnya 35, berdasarkan hubungan rekurens seperti
dijelaskan diatas, maka proses rekursif akan tampak pada gambar berikut ini:
8

Gambar: Ilustrasi Penghitungan pangkat secara rekursif

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.

Gambar: Ilustrasi Algoritma dari perhitungan diatas


9

2.6 Contoh Masalah dan penyelesaiannya


a) Fungsi tanpa parameter
Semua proses dilakukan di dalam fungsi yaitu input data, proses data , dan output
data, contoh deklarasi :
Function nama_fungsi: tipe data fungsi; {tanpa parameter}

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;

{bagian program utama}


begin
clrscr;
hmtn; {program utama, memanggil fungsi hmtn}
readln;
end.
11

b) Fungsi dengan parameter input


Fungsi ini hanya menggunakan parameter formal input yang bertugas menerima
data yang dikirim kedalam fungsi, bentuk deklarasinya seperti berikut:
Function nama_fungsi (parameter input:tipe): tipe fungsi;

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

4) Menulis coding program


program fungsi_parameter_input;
uses crt;
function rt(r1,r2,r3:real):real; {variable formal}

{bagian fungsi}
begin
rt:=1/(1/r1+1/r2+1/r3)
end;
var R1,R2,R3:integer; {variable lokal}
begin

{bagian program utama}


clrscr;
writeln('====== program menghitung hambatan paralel =======');
write('masukan nilai r1 ='); readln(R1);
write('masukan nilai r2 ='); readln(R2);
write('masukan nilai r3 ='); readln(R3);
writeln;
writeln('======== output =========');
writeln;
writeln('nilai hambatan r1 = ',R1,' ohm');
writeln('nilai hambatan r2 = ',R2,' ohm');
writeln('nilai hambatan r3 = ',R3,' ohm');
writeln('total hambatan = ',rt(r1,r2,r3):0:10,' ohm');
readln;
end.

c) Fungsi dengan parameter output


Fungsi ini hanya menggunakan parameter output. Perlu diperhatikan bahwa
parameter output didahului oleh kata kunci var.
Function nama_fungsi (var parameter output:tipe): tipe fungsi;

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

4) Menulis coding program


program fungsi_parameter_output;
uses crt;
var n_total:real; {variable global}
function t_nilai (var rata :real):real;
var n_ipa,n_mtk,n_ips : real; {variable local}
{bagian fungsi}
begin
writeln('====== program menghitung rata-rata siswa ======');
writeln;
write('masukan nilai ipa = '); readln(n_ipa);
write('masukan nilai mtk = '); readln(n_mtk);
write('masukan nilai ips = '); readln(n_ips);

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

4) Menulis Coding Program


program coba;
uses crt;
var i:integer; {variable global}
function cetak:integer;

{bagian fungsi }
begin
writeln(i);
i:=i+1;
if i<=10 then
cetak:=cetak;
end;

{bagian program utama}


begin
clrscr;
i:=1;
cetak;
readln;
end.
BAB 3
PENUTUP

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).

Simon P, https://spatabang.blogspot.co.id/2015/05/fungsi-dalam-pascal.html, (diakses 24


desember 2017).

Galank, S.T, http://otnaites.blogspot.co.id/2015/03/makalah-function-algoritma-


pemrograman.html , (diakses 24 desember 2017).

Anda mungkin juga menyukai