Anda di halaman 1dari 44

MINGGU 10

FUNGSI DAN PROSEDUR


A. TUJUAN
Setelah menyelesaikan modul ini diharapkan mahasiswa akan mampu:
1. Mahasiswa mampu memahami fungsi dan prosedur.
2. Mahasiswa mampu mendeklarasikan dan mendefinisikan fungsi dan prosedur.
3. Mahasiswa mampu menyelesaikan masalah menggunakan fungsi dan procedure
4. Mahasiswa mampu memahami metode fungsi dan prosedure
5. Mahasiswa mampu memahami dan membuat rekursf

B. PETUNJUK
1. Awali setiap aktivitas anda dengan doa, agar anda lancar dalam belajar
2. Kerjakan tugas-tugas praktikum dengan baik, jujur, dan sabar
3. Tanyakan kepada instruktur apabila ada hal-hal yang kurang jelas

C. DASAR TEORI
1. Pengertian Fungsi dan Prosedur
Prosedur/Fungsi adalah suatu program terpisah dalam blok sendiri yang berfungsi
sebagai subprogram (program bagian). Tujuan pembuatan fungsi atau prosedur adalah
1. Program menjadi terstruktur
2. Dapat mengurangi duplikasi kode
3. Fungsi/procedur dapat di panggil berulangkali sesuai dengan kebutuh
Pada umumnya fungsi atau procedure memerlukan masukan yang di sebut parameter
atau argument. Parameter atau argument dapat lebih dari satu atau tidak sama sekali.
untuk memberi nama pada fungsi atau procedur aturannya sama dengan membuat
variable. Bentuk umum penulisannya adalah
typeDataFungsi namaFungsi(parameter){
//isi fungsi
}

2. Perbedaan fungsi dan procedure


Prosedur :
Prosedur dalam Bahasa C++ diawali dengan tipe data “void” yang artinya kosong.
Artinya procedure tidak memiliki tipe data dan tidak memiliki nilai kembalian
Contoh prosedur menampilkan angka 1 sampai batas yang di tentukan :

void luaspersegipanjang(int batas){


for(int i = 1; i < batas; i++) { cout << i << endl; }
}
Fungsi :
Fungsi dalam Bahasa C++ diawali dengan sebuah tipe data seperti int, Boolean, float,
dll dan fungsi memiliki sebuah nilai kembalian yang di tandai dengan “return”.
Contoh fungsi menghitung luas persegi panjang :

int luaspersegi(int panjang, int lebar){


int hasil = panjang * lebar;
return hasil;
}

3. Prototype fungsi dan prosedure


Sebuah program C++ dapat terdiri dari banyak fungsi. Salah satu fungsi tersebut
bernama main(). Pada umumnya fungsi di letakkan sebelum main. Jika fungsi yang
lain di tuliskan setelah fungsi main(), sebelum fungsi main harus ditambahkan
prototype function agar fungsi tersebut dapat dikenal. Hal tersebut tidak berlaku jika
penulisannya dilakukan sebelum fungsi main().

#include <iostream>
using namespace std;

//prototype fungsi
void hitung(int angka);
int luas(int p, int l);

int main(){
//isi fungsi main
}

//inisialisasi prosedur hitung


void hitung(int angka){
cout << angka * 3;
}

//inisialisasi fungsi luas


int luas(int p, int l){
int hasil = p * l;
return hasil;
}
FUNGSI

1.1. PENGERTIAN FUNGSI

Fungsi adalah sejumlah instruksi yang dikelompokkan menjadi satu, berdiri


sendiri, yang berfungsi untuk menyelesaikan suatu pekerjaan tertentu. Bahasa
C adalah suatu bahasa yang struktur penulisannya merupakan kumpulan dari
fungsi-fungsi. Setiap Fungsi mempunyai nama. Bahasa C minimal terdiri dari
satu buah fungsi yang disebut Fungsi main( ). Nama main adalah nama fungsi
yang ditentukan oleh Bahasa C, yang tidak boleh diganti dengan nama lain.
Fungsi-fungsi lain (yang dibuat sendiri bila diperlukan) namanya dapat dikarang
sendiri. Fungsi main( ) sering juga disebut Fungsi Induk atau Fungsi Utama.
Dalam Fungsi main inilah kita menuliskan instruksi-instruksi utama. Bahasa C
juga menyiapkan banyak Fungsi Pustaka (Library Function) yang siap
digunakan seperti fungsi printf() atau scanf().
Fungsi digunakan untuk mempermudah kita dalam membuat sebuah program,
terutama program yang besar dan banyak melakukan beberapa hal yang sama.
Fungsi mempunyai ciri-ciri sebagai berikut :
a. Memiliki nama dari fungsi tersebut
b. Memiliki tugas spesifik tertentu
c. Memiliki sekumpulan statemen/perintah untuk melakukan tugas tersebut
d. Mengembalika sebuah nilai kepada fungsi lain yang
memanggil/memerlukannya (jika perlu)

1.2. JENIS FUNGSI


Ada dua jenis fungsi pada C++, yaitu:
1. Void (fungsi tanpa nilai balik)
Fungsi yang void sering juga prosedur. Disebut void karena fungsi tersebut
tidak mengembalikan suatu nilai keluaran yang didapat dari hasil proses funsi
tersebut.
Ciri-ciri dari jenis fungsi void adalah sebagai berikut:
a. Tidak adanya keyword return
b. Tidak adanya tipe data di dalam deklarasi fungsi
c. Menggunakan keywoard void
d. Tidak dapat langsung ditampilkan hasilnya
e. Tidak memiliki nilai kembalian fungsi
f. Keywoard void juga digunakan jika suatu function tidak mengandung suatu
parameter apapun
Contoh program implementasi fungsi dengan void:

Output program implementasi fungsi dengan void :

2. Non-Void (fungsi dengan nilai balikan)


Fungsi non-void disebut juga dengan function. Disebut non-void karena
mengembalikan nilai kembalian yang berasal dari keluaran hasil proses function
tersebut.
Ciri-ciri dari jenis fungsi non-void adalah:
a. Adanya keywoard return
b. Ada tipe data yang mengawali fungsi
c. Tidak adanya keyword void
d. Memiliki nilai kembalian
e. Dapat dianalogikan sebagai suatu variabel yang memiliki tipe data tertentu
f. Sehingga dapat langsung ditampilkan hasilnya
g. Non-void: int jumlah(int a, int b)

