Anda di halaman 1dari 11

Algoritma Pemrograman

Pertemuan Ke-10
(Fungsi)

:: Noor Ifada ::

S1 Teknik Informatika-Unijoyo 1

Sub Pokok Bahasan


Pendahuluan
Pendefinisian Fungsi
Pemanggilan Fungsi
Penggunaan Prosedur atau Fungsi?

S1 Teknik Informatika-Unijoyo 2

1
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 dasar atau tipe bentukan)

S1 Teknik Informatika-Unijoyo 3

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
 bagian Deklarasi
 badan fungsi

S1 Teknik Informatika-Unijoyo 4

2
Notasi algoritma untuk mendefinisikan
fungsi

function NamaFungsi(input daftar parameter formal)→


→tipe hasil
{ Spesifikasi fungsi, menjelaskan apa yang dilakukan dan yang
dikembalikan oleh fungsi. }

DEKLARASI
{ semua nama yang dipakai dalam algoritma fungsi
dideklarasikan di sini. Nama yang didefinisikan di dalam
Deklarasi lokal hanya dikenal dan dipakai di dalam fungsi
ini saja }

DESKRIPSI:
{ badan fungsi, berisi kumpulan instruksi untuk menghasilkan
nilai yang akan dikembalikan oleh fungsi }
return hasil { pengembalian nilai yang dihasilkan fungsi }

S1 Teknik Informatika-Unijoyo 5

Perihal 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 program utama tidak
dapat menggunakannya

S1 Teknik Informatika-Unijoyo 6

3
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 sebuah peubah yang bertipe
sama dengan tipe fungsi atau nilai yang dikembalikan
oleh fungsi dapat langsung dimanipulasi. Parameter
aktual dapat berupa konstanta, nama konstanta, atau
nama peubah

S1 Teknik Informatika-Unijoyo 7

Contoh 1: Fungsi untuk menghasilkan nilai F(x)= x2+2x–3, xЄR

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:
return x*x + 2*x – 3

S1 Teknik Informatika-Unijoyo 8

4
Contoh 2: Pemanggilan Fungsi F(x)= x2+2x–3, xЄR

 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
 Fungsi dari Contoh 1 dapat dipanggil untuk menampilkan tabel
nilai-nilai x dan F(x) di dalam selang [10,15] dengan ∆x = 0.5
seperti contoh berikut:

S1 Teknik Informatika-Unijoyo 9

Algoritma CONTOH_PEMANGGILAN_FUNGSI Program CONTOH_PEMANGGILAN_FUNGSI;


{ Program utama untuk pemanggilan var
fungsi F } x : real;
DEKLARASI
x : real function F(x : real) : real;
begin
function F(input x:real) → real F := x*x + 2*x - 3
{ Mengembalikan nilai F(x) = x2 + end;
2x – 3, x Є R }
return x*x + 2*x - 3 begin
writeln(‘-------------------‘);
DESKRIPSI: writeln(‘ x F(x) ‘);
write(‘-------------------‘) writeln(‘-------------------‘);
write(‘ x F(x) ‘) x := 10.0;
write(‘-------------------‘) while x <= 15.0 do
x ← 10.0 begin
while x ≤ 15.0 do writeln(x:6:2,‘ ‘,F(x) :6:2);
write(x,‘ ‘,F(x)) x := x + 0.5;
x ← x + 0.5 end;
endwhile writeln(‘-------------------‘);
write(‘-------------------‘) end.

S1 Teknik Informatika-Unijoyo 10

5
Penggunaan 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,
prosedur yang mempunyai satu buah parameter keluaran
dapat ditulis sebagai fungsi dengan menyatakan parameter
keluaran sebagai nilai yang dikembalikan oleh fungsi

S1 Teknik Informatika-Unijoyo 11

Algoritma MENENTUKAN_MAKSIMUM
(a) Mengubah { Program utama yang memanggil fungsi MAKS
untuk menentukan nilai maksimum dari dua buah
fungsi menjadi bilangan buat a dan b. }
prosedur
DEKLARASI (* Program Utama *)
a, b : integer

function Maks(input a,b : integer)→ integer


 Contoh: fungsi Maks { Mengembalikan harga terbesar dari a dan b }
