Anda di halaman 1dari 14

MODUL PERKULIAHAN

Praktikum Algoritma
dan Struktur Data
Penggunaan Function Pada Program

Fakultas : Ilmu Komputer Tatap Muka Kode Mata Kuliah : W4119004

Program Studi : Teknik Informatika


09 Disusun Oleh : Chaerul Anhar Tanof, S.Kom,MMSI

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

1. Pengertian Function dan manfaatnya dalam program

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

Tujuan menggunakan fungsi dalam program adalah memudahkan dalam pengembangan


program dan membuatnya menjadi lebih terstuktur. Pada setiap program pasti memiliki satu
function utama yang merupakan awal dari proses eksekusi program. CPU melakukan eksekusi
sekelompok pernyataan pada program yang dimulai dari function main(), sehingga function
tersebut merupakan function utama yang akan menjadi kepala dari program dimana semua
eksekusi pernyataan dijalankan. Bisa dibayangkan, jika kita membuat sebuah program yang
sangat besar dan kompleks yang didalamnya memerlukan pernyataan atau perintah yang sangat
panjang, apalagi jika sebuah proses pada program tersebut mempunyai banyak pernyataan yang
dapat dieksekusi berulang kali, ini akan menjadi sangat rumit apabila seluruhnya di muat dalam
function main(). Maka disinilah penggunaan function sangat membantu kita agar dapat membuat
pengelompokan pernyataan perintah berdasarkan tugas, proses atau katagori proses tertentu
diluar function main(), dan apabila kita membutuhkan kelompok pernyataan tersebut kita cukup
memanggil nama functionnya pada fungsi main atau pada blok program yang membutuhkannya.

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.

2. Membuat dan Mendefinisikan fungsi

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:

int nama_fungsi (int paremeter1, float parameter2, ....., tipedata parameterN ) {


statement perintah
Tubuh fungsi Definisi fungsi
return nilai;
}

Berikut penjelasannya dari bagian struktur tersebut :


• Suatu fungsi memiliki tipe data untuk nilai yang dikembalikan. Misalnya, fungsi dengan
tipe int, akan mengembalikan nilai bertipe integer dari hasil pemrosesan perintah dalam
tubuh fungsi. Beberapa fungsi dapat mengembalikan nilai, tapi ada juga function yang
tidak mengembalikan nilai, yakni fungsi dengan tipe void.
• Nama fungsi merupakan pengenal suatu fungsi yang akan dipanggil dari tempat lain.
• Parameter adalah variabel yang menampung input dari suatu proses yang memanggil
fungsi. Nilai dari parameter kemudian akan diproses oleh perintah di dalam fungsi.
Parameter bersifat opsional, boleh ada boleh tidak, tergantung dari fungsi yang dibuat.
• Statemen merupakan tempat menuliskan perintah yang akan dijalankan pada fungsi.
• Return merupakan instruksi untuk mengembalikan hasil pemrosesan dari suatu fungsi,
untuk dapat digunakan diluar fungsi atau di dalam main function.

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;

// deklarasi fungsi dengan cara prototype


int sum(int num1, int num2);

int main () { // program utama


int a = 10;
int b = 20;
int result;

result = sum(a, b); // pemanggilan fungsi dan memberikan parameter input

cout << "Jumlah penambahan adalah : " << result << endl;

return 0;
}

// isi dari fungsi yang akan memproses penjumlahan


