author Ahmad Muhardian

Belajar Pemrograman C #11: Mengenal Fungsi pada Bahasa C


Belajar Pemrograman C: Memahami Fungsi pada Pemrograman 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?

Silahkan lanjutkan membaca:

Cara Membuat Fungsi pada Bahasa C

Fungsi pada bahasa pemrograman C dapat kita buat dengan cara seperti ini:

Cara Membuat Fungsi pada C

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.

Silahkan 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:

Program fungsi say_hello

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:

Program fungsi say_hello

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.

Silahkan 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:

Program fungsi dengan parameter pada C

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 barnama 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:

Program fungsi dengan parameter pada C

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…

Silahkan 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:

Program fungsi pada C

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:

Program fungsi pada C

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

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 dengan pass by reference

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.

Kerena itu…

Tunggu saja update berikutnya, 😏.

Silahkan cek list tutorial pemrograman C untuk tutorial yang lainnya.