Contoh program implementasi fungsi dengan non-void:

Output program implementasi fungsi dengan non-void:

1.3. PEMANGGILAN FUNGSI


Ada dua cara pemanggilan fungsi, yaitu:
1. Call by value
Pemanggilan fungsi dengan melewatkan nilai parameter variabel dalam definisi
fungsi. Fungsi tersebut akan mengolah nilai yang dikirmkan kepadanya. Atau
Calling function dapat mengirimkan ( passing) suatu nilai ke Called function .
Bila nilai yang dikirim adalah nilai atau data yang akan diproses, maka
pengiriman nilai disebut passing by value.
Contoh implementasi passing by value :
Variabel T disebut sebagai Parameter

T disini adalah variabel yang


nilainya dikirim ke fungsi
CETAK(), ( passing value )
dan diterima oleh variabel
T dalam fungsi CETAK()

Variabel T disebut sebagai Argument

Nama variabel Argument boleh berbeda dengan nama variabel Parameter

Contoh implementasi call by value pada array satu dimensi

Ouput :
2. Call by reference
Pemanggilan dengan referensi merupakan suatu usaha melewatkan alamat dari
suatu variabel ke dalam fungsi. Dengan pengubahan dilakukan di dalam fungsi
untuk mengubah variabel di luar fungsi. Bila nilai yang dikirim berupa nilai
pointer (bukan data) yang me refer ke suatu data, maka pengiriman tersebut
disebut passing by reference. Metode Call by Refrence menggunakan operator
pointer ‘&’ dan ‘*’ untuk mengirimkan alamat variabel ke suatu fungsi.

Contoh implementasi call by reference

Yang dikirim bukan data


tapi nilai pointer ,
ditulis : P
bukan *P;

Untuk menerima nilai


pointer harus disiapkan
variabel bertipe pointer
juga
Ouput :

Keterangan program call by reference :


P dan Q adalah dua buah variabel pointer yang berbeda, tapi isinya
sama, yaitu sama-sama alamat variabel A
Contoh implementasi call by reference pada array satu dimensi :

Output :

1.4. DEKLARASI DAN DEFINISI FUNGSI


Fungsi dapat dibuat diatas(sebelum) atau dibawah (sesudah) fungsi main atau
fungsi utama
A. Deklarasi Fungsi
Deklarasi fungsi adalah judul fungsi yang sederhana yang diikuti oleh tanda
semicolon( ;). Deklarasi fungsi diletakkan sebelum fungsi utama atau main().
Fungsi perlu dideklarasikan agar compiler dapat memeriksa ketepatan
pemanggilan fungsi yang bersangkutan. Deklarasi fungsi disebut juga sebagai
prototype fungsi. Jika fungsi dibuat sesudah fungsi utama, maka prototipe
fungsi tersebut harus dibuat terlebih dahulu diatas fungi main( fungsi utama).
Prototipe fungsi adalah header dari fungsi dan diberi tanda titik koma(;)
dibagian belakang.
Berikut ini adalah cara mendeklarasikan sebuah fungsi dalam bahasa C:

Tipe nama fungsi(parameter);

Tipe adalah tipe daya dari nilai yang akan dikermbalikan oleh fungsi. Nama
fungsi adalah nama dari fungsi yang dibuat. Nama ini yang akan digunakan
untuk memanggil fungsi yang telah kita buat. Parameter adalah nama dan
tipe variabel yang akan digunakan untuk menyimpan nilai yang dibutuhkan oleh
fungsi tersebut. Jika dalam sebuah fungsi terdapat lebih dari satu
parameter, maka parameter ditulis dengan dipisahkan dengan koma.
Contoh deklarasi fungsi :

Nama Fungsi Parameter

int Hitung(int A);


