Substansi:
- Pengertian Fungsi
- Tujuan pembuatan fungsi
- Struktur Fungsi
- Fungsi dengan Parameter
- Deklarasi / Prototipe Fungsi
- Nilai bawaan parameter
- Melewatkan parameter dengan nilai (pass by value)
- Melewatkan parameter dengaan rerefensi (pass by reference)
- Fungsi dengan Nilai Balik
- Fungsi tanpa Nilai Balik
- Lingkup Variabel
- Overloading Function

1. Pengertian Fungsi
- Fungsi merupakan blok program yang dirancang untuk melaksanakan tugas tertentu.
- Fungsi adalah sebuah blok pernyataan yang berisi sejumlah pernyataan yang dikemas dalam sebuah nama yang dapat dipanggil beberapa kali di beberapa tempat di dalam program.
2. Tujuan pembuatan fungsi
- Untuk mengurangi pengulangan program yang sama
- Agar program menjadi terstruktur, rapi dan lebih mudah dikembangkan.
- Untuk memudahkan dalam pengembangan program, karena program dipecah menjadi beberapa program yang lebih kecil
- Untuk menghemat ukuran program, ini akan terasa kalau ada beberapa deretan instruksi yang sama dan digunakan pada beberapa tempat di dalam program.
- Deklarasi / prototipe fungsi.
3. Struktur Fungsi
Sebuah fungsi sederhana mempunyai bentuk penulisan sebagai berikut:
return_type nama_fungsi(parameter) {
pernyataan
}
Keterangan:
- return_type adalah nilai balik saat fungsi dipanggil
- nama_fungsi, biasanya disesuaikan dengan kegunaan dari fungsi, namun boleh ditulis secara bebas dengan ketentuan tidak menggunakan spasi dan nama-nama fungsi yang memiliki arti sendiri.
- parameter/argumen, diletakan di antara tanda kurung setelah nama fungsi, argumen digunakan sebagai nilai masukan untuk fungsi dan dapat dibuat lebih dari satu atau tidak sama sekali.
Untuk memanggil fungsi, gunakan nama fungsi dan definisi argumen jika dibutuhkan. perhatikan contoh berikut:
#include <iostream.h>
#include <conio.h>
void hello() {
cout << "Hello Everyone\n";
}
void main() {
hello();
hello();
getch();
}
Output:
Hello Everyone
Hello Everyone
4. Fungsi dengan Parameter
Parameter adalah nilai yang dapat kita masukkan ke dalam sebuah fungsi. Kita dapat mendefinisikan jumlah parameter berapapun sesuai dengan kebutuhan.
Terdapat dua macam parameter, yaitu:
- parameter formal, yaitu variabel yang terdapat dalam definisi fungsi.
- parameter aktual, yaitu variabel atau nilai yang digunakan saat pemanggilan suatu fungsi.
Perhatikan contoh berikut:
#include <iostream.h>
#include <conio.h>
void tambah(int a, int b) {
cout << a + b << endl;
}
void main() {
tambah(10, 12);
tambah(100, 200);
getch();
}
Output:
22
300
5. Deklarasi / Prototipe Fungsi
Prototipe fungsi digunakan untuk mendeklarasikan ke kompiler mengenai:
- Nama fungsi
- Nilai balik dari fungsi
- Tipe data nilai balik fungsi
- Jumlah parameter/argumen yang digunakan fungsi
- Tipe data dari masing-masing parameter/argumen yang digunakan fungsi
Contoh:
#include <iostream.h>
#include <conio.h> //definisi prototipe
void tambah(int a, int b);
void kurang(int a, int b);
void main() {
tambah(10, 12);
tambah(100, 200);
kurang(30, 45);
kurang(200, 125);
getch();
}
void tambah(int a, int b) {
cout << a + b << endl;
}
void kurang(int a, int b) {
cout << a - b << endl;
}
Output:
22
300
-15
75
6. Nilai bawaan parameter
Salah satu keistimewaan C++ adalah adanya kemampuan untuk menggunakan nilai bawaan (default) parameter fungsi. parameter yang mempunyai nilai bawaan nantinya dapat tidak disertakan didalam pemanggilan fungsi.
Contoh:
#include <iostream.h>
#include <conio.h>
void hello(int jum=1); // Prototipe fungsi
void main() {
clrscr();
hello();
hello(3);
getch();
}
void hello(int jum) {
for (int i = 0; i < jum; i ++) {
cout << " C++ " << endl;
}
cout << " Selesai " << endl;
}
Output:
C++
Selesai
C++
C++
C++
Selesai
7. Pass By Value
Melewatkan parameter dengan nilai (pass by value). Secara default argumen yang kita definisikan dalam fungsi bersifat pass by value, yang berarti akan dilewatkan ke dalam fungsi dan tidak akan mengalami perubahan setelah fungsi dijalankan. Perhatikan contoh berikut:
Contoh:
#include <iostream.h>
#include <conio.h>
void perkalian(int a, int b, int c);
void main() {
int a = 10, b = 30, c = 0;
cout << "\nNilai c SEBELUM fungsi perkalian dipanggil : " << c;
perkalian(a, b, c);
cout << "\nNilai c SETELAH fungsi perkalian dipanggil : " << c;
getch();
}
void perkalian(int a, int b, int c) {
c = a * b;
cout << "\nNilai c DALAM fungsi perkalian " << c;
}
Output:
Nilai c SEBELUM fungsi perkalian dipanggil : 0
Nilai c DALAM fungsi perkalian 300
Nilai c SETELAH fungsi perkalian dipanggil : 0
8. Pass By Reference
Melewatkan parameter dengaan rerefensi (pass by reference). Berbeda dengan pass by value yang tidak akan mempengaruhi nilai parameter setelah fungsi dijalankan, pass by reference akan mempengaruhi nilai setelah fungsi dijalankan. Untuk melewatkan parameter dengan referensi, tambahkan karakter ampersand ('&') di depan nama parameter. berikut adalah contoh sebelumnya yang telah diubah menjadi pass by reference:
Contoh:
#include <iostream.h>
#include <conio.h>
void perkalian(int a, int b, int &c);
void main() {
int a = 10, b = 30, c = 0;
cout << "\nNilai c SEBELUM fungsi perkalian dipanggil : " << c;
perkalian(a, b, c);
cout << "\nNilai c SETELAH fungsi perkalian dipanggil : " << c;
getch();
}
void perkalian(int a, int b, int &c) {
c = a * b;
cout << "\nNilai c DALAM fungsi perkalian " << c;
}
Output:
N
ilai c SEBELUM fungsi perkalian dipanggil : 0
Nilai c DALAM fungsi perkalian 300
Nilai c SETELAH fungsi perkalian dipanggil : 300
9. Fungsi dengan Nilai Balik
Pada saat kita membuat fungsi, sering kali kita ingin agar ketika fungsi dipanggil akan melakukan proses dan mengembalikan nilai tertentu. kita bisa menggunakan keyword return dalam fungsi untuk mengembalikan nilai ketika fungsi tersebut dipanggil.
Format deklarasi untuk fungsi menghasilkan nilai balik:
tipe nama_fungsi(daftar_parameter);
Setiap fungsi yang dipanggil di dalam program harus didefinisikan terlebih dahulu yang letaknya bisa dimana saja. Khusus untuk fungsi yang disediakan oleh sistem, definisi sebenarnya sudah ada dalam pustaka yang disebut sebagai file header contoh #include
Contoh1:
#include <iostream.h>
#include <conio.h>
int tambahkan(int a, int b);
long kuadrat(long a);
void main() {
int a = 10, b = 30,
c = 0; a = kuadrat(a);
b = kuadrat(b);
c = tambahkan(a, b);
cout << "nilai c sekarang = " << c;
getch();
}
int tambahkan(int a, int b) {
return a + b;
}
long kuadrat(long a) {
return a * a;
}
Output:
nilai c sekarang = 1000
Contoh2:
Fungsi dengan nilai balik adalah fungsi yang memberikan nilai balik ke pemanggil fungsi, contoh:
//prototipe fungsi
long kuadrat (long x);
----------------------
//definisi fungsi
long kuadrat (long x)
{
return(x * x);
}
Pernyataan return di dalam fungsi digunakan untuk memberikan nilai balik fungsi. Pada contoh diatas, fungsi kuadrat() memberikan nilai balik berupa nilai kuadrat dari argumen.
Source Code:
#include <iostream.h>
#include <conio.h>
#include <iomanip.h>
/**
*www.bundet.com
*Contoh C++ Fungsi Nilai Balik
*Fungsi Kuadrat
*/
long kuadrat(long l); //prototipe fungsi
void main()
{
clrscr();
for (long bil = 200; bil < 2000; bil+=200)
cout << setw(8) << bil << setw(8) << kuadrat(bil) << endl;
getch();
}
//definisi fungsi
long kuadrat(long l)
{
return(l*l);
}
Output:

