Dalam pemrograman, fungsi atau prosedur sering digunakan untuk membungkus program menjadi
bagian-bagian kecil.
Tujuannya agar program tidak menumpuk pada fungsi main() saja.
Bayangkan kalau program kita tambah besar dan kompleks, semua kodenya ditulis di dalam
fungsi main(), maka kita akan kesulitan membacanya. Karena itu, kita harus menggunakan Fungsi.
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(){
cout << "Ini adalah sebuah fungsi\n";
}
Tergantung dari fungsi yang dibuat. Jika fungsi itu membutuhkan input, maka kita harus membuatkan
paramater. Tapi kalau tidak menerima input apapun, parameter tidak perlu dibuat.
Fungsi yang tidak menerima input, kadang juga disebut dengan prosedur.
Sekarang mari kita coba membaut fungsi pada program C++.
Silahkan buat file baru bernama fungsihello.cpp kemudian isi dengan kode berikut:
#include <iostream>
using namespace std;
// membuat hello()
void hello(){
cout << "Hello Selamat Datang!\n";
}
main() {
// memanggil hello()
hello();
}
Hasilnya:
Hello Selamat Datang!
main(){
// memanggil fungsi hello()
hello();
hello();
hello();
}
Maka hasilnya:
Hello Selamat Datang!
Hello Selamat Datang!
Hello Selamat Datang!
Jadi, cukup buat fungsi satu kali. Kita bisa panggil berkali-kali.
// deklarasi fungsi
void hello();
main(){
// memanggil fungsi hello()
hello();
hello();
hello();
}
// Definisi fungsi
void hello(){
cout << "Hello Selamat Datang!\n";
}
Contoh:
void hello (string nama){
cout << "Hello " << nama << "!\n";
}
Perhatikan!
nama adalah sebuah parameter dengan tipe string.
Parameter ini akan menyimpan nilai yang diinputkan ke fungsi hello().
Lalu, bagaimana cara kita memberikan input ke fungsi?
Berikut caranya:
hello("Abdul");
Perhatikan!
"Abdul" adalah nilai yang akan kita berikan ke fungsi.
Silahkan buat program baru dengan nama fungsi_parameter.cpp, kemudian isi dengan kode berikut:
#include <iostream>
using namespace std;
main(){
say_hello("Abdul");
say_hello("Rahim");
}
Hasilnya:
Hello Abdul!
Hello Rahim!
Hasil outputnya akan menyesuaikan dengan nilai parameter yang kita berikan ke fungsi.
Kalau ada lebih dari satu parameter, tinggal ditambahkan dan dipisah dengan tanda koma seperti ini:
main(){
tambah(1, 4);
tambah(8, 2);
tambah(3, 2);
}
Hasilnya:
1+4=5
8 + 2 = 10
3+2=5
Fungsi juga kadang harus menghasilkan output, karena kadang kita membutuhkan hasil dari fungsi
tersebut untuk digunakan pada proses berikutnya.
Kita bisa menggunakan kata kunci return untuk mengembalikan nilai dari fungsi.
Contoh:
int tambah(int a, int b){
return a+b;
}
Maka fungsi tambah() akan mengembalikan nilai berupa integer dari hasil penjumlahan nilai a dan b.
Silahkan buat program baru bernama fungsi_bagi.c, kemudian isi dengan kode berikut:
#include <iostream>
using namespace std;
main(){
cout << a << “ / “ << b << “ = “ << bagi(5, 2) << endl;
}
Hasilnya:
5 / 2 = 2.5
Contoh:
#include <iostream>
using namespace std;
main(){
// membuat variabel lokal
int nilai = 7;
// mencetak variabel
cout << "Nilai = " << nilai << endl;
}
Hasil :
Nilai = 7
Kenapa hasil = 7, karena variabel nilai dibuat ulang di dalam fungsi main.
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.
Sekarang coba dihapus variabel lokal yang ada di dalam main, sehingga akan menjadi seperti ini:
#include <iostream>
using namespace std;
main(){
// membuat variabel lokal
int nilai = 7;
// mencetak variabel
cout << "Nilai = " << nilai << endl;
}
Maka hasil outputnya adalah 9, karena variabel yang dipakai adalah variabel global.
Contoh:
#include <iostream>
using namespace std;
main(){
int angka = 9;
// memanggil fungsi
kali_dua(&angka);
Fungsi kali_dua() memiliki parameter berupa pointer, artinya kita harus memberikan alamat memori
untuk pointer 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.