Diakhiri
dengan titik
koma(;
Tipe Fungsi Tipe paramater , sama
dengan tipe daru
fungsi

B. Definisi Fungsi
Definisi fungsi adalah fungsi yang lengkap, terdiri dari judul dan isinya. Definisi
fungsi bisa dibuat sebelum fungsi utama atau sesudah fungsi utama.
Tipe namafungsi(parameter)
{
- Perintah yang akan
- dikerjakan ketika
- fungsi dipanggil
}

CONTOH DEFINISI FUNGSI SEBELUM FUNGSI UTAMA :

#include <stdio.h>
}
int luaspersegipanjang(int P, int L)
{
int Luaspp;
Luaspp=P*L;
return Luaspp;

main()
{
int panjang, lebar,luas; Contoh Definisi
fungsi sebelum
printf("Masukkan Panjang="); fungsi utama
scanf("%i",&panjang);
printf("Masukkan Lebar=");
scanf("%i",&lebar);
luas=luaspersegipanjang(panjang,lebar);
printf("Luas Persegi Panjang=%i",luas);
}
Pada contoh diatas jika sebuah fungsi sudah didefinisikan sebelum fungsi
utama maka fungsi tersebut tidak perlu di deklarasikan.
CONTOH DEFINISI FUNGSI SESUDAH FUNGSI UTAMA :

#include <stdio.h>
int luaspersegipanjang(int P, int L);
main()
{
int panjang, lebar,luas;
printf("Masukkan Panjang=");
scanf("%i",&panjang);
printf("Masukkan Lebar=");
scanf("%i",&lebar);
luas=luaspersegipanjang(panjang,lebar);
printf("Luas Persegi Panjang=%i",luas);
}

luaspersegipanjang(int P, int L)
{ Definisi fungsi
setelah fungsi utama
int Luaspp;
Luaspp=P*L;
return Luaspp;
}

Berdasarkan contoh program diatas jika sebuah fungsi didefinisikan setelah


fungsi utama maka fungsi harus di deklarasikan terlebih dahulu sebelum
fungsi utama
Contoh-1 implementasi deklarasi dan definisi fungsi dalam
bahasa C:
Deklarasi Fungsi
- Diletakkan sebelum fungsi
utama
- Diakhiri dengan titik koma(;)

Definisi Fungsi
- Boleh sebelum fungsi
utama atau setelah fungsi
utama
- Setelah nama fungsi
tidakada titik koma(;)

Output :

Contoh-2 implementasi deklarasi dan definisi fungsi dalam


bahasa C:

#include<stdio.h>
void main()
{
CETAK();
}
void CETAK() Sewaktu compile
terjadi Error
{
Error karena fungsi
printf(“Padang”); CETAK
tidak dideklarasi
} sebelumnya

Contoh yang benar :


#include<stdio.h>
void CETAK()
{ Fungsi CETAK ditulis 10
disini
diatas atau sebelum fungsi
printf(“Padang”); main()

}
void main()
{
CETAK();
}
Output :

Keterangan :
Bila Fungsi CETAK( ) ditulis diatas atau sebelum Fungsi main( ), maka tidak
diperlukan lagi menDEKLARASIKAN Fungsi CETAK.

1.5. PARAMETER FUNGSI


Terdapat dua macam parameter fungsi, yaitu :
a. Parameter Formal : variabel yang ada pada daftar parameter dalam
definisi fungsi
b. Parameter Actual : variabel yang dipakai dalam pemanggilan fungsi
Bentuk penulisan parameter formal dan parameter actual
Contoh paramater Formal :
main()
{
.....
X=Total (A,B) Parameter Formal
......
}

Contoh Parameter Actual :


float Total(float A,Float B)
{
return(A+B)
}

1.6. VARIABEL LOKAL DAN GLOBAL DALAM FUNGSI


a. Variabel Lokal :
Variabel lokal adalah variabel yang hanya dikenali oleh sebuah fungsi / prosedur
saja (hanya dikenali pada fungsi / prosedur tempat variabel tersebut
dideklarasikan). Hal tersebut karena proses deklarasi variabel lokal dilakukan di
dalam lingkup fungsi yang dimaksud.Semua variabel yang ada dalam fungsi
utama main(), juga bersifat LOKAL, hanya dikenal dalam fungsi main() saja,
tidak dikenal didalam fungsi lain.
Contoh implementasi variabel lokal dalam bahasa C:

b. Variabel Global :
Apabila di dalam kode program membutuhkan sebuah variabel yang dapat
dikenali oleh semua lingkungan dalam program yang kita buat, maka variabel
tersebut harus dideklarasikan sebagai variabel yang bersifat global.
Dalam bahasa C++ sendiri kita telah mengetahui bahwa struktur program
dalam bahasa C++ selalu ada fungsi utama dengan nama main() . Apabila kita
mendeklarasikan sebuah variabel diluar fungsi main() / fungsi lain / prosedur
lain, maka dengan sendirinya compiler akan menganggap variabel tersebut
sebagai variabel global.
Jadi Variabel global adalah variabel yang dapat digunakan atau dipanggil atau
dikenali oleh semua fungsi / prosedur / dikenali diseluruh program. Variabel
global ini dapat digunakan pada beberapa fungsi / prosedur, Hal ini betujuan
untuk menghemat penulisan, karena tidak perlu lagi berkali - kali menuliskan
variabel yang sama pada beberapa fungsi / prosedur.
Contoh implementasi variabel global dalam bahasa C :

Variabel T didefinisikan
tersndiri diatas (sebelum)
semua fungsi, sehingga
variabel T berlaku disemua
tempat, baik dalam program
utama (main() ) maupun
dalam sub program atau
fungsi-fungsi yang dibuat .
Variable T disebut bersifat
GLOBAL

Output :

Keterangan program :
Dari contoh program diatas, main program atau main function disebut CALLING
Function, yaitu program yang mengCall, dan Fungsi CETAK disebut CALLED
Function karena dia merupakan fungsi yang di Call.

1.7. SEBUAH FUNGSI DAPAT MEMANGGIL FUNGSI YANG LAIN


Sebuah fungsi dapat memanggil fungsi yang lain, maksudnya, dalam sebuah
fungsi, boleh saja ada instruksi yang memanggil fungsi yang lain
Pada contoh program dibawah ini dalam Fungsi HITUNG() ada instruksi yang
memanggil Fungsi TAMBAH().
Contoh implementasi programsebuah fungsi memanggil fungsi yang lain :

Output :
1.8. FUNGSI REKURSI
Fungsi rekursi adalah suatu fungsi yang memanggil dirinya sendiri, artinya
fungsi tersebut dipanggil didalam tubuh fungsi itu sendiri
Contoh soal -1 :
Susun algoritma untuk menginput sebuah nilai integer (misal masuk ke variabel
N ), kemudian hitung N! ( baca: N faktorial)
Contoh bila N = 5, maka N! = 5 * 4 * 3 * 2 * 1 = 120 (Jadi 5 ! = 120)
Jawab Soal-1 dalam Bahasa C:

Output :
SOAL LATIHAN
Soal-1
Apa yang tercetak bila program-program berikut ini dijalankan :
A. B.
#include <stdio.h> #include<stdio.h>
int PROSES(int A);
void CETAK ( int *Q);
main()
{
int I,A;
main()
A=15;
for(I=1; I<=3; I++) {
{
int A[10] = { 12,7,5,15,17,
A = PROSES(A);
printf(“ %i \n”, A); 10,14,25,8,11};
}
int *P;
}
int PROSES(int A) P = A;
{
CETAK(P);
A=A*2;
return(A); }
}

void CETAK (int *Q)


{ int I;
for(I=1; I<=5; I++ )
{ printf("\n%i",*Q);
Q+=2;
}
}

Soal -2 :
Sudah dibuat program induk yaitu fungsi main( ) sebagai berikut :
#include <stdio.h>
void main()
{ int A[100];
Lanjutkan atau lengkapi program diatas, untuk mengisi array A sampai penuh
dengan nilai-nilai integer (nilai ujian 100 orang mahasiswa) yang diinput dari
luar, dimana proses penginputan dan pengisiannya kedalam array dilakukan
dalam sebuah Fungsi. Nama Fungsi dapat dikarang sendiri. Penempatan
penulisan Fungsi bebas, dapat ditulis diatas atau dibawah Fungsi main.
Kemudian tambahkan sebuah Fungsi lain yang gunanya menghitung nilai rata-
rata isi array tersebut (nilai rata-rata ujian mahasiswa). Dan cetak nilai rata-
rata tersebut, dimana instruksi mencetaknya berada dalam Fungsi main juga.
Soal -3
Susun program untuk menginput sebuah nilai integer lebih besar dari 10, (misal
N) kemudian menghitung dan mencetak total :
1+2+3+4+5+…+…+…+N
dimana instruksi input ditulis dalam program induk (fungsi main), proses
penghitungan total dilakukan didalam sebuah Fungsi yang dibuat sendiri, dan
instruksi mencetak total ditulis dalam program induk (dalam Fungsi main ).
(Buat menggunakan fungsi rekursi

KESIMPULAN
1. Jenis fungsi ada dua :
a. Void (fungsi yang tidak perlu return atau mengembalikan nilai)
b. Non-void (fungsi yang harus ada return atau mengembalikan nilai)
2. Pemanggilan fungsi :
a. Call By value
b. Call by Reference
3. Deklarasi fungsi adalah judul fungsi yang sederhana yang diikuti oleh tanda
semicolon( ;). Deklarasi fungsi diletakkan sebelum fungsi utama atau
main().
4. Definisi fungsi adalah fungsi yang lengkap, terdiri dari judul dan isinya.
5. Variabel lokal adalah variabel yang hanya dikenali oleh sebuah fungsi /
prosedur saja (hanya dikenali pada fungsi / prosedur tempat variabel
tersebut dideklarasikan)
6. Variabel global adalah variabel yang dapat digunakan atau dipanggil atau
dikenali oleh semua fungsi / prosedur / dikenali diseluruh program
4. Fungsi rekursif
Rekursif adalah memanggil dirinya sendiri, artinya fungsi tersebut di panggil pada
bagian tubuh fungsi atau isi fungsi. Hampir sama seperti perulangan, fungsi rekursif
juga terdapat batasan kapan rekursif tersebut akan berhenti. Jika tidak maka rekursif
tersebut tidak akan berhenti(infinitie loop).

Contoh fungsi mencari factorial n

Int faktorial(int n){

//batasan / bestcase
If(n == 1){
return 1;
}

return n*faktorial(n+1);
}

D. LATIHAN
1. Latihan 1
2. Latihan 2

3. Latihan 3
a. Pengertian Fungsi

Fungsi adalah sebuah fungsi berisi sejumlah pernyataan yang


dikemas dalam sebuah nama. Selanjutnya nama ini dapat dipanggil di
beberapa tempat dalam program. Fungsi merupakan suatu bagian dari
program yang dimaksudkan untuk mengerjakan suatu tugas tertentu dan
letaknya terpisah dari program yang memanggilnya. Fungsi merupakan
elemen utama dalam bahasa C++ karena bahasa C++ sendiri terbentuk
dari kumpulan fungsi-fungsi. Tujuan pembuatan fungsi adalah
memudahkan dalam pengembangan program. Ini merupakan kunci
dalam pembuatan program yang terstruktur. Menghemat ukuran
program. Dalam setiap program bahasa C++, minimal terdapat satu
fungsi yaitu fungsi main(). Fungsi banyak diterapkan dalam program-
program C++ yang terstruktur.
Keuntungan penggunaan fungsi dalam program yaitu program
akan memiliki struktur yang jelas (mempunyai readability yang tinggi)
dan juga akan menghindari penulisan bagian program yang sama. Dalam
bahasa C++ fungsi dapat dibagi menjadi dua, yaitu (1) fungsi pustaka

77
atau fungsi yang telah tersedia dalam Turbo C++ ; dan (2) fungsi yang
didefinisikan atau dibuat oleh programmer.
Fungsi digunakan agar pemrogram dapat menghindari penulisan
bagian program (kode) berulang-ulang, dapat menyusun kode program
agar terlihat lebih rapi dan kemudahan dalam debugging program.
Parameter adalah nama-nama peubah yang dideklarsikan pada bagian
header fungsi. Pemrogram dapat membuat fungsi yang didefinisikan
sendiri olehnya.

Gambar 32. Diagram definisi fungsi dalam fungsi

Contoh Sebuah fungsi yang namanya void garis


// contoh pembuatan dan pemanggilan fungsi garis
#include <iostream.h>
#include <conio.h>
#include <iomanip.h>
void garis(); //prototipe fungsi garis ();
void main()
{
clrscr (); //hapus layar
garis(); //panggil fungsi garis ();

cout <<setiosflags(ios::left); //atur rata kiri


cout <<setw(26) << "J u d u l B u k u "<< "PENGARANG " << endl;
garis ();
cout << setw(26) <<"Mastering Borland C++"<<"Tom Swan" << endl;
cout << setw(26) <<"Turbo C++ By Example"<<"M Johnson" << endl;
cout << setw(26) <<"Converting C to C++"<<"Lan Dorfman" << endl;
garis ();
}

78
Keterangan :

void garis() //definisi fungsi garis (tidak memakai titik


koma)
{
int i;
for (i=0; i< 49; i++)
cout << '-';
cout << endl;
}
Catatan :
Di dalam fungsi, pemrogram dapat mendefinisikan variabel fungsi
(seperti pada fungsi garis() ataupun membuat konstanta, akan tetapi di
dalam fungsi tidak dianjurkan untuk membuat fungsi yang lain.
Umumnya fungsi menerima masukkan (disebut Argumen atau
parameter)
Masukkan ini selanjutnya diproses oleh fungsi.
Hasil akhir fungsi berupa sebuah nilai yang disebut Nilai Balik (return
value)
Sebagai contoh, kalau terdapat pernyataan :
Kap = toupper (huruf );
Maka :Huruf adalah argumen bagi fungsi toupper()
Toupper() merupakan nilai balik (berupa huruf kapital dari huruf) ke
variabel kap.

Argumen/
Parameter FUNGSI Nilai balik

Gambar 33. Bentuk blackbook fungsi

b. Proptotipe Fungsi
Sebuah fungsi tidak dapat dipanggil kecuali sudah dideklarasikan.
Perhatikan contoh berikut ini :

79
void main ()
{
printf (“hai\n”);
}

Jika program ini dijalankan , C++ akan memberikan kesalahan, yang


menyatakan bahwa printf() tidak memiliki prototipe.
Hal seperti ini masih bisa lolos pada bahasa C, akan tetapi tidak demikian
pada C++.
Kesalahan tersebut tidak akan terjadi jika ditulis seperti berikut :
#include <stdio.h>
Void main ()
{
printf (“Hai\n”);
}

Mengapa ? Tidak lain karena prototipe fungsi printf() ada pada file
stdio.h.
Oleh karena itu diperlukan untuk menyertakan baris berbentuk :
#include <nama_file_header>
Sekiranya program melibatkan fungsi-fungsi yang disediakan sistem.
Sebuah fungsi tidak dapat dipanggil kecuali sudah dideklaraikan,
deklarasi fungsi dikenal dengan sebutan prototipe fungsi.

Prototipe fungsi berupa :1. Nama Fungsi; 2. Tipe nilai fungsi; 3. Jumlah
dan tipe argument, dan diakhiri dengan titik koma, sebagaimana pada
pendeklarasian variabel. Sebagai Contoh perhatikan berikut ini:
1. Long kuadrat (long l) ;
Pada Contoh pertama, fungsi kuadrat ( ) mempunyai argumen
bertipe long dan nilai balik bertipe long.
2. Double maksimal (double x, double y)
Pada Contoh kedua, fungsi maks( ) mempunyai dua buah
argumen, dengan masing-masing argumen bertipe double.

80
3. Void garis ( );
Pada Contoh ketiga, fungsi garis ( ) tidak memiliki argumen dan
nilai baliknya tidak ada (void).

Manfaat dari prototipe fungsi adalah untuk menjamin tipe


argumen yang dilewatkan pada pemanggilan fungsi benar-benar sesuai.
Tanpa adanya prototipe fungsi, amatlah mudah propgramer melakukan
kesalahan tanpa sengaja dalam melewatkan argumen.
Pada prototipe fungsi, nama argumrn boleh ditiadakan. Sebagai contoh :

long kuadrat (long ) ;


(Sebaiknya dihindari agar tidak membingungkan)
Berikut merupakan alternatif lain dari :
long kuadrat (long l) ;

c. Definisi Fungsi
Setiap fungsi yang dipanggil di dalam program harus didefinisikan.
Letaknya boleh dimana saja. Khusus fungsi yang disediakan sistem,
definisinya sudah ada di dalam pustaka.

Nama fungsi Argumen

long kuadrat (long l) Tidak diakhiri ;


{ koma
return (l*l);
}
Tipe argumen
Tipe nilai balik koma

Gambar 35. Bentuk definisi fungsi

81
Berikut contohnya :
//prototipe fungsi
long kuadrat (long l);
---------------------------------
// definisi fungsi
long kuadrat (long l)
{
return ( l * l );
}

Penjelasan :
 Pada pendefinisian fungsi (perhatikan ) tidak ada titik koma. Pada
prototipe harus pakai titik koma.
 Pernyataan return di dalam fungsi digunakan untuk memberikan
nilai balik fungsi. Dalam hal ini fungsi kuadrat () memberikan nilai
balik berupa nilai kuadrat dari argurmen.
 Perhatikan contoh program berikut ;

// contoh pembuatan fungsi dengan argumen bertipe long


// dan nilai balik juga berupa long
#include <iostream.h>
#include <conio.h>
#include <iomanip.h>
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; //pemanggilan fungsi kuadrat
}

// definisi fungsi
long kuadrat (long l)
{
return (l * l);
}

82
Contoh Program pendefinisian fungsi maks (). Program ini berguna untuk
mendapatkan nilai terbesar dari dua buah argumen

double maksimal (double x; double y)


{
if (x>y)
return(x);
else
return (y);
}
Catatan : penempatan return boleh dimana saja. Begitu perintah ini
dijalankan, eksekusi terhadap fungsi berakhir.

Perhatikan contoh berikut ini:


// cintoh fungsi untuk memperoleh nilai terbesar di antara keduanya

#include <iostream.h>
#include <conio.h>
double maksimal (double x, double y); //prototipe fungsi
void main()
{
clrscr();
cout << maksimal (6578, 123) << endl;
cout << maksimal (123, 6578) << endl;
}
// definisi fungsi
double maksimal (double x; double y)
{
if (x>y)
return(x);
else
return (y);
}

83
d. Fungsi tanpa Nilai Balik
Adakalanya suatu fungsi tidak perlu memiliki nilai balik. Misalnya
fungsi hanya untuk menampilkan suatu keterangan saja. Pada fungsi ini
tipe nilai balik fungsi yang diperlukan adalah void.
Perhatikan contoh berikut ini :
void tampilkan_judul ()
{
cout << “ Dikompilasi oleh “<<endl;
cout << “ Akmam “<<endl;
cout << “ Fisika FMIPA UNP“<<endl;
return ; // ada return di sini.
}

e. Lingkup Variabel
Tujuannya mempelajari ini adalah : agar tidak salah dalam
menggunakan suatu variable, lingkup variabel menentukan keberadaan
suatu variabel ttt di dalam fungsi, ada variabel yang hanya dikenal di
suatu fungsi dan tidak dikenal di fungsi lain, namun ada variabel yang
dapat diakses oleh semua fungsi. Jenis variabel berdasarkan kelas
penyimpanannya dibedakan menjadi :
1) Variabel lokal / Internal (otomatis)
2) Variabel eksternal
3) Variabel statis