dan program utama
DEKLARASI (* Fungsi *)
untuk menentukan { tidak ada }
bilangan terbesar di
antara dua buah DESKRIPSI : (* Fungsi *)
if a ≥ b then
bilangan return a
else
return b
endif

DESKRIPSI : (* Program Utama *)


read(a,b)
write(Maks(a,b))

S1 Teknik Informatika-Unijoyo 12

6
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));
end.

S1 Teknik Informatika-Unijoyo 13

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)
 Di samping sebagai { Menentukan nilai terbesar dari a dan b }
fungsi, fungsi Maks { K.awal: a dan b sudah terdefinisi nilai }
{ K.akhir: maks berisi nilai terbesar dari a atau b }
juga dapat dituliskan
sebagai prosedur DEKLARASI (* Prosedur *)
{ tidak ada }
TentukanMaks dan
program utama DESKRIPSI : (* Prosedur *)
if a ≥ b then
maks ← a
else
maks ← b
endif

DESKRIPSI : (* Program Utama *)


read(a,b)
TentukanMaks(a,b,m)
write(m)

S1 Teknik Informatika-Unijoyo 14

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

S1 Teknik Informatika-Unijoyo 15

Algoritma MENGHITUNG_RATA_RATA
{ Program utama untuk menghitung nilai rata-rata N
(b) Mengubah buah bilangan bulat yang dibaca dari piranti masukan}
prosedur menjadi DEKLARASI (* Program Utama *)
Ndata : integer
fungsi 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 }
 Contoh: prosedur { K.awal: rata berisi rata-rata seluruh bilangan }
HitungRataRata
DEKLARASI (* Prosedur *)
dan program utama x : integer { data bilangan bulat yang dibaca
untuk menghitung dari piranti masukan }
nilai rata-rata dari k : integer { pencacah banyak bilangan }
sejumlah data jumlah : integer { jumlah seluruh bilangan }
bilangan bulat DESKRIPSI : (* Prosedur *)
jumlah ← 0 { inisialisasi penjumlah }
for k ← 1 to N do
read(x)
jumlah ← jumlah + x
endfor
rata ← jumlah/N { rata-rata seluruh bilangan }
DESKRIPSI : (* Program Utama *)
read(Ndata)
HitungRataRata(Ndata,rerata)
write(rerata)

S1 Teknik Informatika-Unijoyo 16

8
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);
writeln(‘Nilai rata-rata = ‘,rerata)
end.
S1 Teknik Informatika-Unijoyo 17

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
Prosedur HitungRataRata dibaca dari piranti masukan. Rata-rata bilangan
merupakan nilai yang dikembalikan oleh fungsi }
memiliki satu parameter
DEKLARASI (* Fungsi *)
keluaran, karena itu ia dapat x : integer {data bilangan bulat}
diubah menjadi fungsi. k : integer {pencacah banyak bilangan}
Apabila ditulis sebagai jumlah : integer {jumlah seluruh bilangan}

fungsi, maka parameter DESKRIPSI : (* Fungsi *)


keluaran rata tidak jumlah ← 0 { inisialisasi penjumlah }
for k ← 1 to N do
diperlukan lagi, karena nilai read(x)
rata merupakan nilai yang jumlah ← jumlah + x
dihasilkan (return value) oleh endfor
return jumlah/N {rata-rata seluruh bilangan}
fungsi
DESKRIPSI : (* Program Utama *)
read(Ndata)
write(RataRata(Ndata))

S1 Teknik Informatika-Unijoyo 18

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

S1 Teknik Informatika-Unijoyo 19

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 prosedur
yang mempunyai satu buah parameter keluaran dapat ditulis sebagai
fungsi
S1 Teknik Informatika-Unijoyo 20

10
Daftar Pustaka

Jogiyanto HM [1989]. Turbo Pascal, Yogyakarta: Andi


Offset.
Noor Ifada [2005]. Diktat Matakuliah Algoritma
Pemrograman (Hibah Kompetisi A1), Bangkalan:
Jurusan Teknik Informatika, Universitas Trunojoyo.
Rinaldi Munir [2003]. Algoritma dan Pemrograman
dengan Pascal dan C edisi Kedua, Bandung: Informatika.

S1 Teknik Informatika-Unijoyo 21

11

Anda mungkin juga menyukai