You are on page 1of 12

E-Book yang Sedang Anda Baca Ini Berasal dari:

SUMBER ILMU PENGETAHUAN TANPA BATAS


www.pustaka78.com
Inilah situs yang selalu dicari. Akan menjadi sumber download buku digital
terbesar di Indonesia. Menyediakan ribuan ebook, audio, movie, foto, dan
software bermutu dalam berbagai kategori. Dijamin dapat didownload
GRATIS 100%. Kunjungi sekarang juga www.pustaka78.com

Hak Cipta Terpelihara


© Hak Cipta ada pada Penulis/ Pengarang, Penerbit, atau Sumber Online.
LISENSI PENGGUNAAN: Dokumen ini boleh dikutip, dimodifikasi, atau
disebarkan luaskan secara bebas tanpa menghilangkan identitas pemilik hak
cipta. Pustaka Gratis 78 semata-mata hanya sebagai perpustakaan digital
penyedia ilmu pengetahuan yang memiliki koleksi dokumen yang pada dasarnya
bersumber pada publikasi online gratis atau dokumentasi yang tidak
diperdagangkan lagi. Jika buku ini masih diperdagangkan, kami tetap
menyarankan Anda untuk membeli versi cetaknya agar dunia perbukuan di
Indonesia terus maju dan berkembang dengan pesat.
Semoga semua bahan bacaan koleksi Pustaka Gratis 78 ini bermanfaat bagi
masyarakat luas di Indonesia dan luar negeri.
9
FUNGSI

9.1 Fungsi
Apabila program yang Anda buat sudah terlalu panjang, Anda akan
kesulitan membaca dan mengerti jalannya program tersebut. Untuk
itu ada baiknya Anda memecahnya menjadi beberapa bagian
(modul) yang tentunya akan lebih memudahkan Anda untuk mencari
kesalahan program dan memperbaikinya serta membuat
dokumentasinya. Untuk membuat modul, C++ menyediakan fungsi.
Fungsi berguna untuk mengumpulkan statement yang dapat
dijalankan menjadi satu dalam suatu blok dan menjalankannya
kembali hanya dengan menuliskan nama fungsi yang
menampungnya.
Selain itu, fungsi juga banyak dipakai untuk menampung baris-baris
perintah yang sering dipakai dalam sebuah program.
Deklarasi fungsi dapat dilakukan dengan dua cara, yaitu:
Header fungsi tanpa parameter.
Header fungsi dengan parameter.

97
9.1.1 Header Fungsi Tanpa Parameter

Bentuk umum:
tipeData namaFungsi()

Contoh:
int JumlahIsi()
double Random()
char* Nama()
void Clear()

Penulisan header fungsi tanpa parameter diawali dengan tipe data


dan diikuti dengan nama fungsi, kurung buka, dan kurung tutup
(‘( )’). Jika fungsi tidak mengembalikan nilai, tipe data yang
digunakan adalah void.
Berikut ini digambarkan struktur blok fungsi tanpa parameter.

Gambar 9.1 Struktur blok fungsi tanpa parameter

Contoh Soal:

prg0901.cpp Output:
x = 1
1 #include <iostream> y = 2
2 using namespace std; x+y = 3
3
xy = 2
4 int x;
5 int y;
6

98
7 int Tambah()
8 {
9 return x + y;
10 };
11
12 int Kali()
13 {
14 return x * y;
15 };
16
17 int main()
18 {
19 cout << "x = ";
20 cin >> x;
21 cout << "y = ";
22 cin >> y;
23
24 cout << "x+y = " << Tambah() << endl;
25 cout << "xy = " << Kali() << endl;
26
27 return 0;
28 };

9.1.2 Header Fungsi dengan Parameter

Bentuk umum:
tipeData namaFungsi ( <Daftar_parameter> )

Contoh:
int Jumlahkan(int a, int b)
double ArcCos(double x)
void List(int n, char* header)

Penulisan header fungsi dengan parameter hampir sama dengan


fungsi tanpa parameter, yaitu diawali dengan tipe data, lalu nama
fungsi, dan diikuti dengan parameter-parameter (yang berada di
dalam kurung) yang masing-masing dipisahkan dengan koma
beserta dengan tipenya.
Berikut ini digambarkan struktur blok fungsi dengan parameter.

99
Gambar 9.2 Struktur blok fungsi dengan parameter

Contoh Soal:

prg0902.cpp Output:
x = 1
1 #include <iostream> y = 2
2 using namespace std; x+y = 3
3 xy = 2
4 int Tambah(int a, int b)
5 {
6 return a + b;
7 };
8
9 int Kali(int a, int b)
10 {
11 return a * b;
12 };
13
14 int main()
15 {
16 int x, y;
17
18 cout << "x = ";
19 cin >> x;
20 cout << "y = ";
21 cin >> y;
22
23 cout << "x+y = " << Tambah(x, y) << endl;
24 cout << "xy = " << Kali(x, y) << endl;
25
26 return 0;
27 };

9.2 Parameter Formal dan Aktual


Jika sebuah fungsi memiliki parameter yang berada di dalam kurung
( ), parameter tersebut disebut sebagai parameter formal, sedangkan

100
parameter yang terdapat pada baris perintah pemanggil fungsi
tersebut disebut sebagai parameter aktual.
Untuk lebih jelasnya, perhatikan penjelasan di bawah ini.

void Hitung(char a, char b, int &c)


{ a, b dan c adalah
… Parameter Formal
};

int hasil; 3, 7, dan hasil


adalah Parameter
Hitung(3, 7, hasil); Aktual

Pada contoh di atas, fungsi Hitung memiliki parameter a, b, dan c


yang disebut sebagai parameter formal. Fungsi hitung tersebut
dipanggil pada program utama dengan parameter 3, 7, dan hasil.
Parameter 3, 7, dan hasil dikenal dengan sebutan parameter aktual.
Kemudian, parameter aktual 3, 7, dan hasil tersebut masing-masing
ditransfer kepada parameter formal a, b, dan c sesuai dengan
urutannya sehingga procedure hitung a bernilai 3, b bernilai 7, dan c
berisi variabel penampung hasil.
Transfer parameter akan dijelaskan lebih lanjut pada bagian
berikutnya.

9.3 Transfer Parameter


Saat kita memanggil suatu fungsi dengan parameter, sebenarnya
telah terjadi pengiriman parameter dari parameter aktual (yang
terdapat pada pemanggil fungsi) ke parameter formal (yang terdapat
pada fungsi tersebut). Pengiriman parameter tersebut dapat dilakukan
dengan dua cara, yaitu:
Transfer paramater by value (secara nilai).
Transfer parameter by location/reference (secara acuan).

9.3.1 Transfer Parameter by Value


Nilai yang tersimpan dalam parameter dikirim ke fungsi untuk diolah,
tetapi hasil olahan tersebut tidak diminta untuk dikembalikan. Dalam

101
mode ini, terjadi aliran 1 arah, yaitu dari pemanggil procedure ke
procedure itu.

Contoh Soal:

prg0903.cpp Output:
x = 1
1 #include <iostream> y = 2
(1, 2)
2 using namespace std;
3
4
5 void Tampil(int a, int b)
6 {
7 cout << "(" << a << ", " << b << ")" << endl;
8 };
9
10 int main()
11 {
12 int x, y;
13
14 cout << "x = ";
15 cin >> x;
16 cout << "y = ";
17 cin >> y;
18
19 Tampil(x, y);
20
21
22 return 0;
23 };

9.3.2 Transfer Parameter by Location


Transfer paramenter by location sering dikenal juga dengan transfer
parameter by reference (secara acuan). Dalam kasus ini, yang
ditransfer hanya lokasinya saja (dapat berisi data atau kosong) untuk
diolah, lalu hasil olahan tersebut dikembalikan dan disimpan pada
lokasi yang telah ditransfer tersebut. Dalam mode ini, dapat terjadi
aliran 2 arah dari pemanggil fungsi ke fungsi itu dan sebaliknya.

Contoh Soal:

prg0904.cpp
1 #include <iostream>
2 using namespace std;

102
3
4 void Tukar(int &a, int &b) Output:
5 { x = 1
6 int temp; y = 2
7 Sekarang x = 2
8 temp = a; Sekarang y = 1
9 a = b;
10 b = temp;
11 };
12
13 int main()
14 {
15 int x, y;
16
17 cout << "x = ";
18 cin >> x;
19 cout << "y = ";
20 cin >> y;
21
22 Tukar(x, y);
23
24
25 cout << "Sekarang x = " << x << endl;
26 cout << "Sekarang y = " << y << endl;
27
28 return 0;
29 };

9.4 Fungsi Rekursif


Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri. Fungsi
rekursif dipakai karena memiliki kelebihan, yaitu penulisan baris
program dapat menjadi lebih singkat. Akan tetapi, fungsi ini juga
memiliki kekurangan, yaitu membutuhkan banyak memori karena
setiap kali program bagian dipanggil oleh dirinya sendiri, dibutuhkan
sejumlah ruang memori tambahan.