Keterangan :
(1) Variabel Lokal
Variabel lokal adalah variabel yang dideklarasikan di dalam fungsi, dan
hanya dikenal oleh di dalam fungsi tempat variabel didefinisikan.
Contoh:
void alpha ()
{
int x = 20;
double y = 3.14;
cout <<”Pada alpha() : x = “<<x
<<” y = “ << y<< endl;
}

84
Dalam hal ini, x dan y berlaku sebagai variabel lokal di dalam fungsi
alpha().

Perhatikan contoh programnya:

//Contoh Program untuk memperlihatkan efek variabel lokal

#include <iostream.h>
#include <conio.h>
#include <iostream.h>
void alpha(); //prototipe fungsi
void main()
{
int x = 22; //variabel lokal pada fungsi main()
double y= 2.22;

clrscr();
cout << "Pada main () : x "<<x
<< " y = " << y <<endl<<endl;
alpha(); //panggil fungsi alpha
cout << "Pada main() : x = " <<x
<< " y = " << y <<endl;
}
// definisi fungsi alpha()
void alpha ()
{
int x = 20;
double y = 3.14;
cout <<"Pada alpha() : x = "<<x
<<" y = " << y<< endl;
}

Dari program ini, perubahan x dan y pada alpha() tidak


mempengaruhi variabel bernama sama fungsi main(). Variabel seperti
ini pada fungsi alpha()maupun fungsi main() sering disebut variabel
otomatis. Maka hal ini sering ditulis dengan kata kunci auto.

