FUNGSI
4.1. Pendahuluan
Fungsi didefinisikan sebagai kumpulan instruksi untuk melakukan suatu tugas
tertentu. Seperti telah dijelaskan pada bab 1, program C++ terdiri dari satu atau lebih
fungsi (function). Selama ini, program yang dibuat hanya terdiri dari 1 fungsi, yaitu
fungsi main. Cara ini hanya cocok diterapkan pada program untuk masalah yang
sederhana saja. Pada program untuk masalah yang kompleks disarankan untuk
membagi masalah menjadi sub-masalah yang lebih sederhana dan tiap sub-masalah
dipecahkan dengan sebuah fungsi, lihat gambar 4.1 di bawah. Fungsi sering juga
disebut sebagai modul (module). Beberapa fungsi atau modul ini dapat digabungkan
menjadi satu program yang besar.
49
Praktikum C++ Dasar
Ada dua macam fungsi yang dikenal dalam program C++, yaitu:
1. Predefined function: fungsi yang sudah disediakan dalam library C++.
Penggunaannya dengan memanggil header file tempat fungsi itu berada. Beberapa
predefined function dapat dilihat pada tabel 4.1 berikut ini dan contoh
penggunaannya dapat dilihat pada program41.cpp.
2. User-defined function: fungsi yang dibuat oleh programmer.
Modul IV : Fungsi 50
Praktikum C++ Dasar
//prog41.cpp
#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <conio.h>
u = 4.2;
v = 3.0;
cout << u <<" pangkat " << v << " = " << pow(u,v) << endl <<endl;
cout << " 5.0 pangkat 4 = " << pow(5.0, 4) << endl<< endl;
u = u + pow(3.0, 3);
cout << " u = " << u << endl;
cout <<endl;
x = -15;
cout << " nilai absolut dari " << x << " = " << abs(x) << endl;
// system (“pause”);
return 0;
}
Pada program 4.1 di atas, pemanggilan fungsi pow(u,v) dan abs(x) tidak akan berhasil
jika header file (math.h) tidak ada.
Predefined function pada tabel 4.1 di atas adalah contoh dari fungsi yang
mengembalikan sebuah hasil atau fungsi dengan statement return. Fungsi ini selalu
mengembalikan sebuah hasil bersama statement return. Untuk membuat fungsi ini
perhatikan langkah-langkah berikut ini:
1. Tentukan nama fungsi.
2. Tentukan banyaknya parameter
3. Tentukan tipe data dari masing-masing parameter
4. Tentukan tipe data dari nilai yang dihasilkan oleh fungsi
5. Tulis statement yang menjadi isi fungsi (badan fungsi)
6. Akhiri fungsi dengan statement return(ekspresi). Ekspresi adalah tempat
menyimpan hasil dari fungsi yang akan dikembalikan ke statement program yang
memanggil.
Modul IV : Fungsi 51
Praktikum C++ Dasar
Tipe fungsi adalah tipe data dari hasil fungsi (tipe data dari ekspresi).
Parameter digunakan oleh fungsi untuk menerima data simbolik, yaitu data yang akan
diproses oleh fungsi. Statement return digunakan untuk mengembalikan hasil
(dalam hal ini, ekspresi) ke statement program yang memanggilnya.
Sebagai contoh akan dibuat fungsi bertipe long integer untuk menghitung
bilangan pangkat 3 sebagai berikut:
//program42.cpp
#include <iostream>
#include <iomanip>
int main( )
{
cout << "Bilangan Pangkat3 bilangan" << endl;
for (int bil =200; bil<=1000; bil+=200)
Modul IV : Fungsi 52
Praktikum C++ Dasar
Untuk contoh berikutnya akan dibuat fungsi untuk menentukan bilangan yang
terbesar dari 2 bilangan beserta penggunaannya dalam program (lihat program43.cpp)
// program43.cpp
// mencari bilangan yang lebih besar dari 2 bilangan
#include <iostream>
using namespace std;
cout << " Diketahui I = " << i << " dan J = " << j << endl;
cout << " Bilangan yang lebih besar adalah: " << besar(i,j) << endl;
cout <<" Ketikkan 2 buah bilangan ";
cin >> a;
cin >> b;
max = besar(a,b); // memanggil fungsi besar
cout << " Bilangan yang lebih besar adalah : " << max <<endl;
// system(“pause”);
return 0;
}
Setelah fungsi dibuat, fungsi dapat digunakan dimanapun dalam program termasuk di
dalam fungsi yang lain. Sebagai contoh akan dibuat fungsi untuk menentukan
bilangan yang terbesar dari 3 bilangan dengan menggunakan fungsi besar yang sudah
dibuat seperti pada program44.cpp berikut.
Modul IV : Fungsi 53
Praktikum C++ Dasar
// program44.cpp
// mencari bilangan yang lebih besar dari 3 bilangan
#include <iostream>
using namespace std;
int main( )
{
double i = 50;
double j = 75;
double k = 60;
double a, b, c, max;
cout <<" Diketahui I = " << i << " , J = " << j << " dan K = " << k
<< endl;
cout << " Bilangan yang terbesar adalah: " << besar3(i,j,k) << endl;
cout <<" Ketikkan 3 buah bilangan ";
cin >> a;
cin >> b;
cin >> c;
max = besar3(a,b,c); // memanggil fungsi besar
cout << " Bilangan yang terbesar adalah : " << max <<endl;
system(“pause”);
return 0;
}
1. Dengan menggunakan fungsi besar, buatlah program untuk mencari bilangan yang
terbesar dari 10 bilangan.
Modul IV : Fungsi 54
Praktikum C++ Dasar
D = √¿ ¿
Persamaan di atas dapat digunakan untuk menghitung radius dari lingkaran yang
terbentuk oleh ke dua titik tadi. Buatlah fungsi untuk persamaan di atas. Buatlah
program untuk menerima input koordinat 2 buah titik, lalu menentukan jarak,
radius lingkaran, serta keliling dan luas lingkaran yang terbentuk dari ke dua titik
tadi.
Li
R= −mt
1−(1+i)
Buatlah fungsi untuk persamaan di atas, lalu buatlah program untuk menerima
data dan menghitung besarnya cicilan yang harus dibayar nasabah.
5. Perusahaan air bersih menagih pelanggannya berdasarkan jumlah pemakaian air
sesuai tabel berikut ini:
Jumlah pemakaian (m3) Tagihan .
0 – 100 Rp. 200.000,-
101 – 300 Rp. 200.000,- + Rp. 2.500,- untuk setiap m3 di atas 100
lebih dari 301 Rp. 500.000,- + Rp. 3.000,- untuk setiap m3 di atas 300
Pembacaan angka meteran air dilakukan tiap bulan. Buatlah program dengan
fungsi untuk membaca nama pelanggan, angka meter bulan lalu dan angka meter
bulan ini, lalu menghitung jumlah pemakaian air dan jumlah tagihan. Buatlah slip
tagihan yang berisi nama pelanggan, jumlah pemakaian air dan jumlah tagihan
yang harus dibayar. Jika diketahui angka meteran air berupa counter yang terdiri
dari 4 digit, program harus dapat mengatasi kemungkinan angka meter bulan ini
lebih kecil dari angka meter bulan lalu.
6. Buat program dengan fungsi untuk menghitung dan menabelkan hasil dari
persamaaan berikut ini:
7. Buat program dengan fungsi untuk menghitung nilai akhir dan keterangan
“LULUS” jika nilai akhir >= 70, keterangan “TES PERBAIKAN” jika nilai akhir
antara 50 dan 70, dan keterangan “TIDAK LULUS” jika nilai akhir < 50, dari
sekelompok siswa. Komponen nilai akhir adalah tugas 30%, UTS 30% dan UAS
40%. Pada akhir program tampilkan pula banyaknya siswa yang lulus, tes
perbaikan dan tidak lulus.
8. Diketahui rumus konversi suhu dari skala celcius ke skala lain adalah sebagai
berikut:
4
Re amur= Celcius
5
Modul IV : Fungsi 55
Praktikum C++ Dasar
9
Fahrenheit= Celcius+32
5
Kelvin=Celcius+273
Buatlah fungsi yang menerima input nilai suhu pada skala celcius (bertipe real)
dan input jenis suhu hasil konversi yang diinginkan (bertipe karakter) dan
melakukan perhitungan konversi suhu berdasarkan input tersebut dan
menampilkan hasilnya.
Sebagai contoh:
Input: 100, R
Output: 100 derajat Celcius setara dengan 80 derajat Reamur.
9. Bilangan prima adalah bilangan integer n > 1 yang pembaginya adalah 1 dan n
(dirinya sendiri). Buatlah program dengan fungsi untuk menentukan apakah n
bilangan prima atau bukan.
11. Buatlah program dengan fungsi untuk mengkonversikan tanggal seperti contoh
berikut:
input: 01/01/01 output: 01 Januari 2001
Modul IV : Fungsi 56
Praktikum C++ Dasar
function tidak memerlukan tipe data dan dipanggil dalam bentuk statement yang
berdiri sendiri. Bentuk umum fungsi ini:
Jika fungsi tidak memerlukan parameter maka tetap dituliskan sepasang tanda
kurung setelah nama fungsi. Bentuk umum void function yang tidak memerlukan
parameter:
void nama_fungsi()
{
statement;
.....
}
Sebagai contoh akan dibuat void function tanpa parameter untuk mencetak judul
seperti berikut:
void tampilkan_judul()
{
cout <<”PT Aria Perkasa Manunggal”<<endl;
cout <<”Jl. Kertadipura Tenggara 27R”<<endl;
cout <<”Kudus”<<endl;
}
nama_fungsi(daftar argumen)
Argumen digunakan fungsi untuk menerima data yang sebenarnya yang akan diproses
oleh fungsi dan juga menyimpan hasil dari fungsi jika ada. Tipe data dan banyaknya
argumen harus sama dengan tipe data dan banyaknya parameter dari fungsi yang
dipanggil.
Modul IV : Fungsi 57
Praktikum C++ Dasar
Sebagai contoh akan dibandingkan function dengan return dan void function
untuk operasi tambah dan kurang (lihat program45.cpp di bawah ini).
//program45.cpp
#include <iostream>
using namespace std;
int main()
{
int bil,a,b;
cout<<"Masukkan bilangan A : ";cin>>a;
cout<<"Masukkan bilangan B : ";cin>>b;
cout <<endl;
bil=tambah(a,b); //pemanggilan fungsi tambah(a,b)
cout<<"Hasil penambahan bilangan " <<a<<" + "<<b<<" = "<<bil<<endl;
kurang(a,b); //pemanggilan fungsi kurang(a,b)
// system("pause");
}
Contoh fungsi berikut ini adalah fungsi yang tidak mengembalikan hasil ke
fungsi main karena hasil fungsi langsung dicetak. Fungsi ini digunakan untuk
mencetak karakter ‘*’ dalam bentuk segitiga seperti berikut, untuk n = 5 maka
hasilnya:
*
* *
* * *
* * * *
* * * * *
Tabel 4.2 Perbandingan antara Fungsi dengan return dan Fungsi dengan void
Fungsi dengan return Fungsi dengan void
Deklarasi tipedata namafungsi (daftar_parameter) void namafungsi (daftar_parameter)
Contoh: int tambah(int x, int y) Contoh: void kurang(int x, int y)
Definisi Definisi fungsi selalu diakhiri dengan Tidak ada statement return dalam
statement: definisi fungsi
return (hasil);
Pemanggilan Dalam suatu ekspresi, contoh: Statement berdiri sendiri, contoh:
T = tambah(a,b); kurang(a,b);
Hasil Hanya dan harus menghasilkan sebuah Tidak menghasilkan apapun atau
hasil. menghasilkan lebih dari 1 hasil.
//program star.cpp
Modul IV : Fungsi 58
Praktikum C++ Dasar
#include <iostream>
using namespace std;
void main()
{
int baris, k, sumblank;
D = √¿ ¿
Persamaan di atas dapat digunakan untuk menghitung radius dari lingkaran yang
terbentuk oleh ke dua titik tadi. Buatlah fungsi untuk persamaan di atas. Buatlah
program dengan void function untuk menerima input koordinat 2 buah titik, lalu
menentukan jarak, radius lingkaran, serta keliling dan luas lingkaran yang
terbentuk dari ke dua titik tadi.
5. Buat program dengan void function untuk kalkulator sederhana (+ - * /) yang
menerima 2 angka (operan) dan menghasilkan angka hasil ke 4 operator tadi
beserta keterangannya. Sebagai contoh:
Modul IV : Fungsi 59
Praktikum C++ Dasar
Input: 5, 2
Output Operator + :5+2 =7
Operator - :5- 2 =3
Operator * : 5 * 2 = 10
0perator / : 5 / 2 = 0.5
6. Diketahui rumus konversi suhu dari skala celcius ke skala lain adalah sebagai
berikut:
4
Re amur= Celcius
5
9
Fahrenheit= Celcius+32
5
Kelvin=Celcius+273
Buatlah void function yang menerima input nilai suhu pada skala celcius (bertipe
real) dan input jenis suhu hasil konversi yang diinginkan (bertipe karakter) dan
melakukan perhitungan konversi suhu berdasarkan input tersebut dan
menampilkan hasilnya.
Sebagai contoh:
Input: 100, R
Output: 100 derajat Celcius setara dengan 80 derajat Reamur.
7. Bilangan prima adalah bilangan integer n > 1 yang pembaginya adalah 1 dan n
(dirinya sendiri). Buatlah program dengan void fungsi untuk menentukan apakah
n bilangan prima atau bukan.
10.a. Buatlah void fungsi yang menerima sebuah huruf: A, B, C, D, atau E dan
menghasilkan nilai numerik untuk masing-masing huruf (A = 4.0, B = 3.0, C =
2.0, D = 1.0, E = 0.0)
10.b. Buatlah void fungsi yang menerima angka integer dan menghasilkan nilai huruf
sesuai dengan ketentuan berikut ini:
- 90.0 – 100 : A - 80.0 – 89.9 : B
- 70.0 – 79.9 : C - 60.0 – 69.9 : D
- 50.0 – 59.9 : E - kurang dari 50.0
:F
10.c. Buatlah program untuk membaca beberapa angka integer dan menghasilkan
nilai huruf dan nilai numerik untuk masing-masing angka integer dengan
menggunakan fungsi yang anda buat pada 10.a dan 10.b.
Modul IV : Fungsi 60
Praktikum C++ Dasar
4.3 Parameter
Komunikasi (lalu lintas data) antara fungsi dengan statement program yang
memanggilnya dilakukan melalui parameter. Ada 2 jenis parameter yaitu:
1. Value parameter: hanya menerima nilai dari argumen ketika fungsi dipanggil.
Perubahan nilai hanya mempunyai efek di dalam fungsi. Biasanya digunakan
untuk memasukkan data input ke fungsi.
2. Reference parameter: menerima nilai dan lokasi memori dari argumen ketika
fungsi dipanggil. Perubahan nilai mempunyai efek baik di dalam fungsi maupun
setelah fungsi selesai dipanggil. Biasanya digunakan untuk menyimpan hasil
fungsi (output fungsi).
int main()
{
int angka = 8;
cout <<"Sebelum pemangilan fungsi: "
<<"Isi variabel angka = " <<angka
<<endl;
return 0;
}
n = 15;
cout <<"Di dalam fungsi: "
<<"Isi variabel angka setelah diubah= " <<n
<<endl<<endl;
}
Modul IV : Fungsi 61
Praktikum C++ Dasar
//deklarasi fungsi
void bacanilai(int& n);
void cetak(int n);
int main()
{
int a;
//deklarasi fungsi
void fsatu(int a, int& b, char c);
void fdua(int& x, int y, char& z);
int main()
Modul IV : Fungsi 62
Praktikum C++ Dasar
{
int n1, n2;
char kar;
n1 = 10;
n2 = 15;
kar = 'A';
cout <<" Pada program utama, setelah fungsi fsatu : " <<endl
<<" bil1 = "<< n1 <<" , bil2 = "<< n2
<<" dan karakter = " << kar <<endl;
cout<<endl;
cout <<" Pada program utama, setelah fungsi fdua : " << endl
<<" bil1 = "<< n1 <<" , bil2 = "<< n2
<<" dan karakter = " << kar <<endl;
return 0;
}
s = a;
a++;
b = b * 2;
c = 'B';
cout <<"Di dalam fungsi fsatu, hasil fungsi : " << endl
<<"bil1 = "<< a <<" , bil2 = "<< b
<<" karakter = " << c
<<" dan s = " << s <<endl;
cout <<endl;
}
cout <<"Di dalam fungsi fdua, hasil fungsi : " << endl
<<"bil1 = "<< x <<" , bil2 = "<< y
<<" dan karakter = " << z <<endl;
cout <<endl;
}
Modul IV : Fungsi 63
Praktikum C++ Dasar
3. Buatlah program dengan fungsi untuk menampilkan menu yang berisi macam-
macam bentuk bangun 2 dimensi (segitiga, persegi panjang, bujur sangkar,
lingkaran, jajaran genjang). Berdasarkan bentuk yang dipilih dari menu, mintalah
data yang diperlukan untuk menghitung luas dan keliling serta menampilkan
hasilnya.
4. Buatlah fungsi untuk menghitung resistansi total beberapa resistor yang dipasang
secara seri dan paralel. Buatlah pula algoritma utamanya
6. Buatlah fungsi untuk menghitung keliling, luas permukaan dan volume sebuah
kotak jika diketahui panjang, lebar dan tingginya. Buatlah pula algoritma
utamanya.
Perluas program di atas sehingga selain menghitung keliling, luas dan isi kotak,
juga dapat menghitung keliling, luas dan isi kubus, selinder, kerucut dan bola.
Perhatikan input yang diperlukan untuk menghitung keliling, luas dan isi dari
masing-masing bentuk. ( fungsi void)
Modul IV : Fungsi 64
Praktikum C++ Dasar
void main()
{
cout << lada << endl;
tambah();
cout << lada << endl;
tambah();
cout << lada << endl;
}
//Definisi fungsi
void tambah()
{
lada++;
}
Perhatikan hasil eksekusi program, meskipun di dalam fungsi main dan tambah
tidak mendefinisikan variabel lada, tetapi variabel ini dikenal di dalam kedua fungsi
tersebut dan nilai dari variabel lada dapat diubah oleh fungsi tambah.
//program varlokal.cpp
#include <iostream>
using namespace std;
void alpha();
void main()
{
int x=22;
double y=2.22
cout << “Pada main: x = “ << x << “ y = “ << y << endl;
alpha();
cout << “Pada main setelah fungsi alpha: x = “ << x << “ y = “ << y <<
endl;
}
//Definisi fungsi
void alpha()
{
int x = 20;
double y = 3.14;
cout << “Pada alpha : x = “ << x << “ y = “ << y << endl;
}
//program varstatis.cpp
#include <iostream>
using namespace std;
void tes();
Modul IV : Fungsi 65
Praktikum C++ Dasar
int main ()
{
int i;
for (i = 1; i <= 5 ; i++)
tes();
return 0;
}
void tes()
{
static int x = 0;
int y = 10;
x = x + 2;
y = y + 1;
cout <<" Di dalam fungsi tes, nilai x = " << x <<" dan y = "
<< y << endl;
}
int main()
{
int n = 10;
cout <<"Di dalam main, angka mula-mula = " << n << endl << endl;
satu(n, n);
cout <<"Di dalam main, setelah fungsi satu, angka menjadi = "
<< n << endl << endl;
dua(n,n);
cout <<"Di dalam main, setelah fungsi dua, angka menjadi = "
<< n << endl << endl;
tiga(n,n);
cout <<"Di dalam main, setelah fungsi tiga, angka menjadi = "
<< n << endl << endl;
return 0;
Modul IV : Fungsi 66
Praktikum C++ Dasar
b = b * 2;
cout <<" Di dalam fungsi satu, setelah perkaliam, b menjadi = "
<< b << endl << endl;
}
q = q + 2;
cout <<" Di dalam fungsi dua, setelah penambahan, q menjadi = "
<< q << endl << endl;
}
void tiga(int& x, int y)
{
cout <<" Di dalam fungsi tiga, x mula=mula = "<< x
<<" dan y mula-mula = "<< y << endl;
x = x * x;
cout <<" Di dalam fungsi tiga, setelah perkalian, x menjadi = "
<< x << endl;
y = y + y;
cout <<" Di dalam fungsi tiga, setelah penambahan, y menjadi = "
<< y << endl << endl;
}
int t;
int main()
{
t = 15;
cout <<"Di dalam main, angka mula-mula = " << t << endl << endl;
fsatu(t);
void fsatu(int& a)
{
cout <<" Di dalam fsatu, a mula=mula = "<< a
<<" dan t mula-mula = "<< t << endl;
a = a + 2;
cout <<" Di dalam fsatu, setelah penambahan, a menjadi = "
Modul IV : Fungsi 67
Praktikum C++ Dasar
t = t * 2;
cout <<" Di dalam fsatu, setelah perkaliam, a menjadi = "
<< a <<" dan t menjadi = "<< t << endl << endl;
}
Buatlah fungsi untuk menghitung upah total, PTKP, dan Pajak Penghasilan.
Buatlah pula program utama untuk menghitung dan mecetak slip gaji yang
diterima oleh seorang pegawai beserta pajak penghasilan yang dibayarnya.
5. Biaya asuransi ladang pertanian yang standar adalah 3.5 persen dari nilai
tanggungan dikalikan luas tanah. Tetapi untuk ladang kacang kedelai, kentang,
bawang merah dan cabai, biaya asuransinya adalah 2 kali biaya standar. Dan
untuk ladang padi, singkong dan jagung, biaya asuransinya adalah 1.5 kali biaya
standar. Seorang petani dapat mempunyai sampai 3 jenis ladang.
a. Buatlah fungsi untuk menghitung biaya asuransi untuk tiap jenis ladang.
b. Buatlah fungsi untuk mencetak slip pembayaran asuransi yang berisi nama
petani, jenis-jenis ladang, biaya asuransi untuk tiap jenis ladang dan nilai
asuransi total yang harus dibayar petani.
c. Buatlah program utama untuk membaca data input nama petani, jenis-jenis
ladangnya, nilai tanggungan per hektar untuk tiap jenis ladang dan luas dari
tiap jenis ladang (hektar). Lalu menggunakan fungsi-fungsi di atas untuk
menghitung besarnya asuransi dari tiap jenis ladang, menghitung besarnya
asuransi total dan mencetak slip pembayaran.
Modul IV : Fungsi 68
Praktikum C++ Dasar
Modul IV : Fungsi 69