FUNGSI



Fungsi adalah pemetaan suatu domain ke range berdomain tertentu. Fungsi adalah 

sebuah transformasi akibat pemetaan suatu nilai (dari “domain”) ke nilai lain 

(dalam “range”). Secara algoritmik, sebuah fungsi akan menerima suatu harga yang 

diberikan lewat parameter formal bertype tertentu (jika ada) dan menghasilkan suatu 

nilai sesuai dengan domain yang didefinisikan dalam spesifikasi fungsi. 

Dalam penulisannya, fungsi diberi nama, dan parameter formal yaitu harga masukan 

yang juga diberi nama dan dijelaskan typenya. Fungsi harus didefinisikan dalam 

kamus. 

 

Fungsi yang didefinisikan dapat “dipanggil” untuk dieksekusi lewat namanya, dan 

dengan diberikan parameter aktualnya. 

Penjelasan lebih rinci tentang parameter akan diberikan pada bagian Prosedur. 

Contoh Fungsi: 

Fungsi f(x) dengan satu parameter x dalam matematika yang didefinisikan sebagai: 

 f(x) = x2 + 3x – 5 

jika x = 4 maka f(x) akan menghasilkan 23 

jika x = 1 maka f(x) akan menghasilkan -1 

f(x,y) = x2 + 3xy - 5y – 1 adalah fungsi dengan dua parameter x dan y 

jika diberi harga x = 0 dan y = 0 maka f(x,y) akan menghasilkan -1 

jika diberi harga x = 1 dan y=0 maka f(x,y) akan menghasilkan 0 

Notasi Algoritmik untuk Fungsi 

Pendefinisian/Spesifikasi Fungsi


dengan syarat : 
- List parameter input boleh tidak ada (kosong), dalam hal ini di fungsi tidak 
membutuhkan apa-apa dari pemakainya untuk menghasilkan harga. 
- Jika list parameter input (parameter formal) tidak kosong, minimal mengandung 
satu nama, maka nama tersebut harus berupa nama informasi beserta type-nya. 
- Instruksi “terakhir” yang harus ada pada fungsi harus merupakan pengiriman 
harga yang dihasilkan oleh fungsi (dituliskan seperti pada notasi di atas, dengan 
type hasil boleh type dasar atau type terstruktur). Type hasil boleh dinyatakan oleh 
suatu nama type. Dengan catatan, bahwa instruksi “terakhir” belum tentu 
dituliskan pada baris terakhir, misalnya jika hasil merupakan sebuah nilai yang 
dikirimkan berdasarkan analisis kasus. 
Pemanggilan Fungsi

Catatan : 
1. Pada waktu pemanggilan terjadilah asosiasi antara parameter formal/input dengan 
parameter aktual sesuai dengan urutan penulisan dalam list nama parameter input. 
2. List parameter input dapat berupa nama informasi atau nama konstanta yang telah 
terdefinisi dalam kamus atau konstanta; dapat juga berupa harga konstanta, atau 
harga yang dihasilkan oleh suatu ekspresi atau fungsi. 
3. List parameter aktual harus sama jumlah, urutan dan type-nya dengan list 
parameter formal pada pendefinisian fungsinya. 
4. Harga yang dihasilkan oleh fungsi dapat didefinisikan domainnya dengan lebih 
rinci. 
5. Pada akhir dari eksekusi fungsi, harga yang dihasilkan oleh fungsi dikirimkan ke 
pemakainya. 
6. Fungsi boleh dipakai oleh program utama, prosedur atau fungsi lain.

Fungsi Terdefinisi 
Fungsi terdefinisi adalah fungsi yang sudah diberikan oleh sistem dan tinggal dipakai 
(dipanggil). Fungsi terdefinisi selalu diberikan daftar dan spesifikasinya (domain + 
range). 
Fungsi terdefinisi untuk Melakukan Konversi Tipe: 
Seringkali, dibutuhkan konversi dari bilangan riil menjadi integer atau sebaliknya. 
Maka didefinisikan duabuah fungsi konversi bilangan numerik sebagai berikut:





Contoh 1: FUNGSI KONVERSI 
Persoalan: 
Tuliskanlah sebuah fungsi, yang mengkonversikan harga karakter angka (nol sampai 
dengan 9) menjadi harga numerik sesuai dengan karakter yang tertulis. 
Contoh : '0' → 0 
 '8' → 8 
Spesifikasi: 
Fungsi KarakterToInteger: 
Domain : x : character ['0'..'9'] ) 
Range : integer [0..9] 
Proses : Analisis kasus terhadap x, untuk setiap harga x diasosiasikan integer 
yang sesuai.

Contoh 2: APAKAH HURUF 'A' 
Pemetaan karakter ke type boolean 
Persoalan : 
 Tuliskanlah fungsi IsAnA yang mentest apakah sebuah karakter yang diberikan 
kepadanya adalah sebuah huruf 'A'. Harga yang dihasilkan adalah benar jika huruf itu 
'A', salah jika huruf itu bukan 'A'. 
Contoh : IsAnA('A') → true
 IsAnA ('X' ) → false
 IsAnA ('Y') → false
Spesifikasi : 
Fungsi IsAnA : 
Domain : x (karakter) 
Range : boolean 
Proses : menghasilkan true jika x adalah ‘A’, false jika tidak

