Fungsi

Posted on   Oktober 17, 2018   |   Last Modified   Oktober 17, 2018

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.

Baca :   Pernyataan Lompatan

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


Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *