Algoritma Pemrograman
Pertemuan Ke-9
(Fungsi)
Sub Pokok Bahasan
Pendefinisian Fungsi
Pemanggilan Fungsi
Pendahuluan
Seperti halnya prosedur, fungsi juga
merupakan modul program yang
mempunyai tujuan spesifik. Fungsi
adalah modul program yang
memberikan/mengembalikan (return)
sebuah nilai dan tipe tertentu (tipe
Pendefinisian Fungsi
• Sebagaimana halnya dengan prosedur, fungsi diakses
dengan memanggil namanya. Selain itu, fungsi juga
dapat mengandung daftar parameter formal.
Parameter pada fungsi selalu merupakan parameter
masukan. Jenis parameter masukan pada fungsi
disebabkan oleh kenyataan bahwa parameter pada
fungsi merupakan masukan yang digunakan oleh
fungsi tersebut untuk menghasilkan nilai
• Struktur fungsi sama dengan struktur algoritma yang
sudah dikenal sebelumnya:
– ada bagian header yang berisi nama fungsi dan spesifikasi fungsi
• Tipe hasil menspesifikasikan tipe nilai yang
diberikan oleh fungsi. Nilai yang diberikan
oleh fungsi dapat bertipe dasar maupun
bertipe bentukan. Sebagaimana halnya pada
prosedur, parameter fungsi pada fungsi tidak
selalu harus ada
• Semua nama peubah/konstanta yang hanya
berlaku di dalam fungsi saja dideklarasikan di
dalam bagian Deklarasi (lokal). Nama yang
didefinisikan di dalam bagian Deklarasi fungsi
hanya dikenal dan berlaku di dalam fungsi
yang bersangkutan saja, fungsi lain atau
Pemanggilan Fungsi
• Fungsi diakses dengan cara memanggil
namanya dari program pemanggil, diikuti
dengan daftar parameter aktual (bila ada)
• Karena fungsi menghasilkan nilai, maka
nilai tersebut dapat ditampung dalam
•
Contoh:
Fungsi untuk menghasilkan nilai
F(x) = x
2+ 2x – 3, x Є R. Algoritmanya adalah
sebagai berikut:
function F(input x:real) → real
{ Mengembalikan nilai F(x) = x2 + 2x – 3,
x Є R } DEKLARASI
{ tidak ada } DESKRIPSI:
return x*x + 2*x – 3
Keterangan :
• F adalah nama fungsi, tipenya real
• x adalah parameter (by value) formal
• Di dalam badan fungsi, nilai yang dihasilkan oleh fungsi dikembalikan (return) ke titik pemanggilan:
• Fungsi dapat dipanggil dari program utama atau dari modul program lain. Di dalam DEKLARASI program pemanggil harus dideklarasikan prototip atau header fungsi yang digunakan. Pendeklarasian prototip fungsi di dalam DEKLARASI
diperlukan agar fungsi tersebut dikenal oleh program pemanggil serta cara fungsi dipanggil.
• Berikut ini adalah contoh sebuah program pemanggil fungsi F
Algoritma CONTOH_PEMANGGILAN_FUNGSI
{ Program utama untuk pemanggilan fungsi F } DEKLARASI
x : real
function F(input x:real) → real
{ Mengembalikan nilai F(x) = x2 + 2x – 3, x Є R } return x*x + 2*x - 3
DESKRIPSI:
write(‘---‘) write(‘ x F(x) ‘)
write(‘---‘)
x ← 10.0
while x ≤ 15.0 do write(x,‘ ‘,F(x))
x ← x + 0.5 endwhile
Program CONTOH_PEMANGGILAN_FUNGSI; var
x : real;
function F(x : real) : real;
begin
F := x*x + 2*x - 3
end;
begin
writeln(‘---‘);
writeln(‘ x F(x) ‘);
writeln(‘---‘); x := 10.0;
while x <= 15.0 do begin
writeln(x:6:2,‘ ‘,F(x) :6:2); x := x + 0.5;
end;
writeln(‘---‘);
Penggunaan Prosedur
atau Fungsi
• Dalam pemrograman modular, seringkali muncul pertanyaan apakah modul akan dibuat sebagai prosedur atau fungsi.
Fungsi lebih tepat digunakan apabila modul program
mengembalikan sebuah nilai, sementara prosedur digunakan bila modul menghasilkan efek netto dari (satu atau)
sekumpulan aksi. Namun dalam praktek, seringkali
perbedaan antara keduanya tidak jelas, karena sebuah prosedur dapat juga ditulis sebagai fungsi, demikian pula sebaliknya. Pemilihan apakah sebuah modul direalisasikan
sebagai fungsi atau prosedur bergantung pada kebutuhan dan seni memprogram
• Fungsi dapat dikonversikan sebagai prosedur dengan
menyatakan nilai yang dikembalikan oleh fungsi tersebut sebagai parameter keluaran prosedur. Demikian juga,
(a) Mengubah fungsi menjadi prosedur
• Sebagai contoh
adalah fungsi
Maks
dan
program utama
untuk menentukan
bilangan terbesar
di antara dua
buah bilangan
Algoritma MENENTUKAN_MAKSIMUM
{ Program utama yang memanggil fungsi MAKS untuk menentukan nilai maksimum dari dua buah bilangan buat a dan b. }
DEKLARASI (* Program Utama *)
a, b : integer
function Maks(input a,b : integer)→ integer { Mengembalikan harga terbesar dari a dan b } DEKLARASI (* Fungsi *)
{ tidak ada }
DESKRIPSI : (* Fungsi *) if a ≥ b then
return a
else
return b
endif
Program CONTOH_PEMANGGILAN_FUNGSI; var
a : integer; b : integer;
function Maks(a, b : integer) : integer;
begin
if a >= b then
Maks := a
else
Maks := b;
end;
begin
write(‘Masukkan nilai a ? ‘); readln(a);
write(‘Masukkan nilai b ? ‘); readln(b);
writeln(‘Nilai yang terbesar adalah : ‘,Maks(a,b));
• Di samping
sebagai fungsi,
fungsi
Maks
juga
dapat dituliskan
sebagai prosedur
TentukanMaks
dan program
utama seperti
algoritma berikut
ini:
Algoritma MENENTUKAN_MAKSIMUM{ Program utama yang memanggil prosedur TentukanMaks untuk menentukan nilai maksimum dua buah bilangan bulat a dan b }
DEKLARASI (* Program Utama *)
a, b, m : integer
procedure TentukanMaks(input a,b : integer, output
maks : integer)
{ Menentukan nilai terbesar dari a dan b } { K.awal: a dan b sudah terdefinisi nilai }
{ K.akhir: maks berisi nilai terbesar dari a atau b } DEKLARASI (* Prosedur *)
{ tidak ada }
DESKRIPSI : (* Prosedur *) if a ≥ b then
maks ← a
else
maks ← b
endif
Program CONTOH_PEMANGGILAN_FUNGSI; var
a : integer; b : integer; m : integer;
procedure Tentukan_Maks(a,b:integer; var maks:integer);
begin
if a >= b then
Maks := a
else
Maks := b;
end;
begin
write(‘Masukkan nilai a ? ‘); readln(a);
write(‘Masukkan nilai b ? ‘); readln(b);
Tentukan_Maks(a,b,m);
writeln(‘Nilai yang terbesar adalah : ‘,m);
(b) Mengubah
prosedur
menjadi fungsi
• Berikut adalah
contoh mengubah
prosedur menjadi
fungsi dengan
meninjau prosedur
menghitung nilai
rata-rata dari
sejumlah data
bilangan bulat
sebagai berikut:
Algoritma MENGHITUNG_RATA_RATA{ Program utama untuk menghitung nilai rata-rata N buah bilangan bulat yang dibaca dari piranti masukan} DEKLARASI (* Program Utama *)
Ndata : integer
rerata : real
procedure HitungRataRata(input N : integer, output
rata : real)
{ Menghitung nilai rata-rata N buah bilangan bulat } { K.awal: N berisi banyaknya bilangan bulat, N > 0 } { K.awal: rata berisi rata-rata seluruh bilangan } DEKLARASI (* Prosedur *)
x : integer { data bilangan bulat yang dibaca dari piranti masukan }
k : integer { pencacah banyak bilangan }
jumlah : integer { jumlah seluruh bilangan } DESKRIPSI : (* Prosedur *)
jumlah ← 0 { inisialisasi penjumlah } for k ← 1 to N do
read(x)
jumlah ← jumlah + x
endfor
Program MENGHITUNG_RATA_RATA; var
Ndata : integer; rerata : real;
procedure HitungRataRata(N : integer; var rata : real);
var
x, k, jumlah : integer;
begin
jumlah := 0;
for k := 1 to N do begin
write(‘Nilai x ? ‘); readln(x);
jumlah := jumlah + x;
end;
rata := jumlah/N;
end;
begin
writeln(‘Menghitung rata-rata N buah bilangan bulat’);
write(‘Masukkan banyaknya data ? ’);
readln(Ndata);
HitungRataRata(Ndata,rerata);
Prosedur
HitungRataRata
memiliki satu
parameter keluaran, karena itu ia dapat
diubah menjadi fungsi. Apabila ditulis
sebagai fungsi, maka parameter keluaran
rata tidak diperlukan lagi, karena nilai
Algoritma MENGHITUNG_RATA_RATA
{ Program utama untuk menghitung nilai rata-rata N buah bilangan bulat yang dibaca dari piranti masukan. }
DEKLARASI (* Program Utama *)
Ndata : integer
rerata : real
function RataRata(input N : integer) → real
{ Menghitung nilai rata-rata N buah bilangan bulat yang dibaca dari piranti masukan. Rata-rata bilangan merupakan nilai yang dikembalikan oleh fungsi } DEKLARASI (* Fungsi *)
x : integer { data bilangan bulat }
k : integer { pencacah banyak bilangan }
jumlah : integer { jumlah seluruh bilangan } DESKRIPSI : (* Fungsi *)
jumlah ← 0 { inisialisasi penjumlah } for k ← 1 to N do
read(x)
jumlah ← jumlah + x
endfor
return jumlah/N { rata-rata seluruh bilangan } DESKRIPSI : (* Program Utama *)
read(Ndata)
Program CONTOH_PEMANGGILAN_FUNGSI; var
Ndata : integer; rerata : real;
function RataRata(N : integer) : real;
var
x, k, jumlah : integer;
begin
jumlah := 0;
for k := 1 to N do begin
write(‘Nilai x ? ‘); readln(x);
jumlah := jumlah + x;
end;
RataRata := jumlah/N;
end;
begin
writeln(‘Menghitung rata-rata N buah bilangan bulat’);
write(‘Masukkan banyaknya data ? ’); readln(Ndata);
writeln(‘Nilai rata-rata = ‘,RataRata(Ndata))
Summary
• Fungsi adalah modul program yang memberikan/mengembalikan (return) sebuah nilai dan tipe tertentu (tipe dasar atau tipe
bentukan)
• Struktur fungsi terdiri dari bagian header, bagian Deklarasi dan badan fungsi
• Semua nama peubah/konstanta yang hanya berlaku di dalam fungsi saja dideklarasikan di dalam bagian Deklarasi (lokal).
Nama yang didefinisikan di dalam bagian Deklarasi fungsi hanya dikenal dan berlaku di dalam fungsi yang bersangkutan saja,
fungsi lain atau program utama tidak dapat menggunakannya • Fungsi diakses dengan cara memanggil namanya dari program
pemanggil, diikuti dengan daftar parameter aktual (bila ada) • Fungsi dapat dikonversikan sebagai prosedur, demikian juga
Daftar Pustaka
•
Jogiyanto HM [1989].
Turbo Pascal
, Andi
Offset, Yogyakarta.
•
Noor Ifada, ST [2005].
Diktat Matakuliah
Algoritma Pemrograman,
Hibah Kompetisi
A1, Jurusan Teknik Informatika, Universitas
Trunojoyo.
•
Rinaldi Munir [2003].
Algoritma dan
Pemrograman dengan Pascal dan C edisi