int sum(int num1, int num2) {

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 :

Fungsi sum dipanggil

Parameter a disalin ke num1


Parameter b disalin ke num2
Fungsi sum di definisikan

Gambar 6.1 – Ilustarsi pengiriman parameter

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.

2.1 Deklarasi fungsi secara prototype function

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

Program hanya akan melaksanakan pernyataan-pernyataan yang berada di dalam function


utama (main). Pernyataan-pernyataan yang ada di dalam fungsi tidak akan dibaca oleh program
jika nama atau identifier pada fungsi yang kita buat tidak dipanggil di dalam fungsi utama atau
dalam fungsi lainnya. Program akan melaksanakan semua pernyataan yang dilewati pada fungsi
utama. Ketika program melewati sebuah pernyataan yang merupakan sebuah identifier dari
sebuah fungsi, maka program akan melaksanakan semua pernyataan di dalam fungsi tersebut
hingga selesai dan akan membawa nilai dari fungsi yang dipanggil jika fungsi tersebut
mengembalikan nilai. Selanjutnya, program akan melanjutkan pernyataan pada fungsi utama.
Untuk memanggil fungsi, kita cukup menuliskan nama dari fungsi tersebut dan memberi
sepasang tanda ( ), didalam tanda ini merupakan tempat dimana nilai argument untuk parameter
fungsi tersebut dimasukan, kita boleh mengosongkannya jika memang fungsi yang dipanggil
tidak membutuhkan argument parameter, namun jika fungsi yang dipanggil membutuhkan
parameter, maka kita harus mengisinya sesuai dengan kebutuhan dari fungsi tersebut.

Contoh pemanggilan fungsi :


//Function Tanpa Parameter
cetakPesan ();
//Function Dengan Parameter
tambah(argument1, argument2);

Contoh programmnya :

#include <iostream>
using namespace std;

string cetak_salam(); // fungsi tidak membutuhkan parameter


int penambahan(int num1, int num2); // fungsi membutuhkan parameter
int main () {
cetak_salam(); // tidak membutuhkan parameter
cout << "penambahan antara 1 dan 30 : " << penambahan( 10, 30) << endl; // butuh parameter nilai 1 dan 2
return 0;
}

string cetak_salam () {
return "Selamat datang ";
}

string penambahan (int num1, int num2) {


return (num1 + num2);
}

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;

void cetak_salam(); //deklarasi fungsi

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;

void cetak_salam(string a);


void kalkulasi(int a, int b);
void pengurangan(int a, int b);

int main () {
int angka1 , angka2;
string nama;
cout << "masukan nama anda : " ; cin >> nama;
cetak_salam(nama); // akan menampilkan salam + nama yang dimasukan

cout << "masukan angka 1 : " ; cin >> angka1;


cout << "masukan angka 2 : " ; cin >> angka2;

kalkulasi (angka1, angka2); // fungsi void 1


pengurangan (angka1, angka2); // fungsi void 2
return 0;
} //script dilanjut ke halaham berikutnya

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;
}

void kalkulasi (int a, int b) {


cout << "hasil penjumlahannya adalah " << a + b << endl; // hasil ditampilkan dengan cout
}

void pengurangan (int a, int b) {


a - b ; // proses tetap dijalankan, namun hasilnya tidak ditampilkan sehingga tidak akan muncul
}

Hasil kompilasi dan eksekusi program dapat dilihat pada gambar 6.2

Gambar 6.2 – hasil eksekusi

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;

void salam(string nama){


cout << "Haloo ... " << nama << "!\n";
}

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

Gambar 6.3 – pesan error karena parameter tidak dikirm

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) {

return (nilai1 * nilai2 ) ;


}

6. Pass by Value dan Pass by Refference

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;

// memanggil fungsi dengan memasukkan alamat memory variabel angka


kali_dua(&angka);

// mencetak isi variabel


// setelah fungsi dipanggil
cout << "isi variabel angka = " << angka << endl;

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;

long int pangkatrekursif(int x, int y);

int main(){

int x,y;

cout<<"FUNGSI REKURSIF UNTUK MENGHITUNG PANGKAT"<<endl;


cout<<endl;
cout<<"Masukan Nilai X = ";
cin>>x;

cout<<"Masukan Nilai Y = ";


cin>>y;
cout<<endl;
cout<<x<<" Dipangkatkan "<<y<<" = "<<pangkatrekursif(x,y)<<endl;
}

long int pangkatrekursif(int x, int y) {


if (y==0) { return 1; }
else { return x * pangkatrekursif(x,y-1); }
}

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 :

long int pangkatrekursif(int x, int y){


if (y==0) { return 1 ; }
else {return x * pangkatrekursif( x, y-1); }
}

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

Anda mungkin juga menyukai