Contoh C++ Hitung Kuadrat Dengan Fungsi Nilai Balik
10. Fungsi tanpa Nilai Balik
Adakalanya suatu fungsi tidak perlu memiliki nilai balik. Misalnya fungsi yang hanya dimaksudkan untuk menampilkan suatu keterangan saja, pada fungsi seperti ini, tipe nilai balik fungsi yang diperlukan adalah void.
Format deklarasi untuk fungsi yang tidak menghasilkan nilai balik:
void nama_fungsi(daftar_parameter);
Contoh:
void tampilkan_judul()
{
cout << "PT. MOJA MAJU" <
cout << "JL. Buntu No.xx" <
cout << "bundet.com" <
}
Contoh diatas adalah fungsi tanpa nilai balik sebab tidak ada pernyataan return, mengingat fungsi tersebut tidak memiliki nilai balik, namun penggunaan pernyataan return secara eksplisit juga diperkenankan, dalam hal ini digunakan sebagai formalitas, contoh:
void tampilkan_judul()
{
cout << "PT. MOJA MAJU" <
cout << "JL. Buntu No.xx" <
cout << "bundet.com" <
return;
}
Contoh program fungsi tanpa nilai balik:

Program:
#include <iostream.h>
#include <conio.h>
/**
*bundet.com
*Fungsi Tanpa Nilai Balik
*/
void tampilkan_judul();
void line();
//fungsi utama
void main()
{
clrscr();
tampilkan_judul();
line();
getch();
}
//definisi fungsi
void line()
{
cout<<"======================================="<<endl;
}
void tampilkan_judul()
{
cout<<"GATEWAN"<<endl;
cout<<"alamat : bundet.com"<<endl;
cout<<"Yogyakarta"<<endl;
return;
}
11. Lingkup Variabel
Lingkup variabel menentukan keberadaan suatu variabel tertentu dalam fungsi. Ada variabel yang hanya dikenal di suatu fungsi dan tidak dikenal pada fungsi lain. Namun ada juga variabel yang dapat diakses oleh semua fungsi.
a. Variabel Lokal
variabel lokal adalah variabel yang dideklarasikan di dalam fungsi dan hanya dikenali dalam fungsi yang bersangkutan. Variabel lokal bisa juga disebut dengan variabel otomatis. Perhatikan contoh berikut:
Contoh:
#include <iostream.h>
#include <conio.h>
void lokal();
void main() {
int a = 25;
cout << "\nNilai a dalam fungsi main = " << a;
lokal();
cout << "\nNilai a dalam fungsi main = " << a;
getch();
}
void lokal() {
int a=70;
cout << "\nNilai a dalam fungsi lokal = " << a;
}
Output:
Nilai a dalam fungsi main = 25
Nilai a dalam fungsi lokal = 70
Nilai a dalam fungsi main = 25
b. Variabel Eksternal
Variabel eksternal adalah variabel yang dideklarasikan di luar fungsi dan bersifat global sehingga dapat digunakan bersama-sama tanpa harus dideklarasian berulang-ulang. perhatikan contoh berikut:
Contoh:
#include <iostream.h>
#include <conio.h>
int a = 77;
void lokal();
void main() {
a = 25; cout << "\nNilai a dalam fungsi main = " << a;
lokal();
cout << "\nNilai a dalam fungsi main = " << a;
getch();
}
void lokal() {
a+=7;
cout << "\nNilai a dalam fungsi lokal = " << a;
}
Output:
Nilai a dalam fungsi main = 25
Nilai a dalam fungsi lokal = 32
Nilai a dalam fungsi main = 32
c. Variabel Statis
Variabel statis dapat berupa variabel lokal ataupun variabel eksternal. variabel statis ini mempunyai sifat antara lain:
- jika variabel statis bersifat lokal, maka variabel hanya dikenal oleh fungsi dimana variabel dideklarasikan.
- jika variabel statis bersifat eksternal, maka variabel dapat dipergunakan oleh semua fungsi yang terletak pada file yang sama.
- jika nilai variabel statis tidak diberikan, secara otomatis akan diberikan nilai nol.
Contoh:
#include <iostream.h>
#include <conio.h>
void saya_ingat();
void main(){
int mana = 50;
clrscr();
saya_ingat();
saya_ingat();
saya_ingat();
cout << " main() : mana = " << mana << endl;
getch();
}
void saya_ingat() {
static int mana = 77; mana ++;
cout << " Saya_ingat () : mana = " << mana << endl;
}
Output:
Saya_ingat () : mana = 78
Saya_ingat () : mana = 79
Saya_ingat () : mana = 80
main() : mana = 50
12. Overloading Function
Fungsi overloading berarti mendefinisikan beberapa fungsi dengan nama yang sama tetapi dengan parameter yang berbeda.
Contoh:
#include <iostream.h>
#include <conio.h>
int kuadrat(int angka);
long kuadrat(long angka);
float kuadrat(float angka);
void main() {
int a = 200;
float b = 50.56;
long c = 120;
cout << a << " dikuadratkan menjadi " << kuadrat(a) << endl;
cout << b << " dikuadratkan menjadi " << kuadrat(b) << endl;
cout << c << " dikuadratkan menjadi " << kuadrat(c) << endl;
getch();
}
int kuadrat(int angka){
return (angka * angka);
}
long kuadrat(long angka) {
return (angka * angka);
}
float kuadrat(float angka) {
return (angka * angka);
}
Output:
200 dikuadratkan menjadi 40000
50.56 dikuadratkan menjadi 2556.31
120 dikuadratkan menjadi 14400
Jika teman-teman sudah berhasil memahaminya dan ingin mencoba dengan kasus yang sedikit lebih kompleks lagi, maka tidak ada salahnya jika teman-teman mencoba memulainya dengan memahami algoritma pada Contoh Program Menghitung Nilai Transkip Mahasiswa.
Sumber:
Modul Praktikum Pemrograman Sistem. STMIK El Rahma Yogyakarta. Oleh Eding Muh. Saprudin, S.Kom
Catatan Versi Lain
Fungsi dalam C++ memegang peranan sangat penting. Hal ini karena sebenarnya program dalam C++ adalah kumpulan dari fungsi-fungsi. Fungsifungsi yang telah tersedia maupun yang kita buat sendiri ini akan dipanggil dalam fungsi utama yaitu main(). Seperti semua bahasa pemrograman, C++ menyediakan built-in function yang dapat diakses dengan lebih dulu memanggil file headernya di awal program yang kita buat. C++ juga menyediakan fasilitas untuk membuat fungsi sendiri (user-defined function). Pada sub bab ini kita akan mempelajari bagaimana membuat fungsi sendiri.