85
Contoh :
void alpha ()
{
auto int x = 20; //identik dengan int x;
auto double y = 3.14;

cout <<”Pada alpha() : x = “<<x


<<” y = “ << y<< endl;
}

Sifat-sifat variabel lokal :


 Secara otomatis akan diciptakan ketika fungsi dipanggil dan akan
lenyap ketika proses eksekusi terhadap fungsi berakhir.
 Hanya dikenal oleh fungsi tempat variabel dideklarasikan
 Tidak ada inisialisasi secara otomatis .

(2) Variabel eksternal;


 Variabel eksternal merupakan kebalikan dari variabel otomatis.
 variabel yang didefinisikan di luar fungsi manapun
 sering disebut sebagai variabel global
 variabel dikenal di semua fungsi

Perhatikan contoh berikut :

//Contoh Program untuk memperlihatkan efek variabel global


#include <iostream.h>
#include <conio.h>

int skorku = 550; // variabel eksternal


void tambah(); //prototipe fungsi
void main()
{
clrscr();
cout << "Pada awalnya Skorku adalah : "
<<skorku<< endl<<endl;
tambah ();

86
cout << "Setelah ada fungsi tambah, Sekarang skorku: "
<<skorku<< endl<<endl;
tambah ();
cout << "Setelah ada tambahan lagi, Sekarang skorku : "
<<skorku<< endl;
}
//definisi fungsi tambah()
void tambah()
{
skorku++; //varibel eksternal dinaikkan.
}

