Belajar Pemrograman C #11: Mengenal Fungsi pada Bahasa C
Dalam pemrograman, fungsi sering digunakan untuk membungkus program menjadi bagian-bagian kecil.
Logika program yang ada di dalam fungsi dapat kita gunakan kembali dengan memanggilnya.
Sehingga tidak perlu menulis ulang.
Pada kesempatan ini, kita akan belajar tentang fungsi pada bahasa pemrograman C.
Mulai dari cara membuat, memanggil, hingga membuat program CRUD sederhana dengan fungsi.
Mari kita mulai…
Apa itu Fungsi?
Fungsi adalah sub-program yang bisa digunakan kembali baik di dalam program itu sendiri, maupun di program yang lain.
Contoh fungsi yang sering kita buat
adalah fungsi main()
.
Fungsi ini memang wajib ada di setiap program C karena akan dieksekusi pertama kali.
Kita juga sebenarnya bisa membuat fungsi yang lain…
Bagaimana caranya?
Silakan lanjutkan membaca:
Cara Membuat Fungsi pada Bahasa C
Fungsi pada bahasa pemrograman C dapat kita buat dengan cara seperti ini:
Fungsi biasanya akan mengembalikan sebuah nilai dari hasil prosesnya. Karena itu, kita harus menentukan tipe data untuk nilai yang akan dikembalikan.
Apabila fungsi tersebut tidak memiliki nilai
kembalian, maka kita harus menggunakan tipe void
untuk menyatakan kalau fungsi tersebut tidak
akan mengembalikan nilai apa-apa.
Contoh:
void nama_fungsi(){
printf("Ini adalah sebuah fungsi\n");
}
Lalu untuk parameter bersifat opsional, nanti akan kita bahas lebih dalam.
Sekarang mari kita coba membuat program C dengan fungsi.
Silakan buat file baru bernama contoh_fungsi.c
kemudian isi dengan kode berikut:
#include <stdio.h>
// membuat fungsi say_hello()
void say_hello(){
printf("Hello Selamat Datang!\n");
}
void main(){
// memanggil fungsi say_hello()
say_hello();
}
Hasilnya:
Fungsi say_hello()
dapat kita panggil berulang
kali pada fungsi main()
.
Contoh:
#include <stdio.h>
// membuat fungsi say_hello()
void say_hello(){
printf("Hello Selamat Datang!\n");
}
void main(){
// memanggil fungsi say_hello()
say_hello();
say_hello();
say_hello();
}
Maka hasilnya:
Jadi, cukup buat fungsi satu kali. Kita bisa panggil berkali-kali.
Fungsi dengan Parameter
Parameter adalah variabel yang menyimpan nilai untuk diproses di dalam fungsi.
Parameter akan menyimpan nilai yang akan diinputkan ke dalam fungsi.
Contoh:
void say_hello(char name[]){
printf("Hello %s!\n", name);
}
Pada contoh di atas, name
adalah sebuah parameter
berupa array dengan tipe char
.
Parameter ini hanya akan dikenali
di dalam fungsi.
Lalu, bagaimana cara memanggil fungsi yang memiliki parameter?
Berikut caranya:
say_hello("Petani Kode");
Perhatikan! "Petani Kode"
adalah nilai yang akan kita
berikan ke parameter.
Biar lebih paham… mari kita coba dalam program.
Silakan buat program baru dengan nama parameter.c
,
kemudian isi dengan kode berikut:
#include <stdio.h>
void say_hello(char name[]){
printf("Hello %s!\n", name);
}
void main(){
say_hello("Dian");
say_hello("Petani");
say_hello("Kode");
}
Hasilnya:
Hasil outputnya akan menyesuaikan dengan nilai parameter yang kita berikan ke dalam fungsi.
Lalu bagaimana kalau ada lebih dari satu parameter?
Gampang…
Tinggal ditambahkan dan dipisah dengan tanda koma seperti ini:
void add(int a, int b){
printf("%d + %d = %d\n", a, b, a+b);
}
Mari kita coba…
Buatlah program baru bernama dua_param.c
,
kemudian isi dengan kode berikut:
#include <stdio.h>
void add(int a, int b){
printf("%d + %d = %d\n", a, b, a+b);
}
void main(){
add(1, 4);
add(8, 2);
add(3, 2);
}
Hasilnya:
Fungsi yang Mengembalikan Nilai
Pada contoh di atas, kita memberikan nilai masukan ke dalam fungsi berupa integer…
…lalu di dalamnya dilakukan operasi penjumlahan.
void add(int a, int b){
printf("%d + %d = %d\n", a, b, a+b);
}
Fungsi ini tidak akan mengembalikan apa-apa,
karena tipe data yang diberikan pada
nilai kembalian adalah void
.
Fungsi kadang harus mengembalikan sebuah nilai agar dapat diproses di tahap berikutnya.
Kita bisa menggunakan kata kunci return
untuk
mengembalikan nilai dari fungsi.
Contoh:
int add(int a, int b){
return a+b;
}
Maka fungsi add()
akan mengembalikan nilai
berupa integer dari hasil penjumlahan nilai a
dan b
.
Mari kita coba contoh yang lain…
Silakan buat program baru bernama fungsi_bagi.c
,
kemudian isi dengan kode berikut:
#include <stdio.h>
float bagi(int a, int b){
float hasil = (float)a / (float)b;
return hasil;
}
void main(){
printf("Hasil 5/2: %.2f\n", bagi(5, 2));
}
Hasilnya:
Fungsi Rekursif pada C
Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri.
Maksudnya?
Biasanya kita memanggil fungsi pada fungsi main atau fungsi yang lainnya. Namun, pada fungsi rekursif…
…fungsi itu akan memanggil dirinya sendiri di dalam tubuh fungsi.
Biar lebih jelas!
Coba perhatikan contoh berikut:
#include <stdio.h>
int sum(int n);
void main(){
int number, result;
printf("Enter a positive integer: ");
scanf("%d", &number);
result = sum(number);
printf("sum = %d", result);
}
int sum(int num){
if (num!=0)
return num + sum(num-1); // fungsi sum() memanggil dirinya sendiri
else
return num;
}
Hasilnya:
Mengapa hasilnya bisa 21
?
Karena kita menginputkan nilai 6
,
maka akan sama dengan:
1 + 2 + 3 + 4 + 5 + 6 = 21
Variabel Lokal dan Variabel Global
Variabel lokal dan variabel global akan sering kita temukan dalam pembuatan fungsi.
Variabel global adalah variabel yang bisa diakses dari semua fungsi. Sedangkan variabel lokal adalah variabel yang hanya bisa diakses dari dalam fungsi itu sendiri.
Contoh:
#include <stdio.h>
// membuat variabel global
int nilai = 9;
void main(){
// membuat variabel lokal
int nilai = 7;
// mencetak variabel
printf("Nilai: %d\n", nilai);
}
Pada contoh di atas, kita membuat variabel
global bernama nilai
.
Lalu di dalam fungsi main()
,
kita membuat variabel lagi bernama nilai
dengan nilai yang berbeda.
Variabel yang ada di dalam fungsi main()
adalah variabel lokal.
Lalu, berapakah hasil outputnya?
Jawabannya: 7
Mengapa bisa 7
?
Karena variabel nilai
kita buat ulang di dalam
fungsi main.
Sekarang coba hapus variabel lokal yang ada di dalam main, sehingga akan menjadi seperti ini:
#include <stdio.h>
// membuat variabel global
int nilai = 9;
void main(){
// mencetak variabel
printf("Nilai: %d\n", nilai);
}
Maka hasil outputnya akan 9
.
Karena variabel yang dipakai adalah
variabel global.
Pass by Value dan Pass by Reference
Pass by value dan pass by reference adalah cara untuk memberikan nilai pada parameter.
Biasanya kita langsung memberikan nilai kepada parameter dengan cara seperti ini:
kali_dua(4);
Ini disebut pass by value, karena di sana
kita memberikan nilai 4
.
Nah kalau seperti ini:
kali_dua(&nama_variabel);
Ini disebut pass by reference, karena kita memberikan alamat memori.
Contoh:
#include <stdio.h>
void kali_dua(int *num){
*num = *num * 2;
}
void main(){
int angka = 9;
// memanggil fungsi
kali_dua(&angka);
// mencetak isi variabel
// setelah fungsi dipanggil
printf("isi variabel angka = %d\n", angka);
}
Hasilnya:
Fungsi kali_dua()
memiliki parameter berupa
pointer,
artinya kita harus memberikan alamat memori untuk parameter ini.
Pada saat pemanggilan, fungsi kali_dua()
kita isi
parameternya dengan alamat memori dari variabel angka
.
Maka hasilnya nilai variabel angka akan dikalikan dengan
2
berdasarkan rumus pada fungsi yang kita berikan.
Apa Selanjutnya?
Fungsi merupakan hal yang wajib dipahami pada pemrograman C, karena dalam pembuatan program yang besar kita akan banyak menggunakan fungsi.
Tulisan ini hanya mengajari dasar-dasar saja. Sebenarnya masih banyak lagi hal yang harus dibahas tentang fungsi.
Karena itu…
Tunggu saja update berikutnya, 😏.
Silakan cek list tutorial pemrograman C untuk tutorial yang lainnya.