Praktikum Algoritma
dan Struktur Data
Penggunaan Function Pada Program
Asbtrak Tujuan
Function atau fungsi digunakan untuk membagi Mahasiswa mampu memahami konsep dari
program berdasarkan bagian-bagian tertentu yang function, mampu membuat function dan
memiliki tugasnya masing-masing. sebuah fungsi menerapkannya di dalam sebuah program.
berisi sejumlah pernyataan yang dikemas dalam
sebuah nama, yang kemudian akan dipanggil kembali
di beberapa tempat di dalam progam. Pada sesi ini
akan dibahas mengenai fungsi dan pemanfaatan
fungsi pada suatu program.
FUNCTION
Function atau fungsi merupakan blok program yang berisi pengelompokan perintah atau
statement dengan nama yang dapat ditentukan sendiri. Pengelompokan perintah ini menghasilkan
sebuah sub-program yang berisi sekumpulan perintah untuk menjalankan suatu tugas tertentu,
yang selanjutnya dapat dipanggil di beberapa tempat dalam suatu program. Fungsi juga dapat
menerima input dan menghasilkan output, sehingga dapat digunakan untuk memproses nilai.
Dalam setiap program, setidaknya terdapat sebuah fungsi utama yang merupakan fungsi awal
untuk memanggil program yakni fungsi main(). Sebuah program dalam bahasa C++ terdiri dari
sekumpulan fungsi untuk membentuk suatu program, yakni :
• Fungsi utama, main()
• Fungsi standar dari C++, misalnya printf(), scanf() dsb
• Fungsi yang dibuat sendiri
2020 Praktirum Algoritma dan Struktur Data Pusat Bahan Ajar dan eLearning
2 Chaerul Anhar Tanof, S.Kom, MMSI http://www.undira.ac.id
Secara umum, tujuan dan manfaat penggunaan fungsi pada program adalah :
• Fungsi menjadikan program dalam bahasa C++ mempunyai struktur yang jelas, dengan
memisahkan bagian dari suatu proses pada fungsi utama kedalam sub program lainnya.
Sehingga fungsi utama akan lebih mudah dimengerti.
• Menghindari penulisan sekumpulan perintah secara berulang-ulang. Bagian yang
membutuhkan kumpulan perintah tersebut cukup memanggil nama fungsi yang berisi
sekumpulan perintah tersebut tanpa menulis ulang perintahnya.
Secara umum, fungsi terdiri dari dua bagian utama, yakni bagian definisi fungsi dan bagian
tubuh fugsi yang berisi sekumpulan perintah. Berikut adalah struktur dari suatu fungsi:
2020 Praktirum Algoritma dan Struktur Data Pusat Bahan Ajar dan eLearning
3 Chaerul Anhar Tanof, S.Kom, MMSI http://www.undira.ac.id
Untuk mendefinisikan dan membuat fungsi, penulisannya sama seperti membuat fungsi
utama int main(), yang berbeda adalah kita dapat memberi nama, memberi return type, dan
menambahkan parameter. Penulisan fungsi juga dilakukan diluar fungsi utama, seperti yang
dibahas sebelumnya bahwa fungsi merupakan bagian dari program yang dipecah kedalam sub-
program, maka hendaknya fungsi ditulis secara terpsisah. Namun, fungsi yang kita buat tidak
akan dieksekusi jika nama fungsi tidak dipanggil. Berikut adalah contoh penggunaan function
dalam sebuah program :
#include <iostream>
using namespace std;
cout << "Jumlah penambahan adalah : " << result << endl;
return 0;
}
int res;
res = num1 + num2;
return res;
}
Awalnya kita mendeklarasikan sebuah fungsi dengan nama sum. Seperti diketahui bahwa
setiap program C++ dimulai dari fungi utama atau main(). Pada main function dalam program
tersebut mendeklarasikan variabel lokal yakni a dan b, selanjutnya dipanggil fungsi sum yang
akan digunakan untuk memproses kedua variabel tersebut. Pemanggilan dilakukan dengan
mengirimkan variabel a dan b sebagai parameter result = sum(a, b); Kemudian fungsi sum
akan menangkap nilai dari parameter, lalu melakukan proses sesuai dengan perintah yang
diberikan didalamnya yakni menambahkan nilai dari variabel a dan b. Setelah memproses kedua
varibel, nilai akan dikembalikan ke fungsi yang memanggilnya. Nilai yang dikembalikan akan
ditampung dalam variabel res.
2020 Praktirum Algoritma dan Struktur Data Pusat Bahan Ajar dan eLearning
4 Chaerul Anhar Tanof, S.Kom, MMSI http://www.undira.ac.id
Jika diperhatikan pada script tersebut, timbul pertanyaan mengapa saat memanggil fungsi
sum parameter dilempar menggunakan variabel a dan variabel b, sedangkan pada fungsi sum,
variabel yang disebutkan adalah num1 dan num2. Apakah tidak terjadi kesalahan pembacaan,
atau memang seperti itu? Untuk menjawabnya perhatikan ilustrasi pada gambar 6.1 berikut :
Variabel yang menjadi parameter pada pemanggilan fungsi, akan otomatis disalin kedalam
variabel dalam parameter suatu fungsi, sehingga jika namanya berbeda pun akan tetap diterima
dan dapat dibaca oleh fungsi. Selanjutnya fungsi akan memproses nilai lalu mengembalikannya.
Prototype adalah sebuah pernyataan untuk medeklarasikan function tanpa diikuti oleh badan
dari function dan diakhiri dengan tada semicolon ; Function prototype berfungsi memberitahukan
kepada kompiler bahwa function tersebut ada di dalam program. Dengan demikian, kita juga
diwajibkan membuat definisi function yang berisi detail badan dan nilai kembalian dari function
pada baris lainnya. Perhatikan contoh program berikut :
#include <iostream>
using namespace std;
int main () {
cout << cetak_salam() << endl;
return 0;
}
string cetak_salam () {
return "Selamat datang ";
}
2020 Praktirum Algoritma dan Struktur Data Pusat Bahan Ajar dan eLearning
5 Chaerul Anhar Tanof, S.Kom, MMSI http://www.undira.ac.id
Sekilas terlihat program tersebut baik-baik saja, karena fungsi yang dipanggil pada main
program juga sudah tersedia di bawah fungsi main(). Namun kenyataannya, program tersebut
bahkan tidak dapat dikompilasi. Hal ini terjadi karena compiler membaca kode baris perbaris,
dari atas ke bawah. Pesan error tersebut terjadi karena pada main function terlebih dahulu
dipanggil fungsi cetak_salam() sebelum fungsi tersebut dibuat, atau lebih tepatnya fungsi
cetak_salam ditulis setelah fungsi main, sehingga compiler belum mengenali fungsi cetak_salam.
Solusi dari permasalahan tersebut cukup mudah, yaitu memindahkan deklarasi dan definisi
function cetak_salam sebelum function utama, sebagai berikut :
#include <iostream>
using namespace std;
string cetak_salam () {
return "Selamat datang ";
}
int main () {
cout << cetak_salam() << endl;
return 0;
}
Mungkin cara tersebut adalah cara yang relatif mudah saat membuat program yang tidak
besar, tapi mungkin akan menjadi masalah kemudian jika program menjadi lebih kompleks.
Setidaknya akan timbul kesulitan pada perawatan program, terutama dalam perawatan function,
kemungkinan kita mungkin juga akan susah untuk memanggil fungsi di dalam fungsi lainnya.
Berdasarkan hal inilah pendeklarasian fungsi dengan cara prototype ini dibutuhkan.
Mendeklarasikan prototype function harus dilakukan sebelum function utama (main).
Sedangkan tata letak untuk membuat detail function dapat dilakukan dimanapun asalkan tidak
boleh diletakkan sebelum prototype function nya. Perhatikan contoh berikut :
#include <iostream>
using namespace std;
string cetak_salam(); // deklarasi prototype
int main () {
cout << cetak_salam() << endl;
return 0;
}
string cetak_salam () { // definisi dan melengkapi function
return "Selamat datang ";
}
2020 Praktirum Algoritma dan Struktur Data Pusat Bahan Ajar dan eLearning
6 Chaerul Anhar Tanof, S.Kom, MMSI http://www.undira.ac.id
3. Mengakses function
Contoh programmnya :
#include <iostream>
using namespace std;
string cetak_salam () {
return "Selamat datang ";
}
2020 Praktirum Algoritma dan Struktur Data Pusat Bahan Ajar dan eLearning
7 Chaerul Anhar Tanof, S.Kom, MMSI http://www.undira.ac.id
4. Fungsi void
Adakalanya suatu fungsi tidak perlu mengembalikan nilai, misalnya fungsi yang hanya
digunakan untuk menampilkan suatu keterangan. Fungsi dengan tipe void biasanya digunakan
untuk menjalankan sebuah sub program tanpa mengembalikan nilai apapun kepada fungsi atau
proses yang memanggilnya. Namun demikian, kita dapat menampilkan hasil dari pemrosesan
program di dalam fungsi tersebut. Perhatikan contoh penggunaan fungsi void berikut :
#include <iostream>
using namespace std;
int main () {
cetak_salam();
return 0;
}
void cetak_salam () {
cout << "Selamat datang " << endl;
}
Selain menampilkan suatu keterangan, kita juga dapat membuat operasi dalam fungsi void ini,
misalnya operasi aritmatik. Hanya saja nilai dari operasi tersebut tidak dikembalikan ke fungsi
yang memanggilnya, kecuali kita menambahkan sintaks print atau cout pada fungsi void tersebut.
Perhatikan berikut :
#include <iostream>
using namespace std;
int main () {
int angka1 , angka2;
string nama;
cout << "masukan nama anda : " ; cin >> nama;
cetak_salam(nama); // akan menampilkan salam + nama yang dimasukan
2020 Praktirum Algoritma dan Struktur Data Pusat Bahan Ajar dan eLearning
8 Chaerul Anhar Tanof, S.Kom, MMSI http://www.undira.ac.id
void cetak_salam (string a) {
cout << "Selamat datang " << a << endl;
}
Hasil kompilasi dan eksekusi program dapat dilihat pada gambar 6.2
Pada hasil di gambar 6.2 terlihat bahwa hasil pemrorsesan fungsi pengurangan tidak
ditampilkan di layar, meskipun sudah dipanggil pada fungsi utama. Hal ini dikarenakan pada
fungsi pengurangan yang bertipe void, tidak terdapat perintah print atau cout untuk menampilkan
hasil pemrosesan, sebagaimana pada fungsi kalkulasi atau cetak salam.
5. Parameter fungsi
Parameter merupakan variabel yang menyimpan nilai untuk diproses ke dalam fungsi, dan
digunakan untuk mengirimkan nilai ke dalam suatu fungsi. Parameter terletak di antara tanda
kurung ( ) setelah nama dari function. Sebuah function dapat memiliki beberapa parameter yang
dipisahkan dengan tanda koma.
2020 Praktirum Algoritma dan Struktur Data Pusat Bahan Ajar dan eLearning
9 Chaerul Anhar Tanof, S.Kom, MMSI http://www.undira.ac.id
Perhatikan ilustrasinya pada script berikut :
#include <iostream>
using namespace std;
int main(){
string namasaya;
cout << "siapa nama anda ? : " ;
cin >> namasaya;
salam (namasaya);
return 0;
}
Pada pendefinisian fungsi salam, salam terdapat variabel nama yang merupakan parameter
dengan tipe data string. Parameter ini akan menyimpan nilai yang diinput ke fungsi salam().
Kemudian pada fungsi main, kita memanggil fungsi salam yang mewajibkan pengiriman sebuah
parameter sebagaimana yang didefinisikan pada fungsi tersebut. Maka kita memberikan nilai
paremeter kedalam fungsi salam() dengan mengirimkan variabel namasaya. Apabila kita tidak
memasukan parameter kedalam fungsi tersebut, program akan menjadi error sebagaimana yang
ditampilkan di gambar 6.3
2020 Praktirum Algoritma dan Struktur Data Pusat Bahan Ajar dan eLearning
10 Chaerul Anhar Tanof, S.Kom, MMSI http://www.undira.ac.id
Terdapat dua jenis parameter yang dikenal dalam penggunaan fungsi, yaitu parameter
Formal dan parameter Aktual. Parameter formal merupakan variabel yang ditulis pada deklarasi
dan definisi fungsi, sedangkan paramater aktual merupakan variabel yang digunakan didalam
pemanggilan fungsi. Perhatikan script berikut :
#include <iostream>
using namespace std;
// deklarasi fungsi
float perkalian(long nilai1, long nilai2); // nilai1 dan nilai2 merupakan parameter formal
int main(){
float hasil;
int a; int b;
cout << " input nilai 1 :" ; cin >> a ;
cout << " input nilai 2 :" ; cin >> b ;
hasil = perkalian(a, b); // a dan b merupakan parameter aktual
cout << "hasil perkalian antara " << a << " dan " << b << " adalah : " << hasill;
}
//definisi fungsi
float perkalian (long nilai1, long nilai2) {
Pass by value dan Pass by refference merupakan cara untuk memberikan nilai kedalam
parameter pada suatu fungsi. Secara umum, cara untuk memberikan nilai kedalam parameter
adalah Pass by value, dimana dalam suatu fungsi kita langsung memberikan nilai kedalam
paremeter pada fungsi tersebut, seperti didalam potongan script program berikut :
int main(){
float hasil;
int a=10; int b=7;
hasil = perkalian(a, b); // pass by value
cout << "hasil perkalian antara " << a << " dan " << b << " adalah : " << hasil;
}
2020 Praktirum Algoritma dan Struktur Data Pusat Bahan Ajar dan eLearning
11 Chaerul Anhar Tanof, S.Kom, MMSI http://www.undira.ac.id
Cara lain untuk mengisi nilai dalam parameter adalah dengan metode pass by refference.
Pada pass by value yang dikirimkan ke fungsi adalah nilai dari datanya, namun untuk metode
Pass by refference yang dikirimkan ke fungsi adalah referensi atau alamat memory dari datanya.
Perhatikan contoh berikut :
#include <iostream>
using namespace std;
void kali_dua(int *num){
*num = *num * 2;
}
int main(){
int angka = 9;
return 0;
}
Fungsi kali_dua() memiliki parameter berupa pointer (dengan simbol * ), artinya kita harus
memberikan alamat memori untuk pointer ini. Pada saat pemanggilan, fungsi kali_dua( ) kita isi
parameternya dengan alamat memori dari variabel angka. Hasilnya jika program dijalankan, nilai
variabel angka akan dikalikan dengan 2 berdasarkan rumus pada fungsi yang kita berikan.
7. Fungsi rekursif
Fungsi rekursif merupakan fungsi yang memanggil dirinya sendiri. Jika biasanya kita
memanggil sebuah fungsi yang berada diluar lingkup fungsi, maka fungsi rekursif dapat
memanggill dirinya sendiri di dalam badan fuction. Fungsi rekursif jarang di temui tergantung
kondisi dan pemakaian yang di perlukan untuk menjalankan instruksi sesuai fungsi tersebut.
2020 Praktirum Algoritma dan Struktur Data Pusat Bahan Ajar dan eLearning
12 Chaerul Anhar Tanof, S.Kom, MMSI http://www.undira.ac.id
Berikut adalah program untuk menghitung nilai pangkat menggunakan fungsi rekursif
#include <iostream>
using namespace std;
int main(){
int x,y;
Pada program tersebut, pengguna akan memasuka nilai x dan y lalu kemudian nilai x aakan
dipangkatkan dengan nilai y. Jika kita lihat pada fungsi rekursif-nya sebagai berikut :
disini kita membuat fungsi dengan nama pangkatrekursif dengan 2 parameter yaitu nilai x dan y,
jika nilai y yang dimasukan adalah 0 maka akan di set nilai baliknya adalah 1, namun jika tidak
maka fungsi tersebut di set nilai baliknya dimana nilai x akan dikalikan nilai y -1 .
***
2020 Praktirum Algoritma dan Struktur Data Pusat Bahan Ajar dan eLearning
13 Chaerul Anhar Tanof, S.Kom, MMSI http://www.undira.ac.id
DAFTAR PUSTAKA
1. FourtMark Allen Weiss, Fourth Edition Data Structures and Algorithm Analysis in C++, Pearson, 2014.
2. Kjell Backman, Structured Programmming with c++, 2012.
3. Budi R, Pemrograman C++, Informatika, Bandung, 2010.
4. Sjukani M, Algoritma: Algoritma dan Struktur Data 1 dengan C, C++ dan Java Edisi 6. Jakarta, Mitra
Wacana Med, 2010.
5. Andri Kristanto, Algoritma & Pemrograman dengan C++ Edisi 2, Graha Ilmu, Yogyakarta, 2009.
6. http://www.c4learn.com/cplusplus/cpp-functions-introduction/ Diakses 19 April 2020 jam 18.25
2020 Praktirum Algoritma dan Struktur Data Pusat Bahan Ajar dan eLearning
14 Chaerul Anhar Tanof, S.Kom, MMSI http://www.undira.ac.id