Tampak bahwa sekalipun di dalam fungsi main() dan tambah()


tidak ada pendefinisian variabel skorku, ternyata variabel ini dikenal
(diadop) di kedua fungsi tersebut. Nilai dari variabel skorku() dapat
diubah dari dalam fungsi tambah.

Sifat-sifat variabel global :


 Dikenal (dapat diakses) oleh semua fungsi.
 Jika tidak diberi nilai awal secara otomatis berisi nilai nol.
 Dideklarasikan dengan menambahkan kata “extern” (opsional).
 Dalam program yg besar dianjurkan sedikit mungkin menggunakan
variabel eksternal (sering membingungkan)

(3) Variabel Statis


Variabel statis adalah variabel yang nilainya tetap dan bisa berupa
variabel lokal (internal) dan variabel global (eksternal). Sifat-sifat
variabel statis :
a) Jika variabel lokal berdiri sebagai variabel satatis, maka:
 variabel tetap hanya dapat diakses pada fungsi yang
mendefinisikannya
 variabel tidak hilang saat eksekusi fungsi berakhir.
Nilainya akan tetap dipertahankan , sehingga akan dikenali
pada pemanggilan fungsi berikutnya.
 Inisialisasi oleh pemrogram akan dilakukan sekali saja
selama program dijalankan.
 Jika tidak diberi nilai awal secara otomatis berisi nilai nol.

87
b) Jika variabel eksternal dijadikan sebagai variabel statis, maka:
 Variabel ini dapat diakses oleh semua file yang didefinisiakn
pada file yang sama dengan variabel eksternal tsb.
 Variabel satais diperoleh dengan menambahkan kata kunci
“static” di depan tipe variabel pada pernyataan
pendefinisian.

Contoh :
static int waterloo;
Void abba()
{
Static mamamia;
….
}

Perhatikan contoh program berikut :


//Contoh Program untuk memperlihatkan efek variabel lokal
#include <iostream.h>
#include <conio.h>
void saya_ingat(); //prototipe fungsi
void main()
{
int mamamia = 50;
clrscr();
saya_ingat ();
saya_ingat ();
saya_ingat ();
cout << "Pragram utama main(): mamamia="
<<mamamia<<endl;
}
// pada fungsi berikut, mamamia didefinisikan sbg Var.
Statistis
void saya_ingat()
{
static int mamamia = 77; //variabel statis
mamamia++;
cout<< "Saya_ingat () : mamamia = " <<mamamia<<endl;
}

88
Berdasarkan hasil ini, tampak bahwa :
 vaiabel statis mamamia pada fungsi saya_ingat() hanya
diinisialisasi (bernilai 77) sekali saja.
 Kemudian setiap pemanggilan thd saya_ingat (), nilai variabel tsb
dinaikkan sebesar 1 (mamamia++)
 Variabel bernama sama yang didefinisikan pada fungsi main()
tidak ada kaitannya dengan variabel yang ada pada fungsi
saya_ingat().
 Jika kata kunci static dihilangkan, maka var tsb selalu
diinisialisasi = 77. Akibatnya hasil yang ditampilkan selalu 78
(mamamia++).

f. Operator Resolusi Lingkup (::).


Operator dengan menggunakan titik dua (::) disebut scope resolution
operator).
Gunanya untuk mengakses variabel yang didefinisikan di luar suatu
fungsi.
Manfaatanya adalah kalau di dalam suatu fungsi yang hendak
mengakses variabel tsb terdapat variabel lokal (variabel yang
didefinisikan di dalam fungsi dengan nama yang sama dg variabel di
luar fungsi ybs).

Perhatikan contoh program berikut :