Contoh 3: HITUNG METER+CM 
Pemetaan type dasar ke type bentukan 
Persoalan: 
Tuliskanlah sebuah fungsi, yang jika diberikan sebuah angka Cm yang menyatakan 
panjang dalam cm, akan menghasilkan pasangan harga <x1, x2> sesuai dengan rumus 
ukuran metris (i m = 100 cm).sehingga x1*100+x2 = Cm 
Contoh : F(100) = <1,0> 
 F(355 ) = < 3, 55> 
Spesifikasi : 
Fungsi KonversiCm : 
Domain : Cm : integer 
Range : pasangan harga integer 
Proses : menghitung Meter dan SisaCm sehingga Cm = 100* Meter + SisaCm


Catatan:
1. Terjemahan teks fungsi pada contoh ini ke dalam beberapa bahasa pemrograman 
tidak “sederhana”, bahkan tidak mungkin dapat dilakukan secara langsung. 
2. Cobalah menterjemahkan funsgi di atas ke dalam bahasa Pascal, C dan Ada. Akan 
terlihat perbedaan yang sangat besar di antara ketiganya. 
Contoh 4: UBAHDANPERIKSAKAR 
Persoalan: 
Tuliskanlah algoritma yang membaca sebuah karakter dan mengubahnya menjadi 
integer yang sesuai dengan karakter itu jika karakter yang dibaca adalah antara '0' dan 
'9' dengan memanfaatkan funsgi KarakterToInteger yang pernah dibuat. . Jika bukan 
di dalam daerah harga nol dan sembilan, maka harus dituliskan pesan yang berbunyi : 
'Bukan angka' . 
Spesifikasi: 
Input : CC karakter 
Output : menuliskan integer [0..9] sesuai dengan karakter yang dibaca, jika karakter 
['0'..'9'], atau “Bukan angka” jika CC bukan angka 
Proses : Konversi dari karakter ke integer, jika CC ['0'..'9'] 
Dengan catatan fungsi konversi adalah seperti terdefinisi pada contoh 1. 
Catatan: 
Tes yang dilakukan sebelum pemanggilan fungsi KarakterToInteger membuat fungsi 
KarakterToInteger cukup mengembalikan nilai yang terdefinisi. Jika domain dari nilai 
masukan fungsi tidak hanya mencakup karakter angka, maka di dalam fungsi harus 
didefinisikan suatu nilai yang diluar definisi angka.

Contoh 5: HITUNGFUNGSI 
Definisi dan pemanggilan fungsi 
Persoalan: 
Tuliskanlah algoritma yang membaca 3 bilangan bulat (a,b,c), dan menghitung: 
6*( ax2 + bx +c) untuk x = 1 
Spesifikasi: 
Input : a, b, c bilangan bulat, koefisien persamaan kuadrat, x = 1 
Output : Fx 
Proses : menghitung Fx = 6*( ax2 + bx +c) 
 menuliskan hasil

Contoh 6: MAX2 dan MAX3 
a. Tuliskanlah fungsi MAX2, yang menerima masukan dua buah bilangan real dan 
menghasilkan sebuah bilangan real, yaitu salah satu di antara nilai dua buah 
bilangan tersebut yang terbesar. 
b. Kemudian dengan memakai fungsi MAX2, tuliskanlah sebuah fungsi lain 
MAX3 yang menghasilkan nilai terbesar dari tiga buah bilangan real. 
Contoh : MAX2(1,2) ) → 2 
 MAX2(10,2 ) →10 
 MAX3(1,2,3) adalah MAX2(MAX2(1,2),3) → 3 
 MAX3(10,2,3) adalah MAX2(MAX2(10,2),3) → 10 }

Catatan : 
1. Bagi yang sudah mengikuti kuliah “Pemrograman Fungsional”, dapat dilihat 
bahwa teks program di atas sangat selaras dengan ekspresi fungsional yang pernah 
dipelajari. 
2. Pemanggilan fungsi pada konteks prosedural adalah aplikasi fungsi pada konteks 
fungsional. 
Contoh-7: PENANGGALAN DAN NEXTDAY 
Pemetaan type bentukan ke type bentukan 
Didefinisikan type terstruktur untuk mewakili hari seperti dalam kalender yang 
kita pakai sehari-hari: 
type DATE : < DD : Tanggal, MM : Bulan, YY : Tahun > 
Konstanta : <5,12,1990> { artinya 5 Desember 1990} 
 <25,2,2001> { artinya 25 Februari 2001} 
Tuliskanlah algoritma untuk : 
- Membaca sebuah tanggal dan sebuah kode bahasa penulisan (1 = Inggris, 2 = 
Indonesia, 3 = Perancis),

Menuliskan tanggal keesokan harinya sesuai dengan kode bahasa: 
Dalam bahasa Inggris , DATE ditulis dalam: Bulan, '/',Tanggal.'/',Tahun 
Dalam bahasa Indonesia, DATE ditulis dalam: Tanggal, '-',Bulan.'-',Tahun 
Dalam bahasa Perancis DATE ditulis dalam: Tanggal, '/',Bulan.'/',Tahun 
- Proses menghitung hari esok dilakukan oleh sebuah fungsi NextDay yang 
menerima masukan sebuah tanggal dan menghasilkan tanggal keesokan harinya. 
Contoh pemanggilan dan hasil fungsi diberikan sebagai berikut: 
NextDay(<13,4,1990>,1) → 4 /14/1990 
NextDay(<30,1,1990>,2) → 31-1-1990 
 NextDay(<31,12,1990>,3) → 1/1/1991




Komentar

Postingan populer dari blog ini

UDINUS