Fungsi dalam C++

Fungsi adalah blok kode yang dirancang untuk melakukan tugas tertentu. Fungsi membantu memecah program menjadi bagian-bagian kecil yang lebih mudah dikelola.

Deklarasi dan Definisi Fungsi

// Deklarasi fungsi (prototipe)
tipe_return nama_fungsi(parameter);

// Definisi fungsi
tipe_return nama_fungsi(parameter) {
    // Badan fungsi
    return nilai; // Opsional
}

Jenis-jenis Fungsi

1. Fungsi tanpa parameter dan return value

void sapa() {
    cout << "Halo, Selamat Datang!" << endl;
}

2. Fungsi dengan parameter tapi tanpa return value

void sapaNama(string nama) {
    cout << "Halo, " << nama << "!" << endl;
}

3. Fungsi dengan parameter dan return value

int tambah(int a, int b) {
    return a + b;
}

Parameter Fungsi

1. Parameter Biasa

void cetakInfo(string nama, int umur) {
    cout << nama << " berumur " << umur << " tahun" << endl;
}

2. Parameter Default

void cetakPesan(string pesan = "Pesan default") {
    cout << pesan << endl;
}

3. Parameter Referensi

void gandakan(int &x) {
    x = x * 2;
}

Rekursi

Fungsi yang memanggil dirinya sendiri

int faktorial(int n) {
    if (n == 0 || n == 1) {
        return 1;
    } else {
        return n * faktorial(n - 1);
    }
}

Function Overloading

Membuat beberapa fungsi dengan nama sama tetapi parameter berbeda

void cetak(int i) {
    cout << "Integer: " << i << endl;
}

void cetak(double d) {
    cout << "Double: " << d << endl;
}

void cetak(string s) {
    cout << "String: " << s << endl;
}

Contoh Program Lengkap

#include <iostream>
#include <cmath>
using namespace std;

// Prototipe fungsi
double hitungLuasLingkaran(double radius);
void tampilkanMenu();
int faktorial(int n);

int main() {
    int pilihan;
    double radius;
    
    do {
        tampilkanMenu();
        cout << "Pilih operasi: ";
        cin >> pilihan;
        
        switch (pilihan) {
            case 1:
                cout << "Masukkan radius lingkaran: ";
                cin >> radius;
                cout << "Luas lingkaran: " << hitungLuasLingkaran(radius) << endl;
                break;
            case 2:
                int bilangan;
                cout << "Masukkan bilangan: ";
                cin >> bilangan;
                cout << "Faktorial: " << faktorial(bilangan) << endl;
                break;
            case 3:
                cout << "Keluar dari program..." << endl;
                break;
            default:
                cout << "Pilihan tidak valid!" << endl;
        }
    } while (pilihan != 3);
    
    return 0;
}

// Definisi fungsi
double hitungLuasLingkaran(double radius) {
    return M_PI * pow(radius, 2);
}

void tampilkanMenu() {
    cout << "\nMenu Program:" << endl;
    cout << "1. Hitung Luas Lingkaran" << endl;
    cout << "2. Hitung Faktorial" << endl;
    cout << "3. Keluar" << endl;
}

int faktorial(int n) {
    if (n <= 1) return 1;
    return n * faktorial(n - 1);
}