//Contoh Program pemakaian operator resolusi lingkup (:: )
#include <iostream.h>
#include <conio.h>

int x = 50;
void main()
{
double x; //devinisi variabel lokal
clrscr();

x = 5.678901; //var lokal yg diberi nilai

89
cout << x << “ “<< ::x << endl;

::x = 77; //variabel eksternal yg diberi nilai


cout << x << “ “<< ::x << endl;
}

g. Referensi
Fungsinya untuk memberikan nama alias dari variabel. Bentuk
pendeklarasiannya :

Int &ref = nama_variabel

Tanda & mengawali nama referensi


Pengubahan nilai terhadap nama_variabel dapat dilakukan melalui
nama_variabel itu sendiri melalui referensi ref. Perhatikan contoh
berikut ini:

//Contoh penggunaan referensi


#include <iostream.h>
#include <conio.h>
void main()
{
int i;
int &r = i; //deklarasi referensi
clrscr ();
i = 10;
cout << “i = “ << i << endl;
cout << “r = “ << r << endl;
r = 55;
cout << “i = “ << i << endl;
cout << “r = “ << r << endl;
}

Dalam hal ini tampak bahwa pengubahan nilai terhadap i maupun r


memberikan efek yang sama. Operator juga bekerja pada suatu
variabel maupun referensinya dengan efek yang sama. Perhatikan
contoh berikut :

90
//Contoh penggunaan operasi penaikan isi variabel
// melalui referensi
#include <iostream.h>
#include <conio.h>
void main()
{
int i = 55;
int &r = i; //deklarasi referensi
clrscr ();

cout << “i = “ << i << “ r = “<< r << endl;


i++;
cout << “i = “ << i << “ r = “<< r << endl;
r++;
cout << “i = “ << i << “ r = “<< r << endl;
}

Dalam hal ini ternyata karena i dan r menyiratkan memori yang


sama. Perhatikan contoh berikut :

//Contoh untuk melihat alamat variabel alamat referensi


#include <iostream.h>
#include <conio.h>
void main()
{
int i = 55;
int &r = i; //deklarasi referensi
clrscr ();

cout << “alamat : i = “ << &i


<< alamat : r = “ << &r << endl;
}

h. Rekursi
Dalam C++ dikenal fungsi rekursi, yaitu suatu fungsi dapat
memanggil dirinya sendiri. Penggunaan fungsi rekursi ini bisa dilakukan
pada saat menghitung nilai Xn , dengan n berupa bilangan positif.
Solusi persoalan ini adalah :
JIKA n = 1 MAKA Xn = X
SEALIN itu : Xn = X * Xn-1

91
Misalnya X = 2 dan n = 3, maka pemecahannya dapat dilihat pada
gambar berikut ini:

2
23 = 2 * 2 22 = 2 * 21 21 = 2

8 4 2

Gambar 36. Bentuk Fungsi Rekursi

Implementasi programnya:
//Contoh program dengan fungsi Rekursi untuk bil pangkat n
#include <iostream.h>
#include <conio.h>
long int pangkat (int m, int n); //prototype fungsi

void main()
{
int x, y;

clrscr ();
cout << "MENGHITUNG x ^ y " << endl;
cout <<" x = " ;
cin >> x;
cout <<" y = " ;
cin >> y;

cout << x << " ^ " << y << " = " << pangkat(x, y ) << endl;
}
long pangkat ( int m, int n) //definisi fungsi
{
if (n == 1)
return (m);
else
return (m * pangkat(m, n-1));
}

92
i. Beberapa Fungsi Pustaka Dalam Bahasa C++
1. Fungsi Operasi String (tersimpan dalam header file “string.h”)
 strcpy()
a. Berfungsi untuk menyalin suatu string asal ke variable string
tujuan.
b. Bentuk umum : strCpy(var_tujuan, string_asal);
 strlen()
a. Berfungsi untuk memperoleh jumlah karakter dari suatu string.
b. Bentuk umum : strlen(string);
 strcat()
a. Digunakan untuk menambahkan string sumber ke bagian akhir
dari string tujuan.
b. Bentuk umum : strCat(tujuan, sumber);

 strupr()
a. Digunakan untuk mengubah setiap huruf dari suatu string menjadi
huruf Capital.
b. Bentuk umum : strupr(string);.
 strlwr()
a. Digunakan untuk mengubah setiap huruf dari suatu string menjadi
huruf kecil semua.
b. Bentuk umum : strlwr(string);
 strcmp()
a. Digunakan untuk membandingkan dua buah string.
b. Hasil dari fungsi ini bertipe integer dengan nilai :
(a) Negative, jika string pertama kurang dari string kedua.
(b) Nol, jika string pertama sama dengan string kedua
(c) Positif, jika string pertama lebih besar dari string kedua.
c. Bentuk umum : strcmp(string1, string2);

93
2. Fungsi Operasi Karakter (tersimpan dalam header “ctype.h”)
 islower()
a. Fungsi akan menghasilkan nilai benar (bukan nol) jika karakter
merupakan huruf kecil.
b. Bentuk umum : islower(char);
 isupper()
a. Fungsi akan menghasilkan nilai benar (bukan nol) jika karakter
merupakan huruf kapital.
b. Bentuk umum : isupper(char);
 isdigit()
a. Fungsi akan menghasilkan nilai benar (bukan nol) jika karakter
merupakan sebuah digit.
b. Bentuk umum : isdigit(char);
 tolower()
a. Fungsi akan mengubah huruf Capital menjadi huruf kecil.
b. Bentuk umum : tolower(char);.
 toupper()
a. Fungsi akan mengubah huruf kecil menjadi huruf kapital.
b. Bentuk umum : toupper(char);

3. Fungsi Operasi Matematik (tersimpan dalam header “math.h”)


 sqrt()
a. Digunakan untuk menghitung akar dari sebuah bilangan.
b. Bentuk umum : sqrt(bilangan);
 pow()
a. Digunakan untuk menghitung pemangkatan suatu bilangan.
b. Bentuk umum : pow(bilangan, pangkat);
 sin(), Cos(), tan()
a. Masing-masing digunakan untuk menghitung nilai sinus, Cosinus
dan tangens dari suatu sudut.

