Fungsi
Fungsi merupakan blok dari kode yang dirancang untuk melakukan tugas khusus.
Adapun tujuan dari pembuatan fungsi ini adalah :
· Program menjadi terstruktur.
· Program
yang besar dapat dipecah menjadi beberapa program yang lebih kecil,
yang setiap satu program kecil tersebut mempunyai tugas tertentu.
· Dapat mengurangi duplikasi kode.
· Fungsi dapat dipanggil dari program atau fungsi yang lain.
Dasar Fungsi
Pada umumnya
fungsi memerlukan masukan yang dinamakan argumen atau parameter. Hasil
akhir fungsi akan berupa sebuah nilai (nilai balik fungsi).
bentuk umum:
Penentu-tipe nama_fungsi (daftar parameter)
Deklarasi parameter
{
Tubuh fungsi
}
Penentu tipe berfungsi untuk menentukan tipe keluaran fungsi yang dapat berupa salah satu tipe data C++ yang berlaku, misalnya char atau int. Default tipe fungsi yang tidak disebutkan dianggap sebagai int.
Contoh:
Inisialisasi ()
{
Return (0)
}
Pada fungsi diatas dijelaskan sebagai berikut:
· Penentu tipe fungsi tidak disebutkan, berarti keluaran bertipe int.
· Inisialisasi adalah nama fungsi.
· Tanda () menyatakan bahwa fungsi tidak memiliki parameter.
· Tanda { dan } merupakan awal dan akhir fungsi.
· Return (0) merupakan pernyataan dalam tubuh fungsi.
Suatu
fungsi cukup didefinisikan sekali tetapi dapat digunakan beberapa kali.
Jika tubuh fungsi banyak mengandung pernyataan maka pemakaian fungsi
dapat menghindari duplikasi kode dan menghemat penulisan program maupun
kode dalam memori. Jadi fungsi merupakan semacam subprogram.
Adapun bentuk umumnya adalah sebagai berikut:
Inisialisasi ()
{
Return (0);
}
main()
{
Int x,y;
.... . .
x=inisialisasi();
............. . .
y=inisialisasi()
}
contoh implementasi fungsi
/*program:fungsi1.cpp */
#include
/*deklarasi fungsi*/
Int findMax(int n1, int n2);
Void PrintMax (int m);
Main ()
{
Int i = 5;
Int j = 7;
Int k;
k = FindMax (i,j);
PrintMax(k);
Return 0;
}
/* definisi fungsi */
Int FindMax (int n1, int n2)
{
If (n1 >n2)
{
Return n1;
}
Else
{
Return n2
}
}
Void PrintMax (int m)
{
Printf (“Bilangan yang terbesar adalah :%d\n”,m);
}
Bila program diatas dijalankan, maka hasilnya adalah sebagai berikut:
Bilangan yang terbesar adalah : 7
Penjelasan:
- Program diatas adalah contoh fungsi untuk menampilkan bilangan terbesar diantara 2 buah bilangan.
- Dimana sebelum bilangan pertama dengan bilangan kedua dibandingkan, terlebih dahulu didefinisikan fungsi yaitu:
int findmax (int n1, n2)
{
if (n1>n2)
{
return n1;
}
else
{
return n2;
}
Jika bilangan
pertama waktu dibandingkan dengan bilangan kedua menghasilkan hasil
terbesar atau angkanya lebih besar maka bilangan pertama yang terbesar.
Sedangkan sebaliknya.
- Untuk bilangan pertama diwakili i yang nilainya 5 dan nantinya akan mengisi n1.
- bilangan kedua yang diwakili j yang nilainya 7 dan nantinya akan mengisi n2.
Parameter Formal dan Parameter Aktual
- Parameter formal adalah variabel yang ada pada daftar parameter dalam fungsi.
- Parameter aktual adalah parameter yang dapat berupa variabel atau konstanta maupun ungkapan yang dipakai dalam pemanggilan fungsi.
cara melewatkan parameter adalah :
· Pemanggilan dengan nilai
· Pemanggilan dengan referensi
Contoh :
a...x
b...y
Dengan cara
ini nilai parameter aktual tidak dapat berubah sekalipun nilai parameter
formal berubah-ubah sebab x merupakan salinan dari A dan y salinan dari
B.
Pada saat pemanggilan suatu fungsi, misalnya:
a bernilai 20 → x juga bernilai 20
b bernilai 30 → y juga bernilai 30
Selanjutnya nilai x dan y diproses tetapi nilai a dan b akan tetap.
Pemanggilan
dengan referensi merupakan usaha melewatkan alamat dari suatu variabel
ke dalam fungsi. Dengan pengubahan dilakukan di dalam fungsi untuk
mengubah variabel di luar fungsi.
Perhatikan:
Tukar (int *px, int *py)
{
Int z;
Z=*px;
*px=*py;
*py=z;
. . . . . . . . .
}
Parameter aktualnya:
Tukar (&a, &b);
Dalam deklarasi parameternya:
Int *px, int *py
Dalam hal ini, px menunjukkan variabel a dan py menunjukkan variabel b.
(*adalah tanda pointer)
Dapat digambarkan sebagai berikut:
px py
alamat a alamat b
a b
Apabila penggalan program tersebut, kita implementasikan pada program, hasilnya adalah sebagai berikut:
contoh parameter formal dan aktual
/* program: fungsi2.cpp*/
#include
Void tukar (int x, int y);
Main()
Int a, b;
a=99;
b=11;
printf (“nilai sebelum pemanggilan fungsi:\n”);
printf (“nilai a=%d nilai b=%d\n\n”,a,b);
tukar (a, b);
printf (“nilai sesudah pemanggilan fungsi: \n”);
printf (“nilai a=%d nilai b=%d\n\n”,a,b);
}
Void tukar (int px, int py)
{
Int z;
z=px;
px=py;
py=z;
printf (“nilai diakhir fungsi : \n”);
printf (“nilai px=%d niali py=%d\n\n”,px,py);
}
Hasilnya :
Nilai sebelum pemanggilan fungsi:
nilai a=99 nilai b=11
nilai diakhir fungsi:
nilai px=11 nilai py=99
Nilai sesudah pemanggilan fungsi:
nilai a=99 nilai b=11
penjelasan:
Setelah px menunjukkan a dan py menunjukkan b, proses penukaran isi a dan b dilakukan dengan cara sebagai berikut:
z=px;
px=py;
py=z;
Dengan melalui tiga pernyataan diatas, nilai a dan nilai b dapat diubah dalam fungsi.
Rekursi
Fungsi
rekursif adalah suatu fungsi yang memanggil dirinya sendiri, artinya
fungsi tersebut dipanggil di dalam tubuh fungsi itu sendiri.
Fungsi
faktorial, yang menghitung nilai faktorial dari suatu bilangan bulat
positif, merupakan pokok bahasan yang memudahkan pemahaman fungsi
rekursif. Berikut adalah fungsi faktorial yang diselesaikan dengan cara
biasa:
int faktorial (int n)
{
int counter, hasil = 1;
for (counter = n ; counter >= 1 ; counter--)
hasil *= counter;
return hasil;
}
Fungsi tersebut menunjukkan bahwa nilai faktorial dihitung menggunakan looping sehingga melakukan proses sebagai berikut:
Hasil = 1;
Hasil = hasil * n; artinya hasil = n;
Hasil =hasil * (n-1) artinya hasil = n x (n-1);
Demikian seterusnya sampai n bernilai 1, atau jika dituliskan sekaligus menjadi:
Faktorial = n! = n x (n-1) x (n-2) .... x 1;
Fungsi ini dapat dituliskan dalam bentuk:
Faktorial (n) = n! = n x (n-1) !;
Yang
menunjukan sifat rekursif dari suatu fungsi, yaitu (n-1)!. Oleh karena
itu, fungsi faktorial yang telah ditulis dalam program C++ sebelumnya,
dapat ditulis kembali dalam bentuk rekursif sebagai berikut:
int faktorial (int n)
{
if (n == 0)
return 1;
else
return (n * faktorial (n-1));
}
Program contoh rekursi untuk faktorial
/*program: fungsi3.cpp*/
#include
Int faktorial (int n)
{
If (n==1)
Return (1);
Else
Return (n*faktorial (n-1));
}
Main ()
{
Int x;
Printf (“mencari nilai faktorial\n”);
Printf (“masukkan nilai x:”) ; scanf (“%d”,&x) ;
Printf (“nilai faktorial dari %d=%d\n”,x,faktorial (x) );
}
Hasilnya:
Mencari nilai faktorial
Masukkan nilai x: 4
Nilai faktorial dari 4=24
Tidak ada komentar:
Posting Komentar