Mengenal FUNGSI DALAM C++
Ada dua jenis fungsi, yaitu fungsi yang tidak mengembalikan nilai dan fungsi yang mengembalikan nilai.
Fungsi yang tidak mengembalikan nilai
Fungsi ini dibuat dengan tipe void. Dalam VB atau Pascal, fungsi ini dikenal sebagai prosedur. Perhatikan contoh 9.16 berikut.
Contoh 9.16. Fungsi tanpa pengembalian nilai
#include <iostream> using namespace std;
// Membuat fungsi cetak angka void CetakAngka() { for (int C=0; C<10; C++) { cout<<C+1<<endl;
}
}
// Fungsi utama dalam program C++ int main() {
// Memanggil fungsi CetakAngka
CetakAngka();
return 0; }
Pada contoh ini kita membuat fungsi dengan nama CetakAngka dengan tipe void sehingga tidak mengembalikan nilai (return value). Perhatikan bagaimana mendeklarasikan fungsi. Fungsi akan berjalan sampai akhir kode pada fungsi tersebut.
Fungsi yang mengembalikan nilai
Fungsi ini akan mengembalikan sebuah nilai untuk digunakan pada bagian program yang lain. Untuk mendefinisikan fungsi tipe ini, kita tidak menggunakan void, tetapi langsung tipe data dari nilai yang akan dikembalikan oleh fungsi tersebut. Perhatikan contoh 9.17 berikut.
Contoh 9.17. Fungsi dengan pengembalian nilai
#include <iostream>
using namespace std;
// Membuat fungsi dengan nilai pengembalian tipe char char* NilaiChar() {
return "Ini nilai yang akan dikembalikan";
}
// Fungsi utama int main() {
// Memanggil dan menampilkan hasil fungsi cout<< NilaiChar();
return 0; }
Pada tipe fungsi ini, kita membutuhkan pernyataan return untuk menunjukkan bagian yang akan dikembalikan nilainya. Pada contoh di atas, tipe data dari nilai yang akan dikembalikan adalah char. Bentuk char dengan tanda * menunjukkan variabel NilaiChar boleh berisi lebih dari satu huruf dan akan disimpan/dicetak sebagaimana ketika kita memasukkan isinya.
2. Penggunaan Parameter dalam Fungsi
Seperti halnya pada VB dan Java, fungsi pada C++ juga membolehkan digunakan parameter atau argumen untuk melewatkan input atau menampung output dari fungsi tersebut. Perhatikan contoh-contoh berikut.
Contoh 9.18. Fungsi dengan parameter input
#include <iostream> using namespace std;
// Membuat fungsi dengan parameter input int Kuadrat(int X) { int hasil; hasil = X * X; return hasil;
} int main() { int Bil, HASIL;
cout<<"Masukkan sebuah bilangan bulat : "; cin>>Bil;
HASIL = Kuadrat(Bil); //memanggil fungsi kuadrat cout<<"Kuadrat dari bilangan "<<Bil<<" adalah :
"<<HASIL; return 0; }
Fungsi pada contoh 9.18 adalah Kuadrat. Fungsi ini membutuhkan satu variabel input (pada contoh dinamakan X). Pada fungsi main(), variabel Bil adalah variabel yang digunakan untuk menyimpan nilai yang digunakan sebagai parameter pada fungsi Kuadrat ketika dipanggil.
Contoh 9.19. Fungsi dengan parameter input dan output
#include <iostream> using namespace std;
// Membuat fungsi dengan parameter input int Kuadrat(int X, int *hasil) {
*hasil = X * X; return *hasil;
} int main() { int Bil, HASIL;
cout<<"Masukkan sebuah bilangan bulat : "; cin>>Bil;
// Menampilkan nilai setelah diproses di dalam fungsi cout<<"Kuadrat dari bilanga "<<Bil<<" adalah :
"<<Kuadrat(Bil, &HASIL);
return 0; }
Contoh 9.19 merupakan pengembangan dari Contoh 9.18. Pada fungsi Kuadrat kita tambahkan parameter output yaitu hasil. Parameter keluaran, harus dilewatkan berdasarkan alamat memorinya (yaitu hasil), sehingga harus menggunakan pointer (lihat tanda * sebelum variabel hasil. Demikian juga cara pemanggilan fungsinya, parameter input dan outputnya harus disebutkan. Parameter output yang menyimpan hasil perhitungan harus kita beri awalan &.