Contoh Soal:

prg0905.cpp
Output:
1 #include <iostream> 15 bilangan Fibonacci pertama:
2 using namespace std; 0, 1, 1, 2, 3, 5, 8, 13, 21,
3
34, 55, 89, 144, 233, 377

103
4
5
6 int Fibo(unsigned int n)
7 {
8 switch (n)
9 {
10 case 0:
11 return 0;
12 case 1:
13 return 1;
14 default:
15 return Fibo(n - 1) + Fibo(n - 2);
16 };
17 };
18
19 int main()
20 {
21 int i;
22
23 cout << "15 bilangan fibonacci pertama: " << endl;
24
25 for (i = 0; i < 15; i++)
26 {
27 if (i > 0)
28 cout << ", ";
29 cout << Fibo(i);
30 };
31
32 cout << endl;
33
34 return 0;
35 };

9.5 Latihan Soal


1. Buatlah fungsi yang akan menghitung jumlah deretan bilangan
(deret.cpp).
Contoh input dan output fungsi tersebut dengan parameter
pertama untuk menunjukkan banyaknya bilangan dan parameter
kedua untuk menunjukkan array penampung bilangan:

Bilangan[0] = 41
Bilangan[1] = 22
Bilangan[2] = 72
Bilangan[3] = 44

jumlah(4, Bilangan) = 179

2. Buatlah program untuk menampilkan bilangan prima dari 2


sampai dengan jumlah yang diberikan melalui parameter
program. Gunakan fungsi sesuai kebutuhan (tprima.cpp).

104
E:\> tprima 7
7 bilangan prima pertama:
2 3 5 7 11 13 17

Gambar 9.3 Contoh tampilan soal nomor 2

3. Buatlah fungsi yang mengembalikan bilangan Fibonacci ke-n


(fibon.cpp).
Contoh input dan output fungsi tersebut:

fibo(0) = 0
fibo(1) = 1
fibo(5) = 5
fibo(9) = 34
fibo(11) = 89

4. Buatlah program yang menampilkan animasi karakter bergerak


ke kanan, berhenti, kemudian kembali dengan menerapkan
gerak lurus berubah beraturan. Setiap kali karakter menabrak
batas kiri, karakter akan dipantulkan dengan kecepatan yang
berkurang sesuai dengan deret geometrik. Program berhenti jika
karakter tidak lagi bergerak (geom.cpp).

E:\> geom
O

Gambar 9.4 Contoh tampilan soal nomor 4

5. Buatlah program yang menampilkan gambar bintang dengan


panjang sisi diberikan lewat parameter program (bintang.cpp).

E:\> bintang 4
*
* *
* *
***** *****
* *
* *
* *
* *
* *
***** *****
* *
* *
*

Gambar 9.5 Contoh tampilan soal nomor 5

105
6. Buatlah program untuk membuat piramida angka seperti pada
contoh di bawah. Tinggi piramida diberikan lewat parameter
program (batasi bilangan dari 0 hingga 9) (pirangka.cpp).

E:\> pirangka 7
1
121
12321
1234321
123454321
12345654321
1234567654321

Gambar 9.6 Contoh tampilan soal nomor 6

7. Buatlah fungsi untuk mencari FPB dari banyak bilangan


(fpb.cpp)
8. Buat program untuk menampilkan segitiga pascal menggunakan
fungsi rekursif (pascal.cpp).

E:\> pascal 3
1
1 1
1 2 1
1 3 3 1

Gambar 9.7 Contoh tampilan soal nomor 8

9. Buat program untuk memberikan solusi masalah menara hanoi


menggunakan fungsi rekursif (hanoi.cpp).
10. Dari suatu himpunan, misalnya {a, b, c, d} dapat dibuat
kombinasi dua-dua, sehingga menghasilkan {ab, ac, ad, bc, bd,
cd}, kombinasi tiga-tiga {abc, abd, acd, bcd}, dan seterusnya.
Buatlah fungsi untuk menghasilkan string kombinasi berdasarkan
himpunan huruf tertentu (kombhrf.cpp).

kombinasi(“abcd”, 2, 0) = “ab”
kombinasi(“abcd”, 2, 1) = “ac”
kombinasi(“abcd”, 2, 2) = “ad”
kombinasi(“abcd”, 3, 3) = “bcd”

106

You might also like