Mengenal Fungsi dalam Bahasa C
Sub-program dalam bahasa C dikenal dengan istilah Fungsi. Umumnya program C berisi kode baru yang ditulis sendiri dan fungsi() yang sudah tersedia seperti strlen(); strcmp();
dari library <string.h>, printf();
scanf();
dari library <stdio.h>, atau abs();
sqrt();
dari library <math.h>, dll. Fungsi-fungsi ini sangat membantu kita dalam memecahkan masalah tertentu karena fungsi-fungsi ini menyediakan banyak kemampuan yang kita perlukan. Tapi apakah kalian tau seperti apa sih isi dari fungsi tersebut?
Lalu apakah bisa kita membuat fungsi sendiri yang sesuai dengan kebutuhan?
Tentu saja bisa! Glorian dapat menulis fungsi untuk menentukan tugas spesifik yang dapat digunakan berkali-kali dalam suatu program. Fungsi dipanggil melalui pemanggilan fungsi, dengan cara memanggil nama fungsi yang dibutuhkan fungsi untuk melakukan tugas yang ditentukan. Analogi umum fungsi pada pemrograman seperti bentuk manajemen hierarki. Seorang atasan (fungsi pemanggil) meminta pekerja (fungsi yang dipanggil) untuk melakukan suatu tugas dan melaporkan kembali ketika tugas tersebut telah selesai. Fungsi atasan tidak mengetahui bagaimana fungsi pekerja melakukan tugas yang ditugaskan, akan tetapi cukup memanggil nama pekerja untuk menyelesaikannya. Fungsi pekerja tersebut juga mungkin memanggil fungsi pekerja lainnya.
Gambar di atas menunjukkan analogi cara kerja fungsi. Fungsi atasan dapat memanggil beberapa fungsi pekerja secara hierarki, salah satunya fungsi Worker 1. Perhatikan bahwa Worker 1 juga bertindak sebagai fungsi atasan bagi Worker 4 dan Worker 5. Artinya, setiap fungsi dapat memanggil fungsi lainnya bahkan memanggil dirinya sendiri (rekursif) dengan cara memanggil nama fungsinya.
Deklarasi Fungsi
Untuk membuat suatu fungsi, pertama kita harus mendeklarasikannya. Cara mendeklarasikan fungsi dituliskan di atas program utama (fungsi main) dengan aturan format header:
Deklarasi Fungsi Tidak mengembalikan nilai:
void <spasi> nama_fungsi();
void hello();
Artinya: terdapat void dengan nama hello, void tidak memiliki parameter karena tidak terdapat deklarasi variabel di dalam urung tanda kurung ()
Deklarasi Fungsi mengembalikan nilai:
tipe_data <spasi> nama_prosedur();
int tambah();
Artinya: terdapat fungsi dengan nama tambah yang akan mengembalikan/return suatu nilai dengan tipe data int. Fungsi tambah tidak memiliki parameter karena tidak terdapat deklarasi variabel di dalam urung tanda kurung ()
Implementasi Fungsi
Saat kita deklarasikan suatu header fungsi, fungsi masih belum bisa digunakna karena kita belum mengisi instruksi apa yang akan ada di dalamnya. Untuk mengisi instruksinya, kita harus mengimplementasikan fungsi. Implementasi fungsi dituliskan setelah program utama (fungsi main).
Implementasi Fungsi hello():
void <spasi> nama_fungsi();
void hello(){
// badan fungsi berisi cetak "Selamat datang"
printf("Selamat datang");
};
Artinya: saat void hello dipanggil di program pemanggil, maka akan dicetak output Selamat datang.
Implementasi Fungsi tambah:
tipe_data <spasi> nama_prosedur(){ // badan fungsi }
int tambah(){
// badan fungsi
return a + b;
}
Artinya: saat fungsi tambah dipanggil, maka akan dilakukan proses penambahan variabel global a dan b dan mengembalikan hasil dari a + b menggunakan kata kunci return .
Memanggil Fungsi
Meskipun fungsi sudah dideklarasikan dan diimplementasikan, fungsi belum bisa bekerja jika tidak pernah dipanggil di program pemanggil. Untuk menjalankan fungsi caranya dengan menuliskan nama fungsinya. Berikut contoh memanggil fungsi di program utama namun pastikan fungsi sudah tersedia di file program yang sama.
// memanggil fungsi hallo
hello();
// memanggil fungsi tambah
hasil = tambah();
}
Perhatikan: saat memanggil fungsi tambah, terdapat variabel hasil yang disimpan di depan. Kenapa harus begitu?? ini karena sifat fungsi yang mengembalikan nilai (return), maka saat fungsi tambah dipanggil, dia akan memberikan suatu nilai, dan nilai ini harus disimpan di dalam variabel atau dicetak langsung.
Untuk lebih jelas, mari kita pahami berbagai jenis yang ada pada fungsi.