94
b. Bentuk umum :
sin(sudut);
Cos(sudut);
tan(sudut);
 atof()
a. Digunakan untuk mengkonversi nilai string menjadi bilangan
bertipe double.
b. Bentuk umum : atof(Char x);
 atoi()
a. Digunakan untuk mengkonversi nilai string menjadi bilangan
bertipe integer.
b. Bentuk umum : atoi(Char x);
 div()
a. Digunakan untuk menghitung hasil pembagian dan sisa
pembagian.
b. Bentuk umum : div_t div(int x, int y)
c. Strukturnya :
typedef struct
{ int qout; // hasil pembagian
int rem // sisa pembagian
} div_t;
 max()
a. Digunakan untuk menentukan nilai maksimal dari dua buah
bilangan.
b. Bentuk umum : max(bilangan1, bilangan2);
 min()
a. Digunakan untuk menentukan bilangan terkecil dari dua buah
bilangan.
b. Bentuk umum : min(bilangan1, bilangan2);

95
2). Hal-hal yang perlu diperhatikan dalam penggunaan fungsi :
a. Kalau tipe fungsi tidak disebutkan, maka akan dianggap sebagai
fungis dengan nilai keluaran bertipe integer.
b. Untuk fungsi yang memiliki keluaran bertipe bukan integer, maka
diperlukan pendefinisian penentu tipe fungsi.
C. Untuk fungsi yang tidak mempunyai nilai keluaran maka dimasukkan
ke dalam tipe void
d. Pernyataan yang diberikan untuk memberikan nilai akhir fungsi
berupa pernyataan return.
e. Suatu fungsi dapat menghasilkan nilai balik bagi fungsi
pemanggilnya.

3). Parameter Formal dan Parameter Aktual


a. Parameter Formal adalah variabel yang ada pada daftar parameter
dalam definisi fungsi.
b. Parameter Aktual adalah variabel (parameter) yang dipakai dalam
pemanggilan fungsi.
Dalam Contoh program pertambahan di atas parameter formal
terdapat pada pendefinisian fungsi :

float tambah(float x, float y) //parameter formal

{ return (a+b);
}

Sedangkan parameter aktual terdapat pada pemanggilan fungsi :

96
void main()
{ ……………
…………..
C = tambah(a, b); //parameter aktual

…………..
}

4). Cara Melewatkan Parameter


Cara melewatkan suatu parameter dalam Bahasa C++ ada dua Cara
yaitu :
1. Pemanggilan Secara Nilai (Call by Value)
a. Call by value akan menyalin nilai dari parameter aktual ke
parameter formal.
b. Yang dikirimkan ke fungsi adalah nilai dari datanya, bukan alamat
memori letak dari datanya.
c. Fungsi yang menerima kiriman nilai akan menyimpannya di
alamat terpisah dari nilai aslinya yang digunakan oleh bagian
program yang memanggil fungsi.
d. Perubahan nilai di fungsi (parameter formal) tidak akan merubah
nilai asli di bagian program yang memanggilnya.
e. Pengiriman parameter secara nilai adalah pengiriman searah,
yaitu dari bagian program yang memanggil fungsi ke fungsi yang
dipanggil.
f. Pengiriman suatu nilai dapat dilakukan untuk suatu ungkapan,
tidak hanya untuk sebuah variabel, elemen array atau konstanta
saja.

97
2. Pemanggilan SeCara Referensi (Call by Referene)
c) Pemanggilan secara Referensi merupakan upaya untuk
melewatkan alamat dari suatu variabel ke dalam fungsi.
d) Yang dikirimkan ke fungsi adalah alamat letak dari nilai
datanya, bukan nilai datanya.
e) Fungsi yang menerima kiriman alamat ini akan menggunakan
alamat yang sama untuk mendapatkan nilai datanya.
f) Perubahan nilai di fungsi akan merubah nilai asli di bagian
program yang memanggil fungsi.
g) Pengiriman parameter secara referensi adalah pengiriman dua
arah, yaitu dari fungsi pemanggil ke fungsi yang dipanggil dan
juga sebaliknya.
h) Pengiriman secara acuan tidak dapat dilakukan untuk suatu
ungkapan.

3. Rangkuman
Fungsi merupakan elemen utama dalam bahasa C++ karena bahasa
C++ sendiri terbentuk dari kumpulan fungsi-fungsi. Tujuan pembuatan
fungsi adalah memudahkan dalam pengembangan program. Ini merupakan
kunci dalam pembuatan program yang terstruktur. Menghemat ukuran
program. Dalam setiap program bahasa C++, minimal terdapat satu fungsi
yaitu fungsi main(). Fungsi banyak diterapkan dalam program-program
C++ yang terstruktur.
Fungsi digunakan agar pemrogram dapat menghindari penulisan
bagian program (kode) berulang-ulang, dapat menyusun kode program
agar terlihat lebih rapi dan kemudahan dalam debugging program. Kajian
fungsi setidaknya meliputi defenisi fungsi, prototype fungsi , fungsi tanpa
nilai balik, variable local dan ekternal. Jenis-jenis fungsi bawaan dari C++,
antara lain fungsi : strcpy(); strlen();strcat();strupr();strlwr(); dan 
strcmp().

98
4. Latihan :
Buatkan dua buah program untuk menyelesaikan masalah sederhana,
dengan ketentuan:
1) Program 1: Dengan melibatkan pemanfatan array (Dimensi 1 atau 2) di
luar apa yang telah diberikan (analogi boleh)
2) Program 2: Dengan melibatkan fungsi untuk menyelesaikan tugas
tertentu, yang dipasang pada program utama.

E. TUGAS PRAKTIKUM
1. Terdapat 3 inputan yaitu sisi 1, sisi 2, sisi 3. Tentukan dari ketiga sisi tersebut dapat
terbentuk segitiga atau tidak. Jika tidak bias keluarkan tidak bisa, jika bisa, tentukan
apakah segitiga siku – siku, segitiga sembarang, atau segitiga sama kaki.

2. Buatlah fungsi untuk mencari hasil pangkat dari suatu bilangan dengan menggunakan
rekursif

99

Anda mungkin juga menyukai