Fungsi adalah sebuah blok perintah yang menjalankan tugas tertentu. Setiap program yang dibuat menggunakan bahasa C, setidaknya mempunyai satu fungsi, yaiu fungsi main
. Tujuan utama membuat fungsi adalah agar source code lebih mudah diatur, terlihat rapi dan jika ada penggunaan perintah-perintah yang sama, tidak perlu penulisan ulang, tinggal panggil fungsinya saja.
Struktur fungsi
tipe_data nama_fungsi(tipe_data parameter_1, tipe_data parameter_2, ..., tipe_data parameter_n) { //badan fungsi }
tipe_data
di depan nama_fungsi
adalah jenis data yang akan kembalikan oleh sebuah fungsi, bisa berupa tipe data primitif (int
, char
, float
, double
, dsb), struct
, pointer atau void
(jika fungsi tersebut tidak mengembalikan nilai). Setelah itu ada nama_fungsi
, nama yang digunakan untuk memanggil sebuah fungsi. Aturan penulisan nama fungsi sama seperti aturan penulisan variabel. Parameter digunakan untuk melewatkan data yang ada di luar fungsi ke dalam sebuah fungsi. Parameter ini bersifat opsional, tidak perlu ditulis jika tidak ada nilai yang akan dilewatkan ke dalam fungsi.
Contoh
#include <stdio.h> int tambah(int a, int b) { return (a + b); } int main() { //memanggil fungsi tambah dan menyimpan nilai balik fungsi ke variabel hasil int hasil = tambah(1, 2); printf("%d\n", hasil); return 0; }
Fungsi tambah
adalah fungsi yang menjumlahkan dua buah nilai yang dilewatkan ke fungsi tersebut, yaitu a
dan b
, dan mengembalikan hasil penjumlahan nilai dari kedua variabel tersebut ke fungsi tambah
dan disimpan ke dalam variabel hasil
yang ada di fungsi main
.
Contoh lain
#include <stdio.h> struct data { char nama[20]; int umur; char alamat[100]; char no_telepon[20]; }; //fungsi cetakData bertipe void karena tidak mengembalikan nilai void cetakData(struct data data_siswa[5], int banyak_data) { for(int i = 0; i < banyak_data; ++i) { printf("--------------------------------\n"); printf("nama: %s\n", data_siswa[i].nama); printf("umur: %d\n", data_siswa[i].umur); printf("alamat: %s\n", data_siswa[i].alamat); printf("nomor telepon: %s\n", data_siswa[i].no_telepon); printf("--------------------------------\n"); } } int main() { struct data data_siswa[5]; for(int i = 0; i < 5; ++i) { printf("nama: "); gets(data_siswa[i].nama); printf("umur: "); scanf("%d", &data_siswa[i].umur); while(getchar() != '\n'); //flush buffer printf("alamat: "); gets(data_siswa[i].alamat); printf("nomor telepon: "); gets(data_siswa[i].no_telepon); printf("\n"); } //memanggil fungsi cetakData cetakData(data_siswa, 5); return 0; }
Dari contoh di atas, dapat dilihat bahwa kita tidak repot jika ingin mencetak data_siswa
karena tinggal panggil fungsi cetakData
. Bahkan fungsi yang kita buat dapat dipanggil berkali-kali jika dibutuhkan.
Perhatikan kembali kedua contoh di atas, fungsi yang kita buat harus ditulis sebelum fungsi main. Jika fungsi ditulis setelah fungsi main, maka ketika compile akan mendapatkan peringatan dari compiler. Untuk menulis fungsi setelah fungsi main, maka kita harus membuat prototype fungsi tersebut sebelum main, seperti contoh di bawah.
#include <stdio.h> //prototype fungsi int tambah(int a, int b); int main() { //memanggil fungsi tambah dan menyimpan nilai balik fungsi ke variabel hasil int hasil = tambah(1, 2); printf("%d\n", hasil); return 0; } int tambah(int a, int b) { return (a + b); }
Jadi, prototype fungsi itu berupa tipe data fungsi, nama fungsi dan parameternya (kalau ada).
Very soon this site will be famous among all blogging and site-building people, due to it’s fastidious articles
or reviews