C++ Bagian 6

Fungsi


Bagaimana program dalam bahasa C/C++ tersusun ? bahasa C/C++ menggunakan function (fungsi) sebagai dasar program. Seperti yang telah anda kenal pada library function dari bahasa C++ antara lain : cout, cin dan lain-lain. Apakah fungsi itu ? suatu fungsi adalah sebuah unit program yang berdiri sendiri yang dibuat untuk melaksanakan suatu tugas tertentu. Suatu fungsi dalam bahasa C/C++ berperan sama dengan function, subroutine dan procedure dalam bahasa komputer lain.

Tujuan dari fungsi dalam bahasa C/C++ adalah pertama untuk mencegah pengulangan pembuatan suatu program. Kedua menggunakan fungsi akan menyebabkan program lebih modular, sehingga mudah dibaca dan dianalisa. Salah satu fungsi ini disebut main. Program selalu dilaksanakan mulai dari main. Suatu fungsi terdiri dari dua bagian, yaitu :
1. Baris pertama adalah header dari fungsi yang mempunyai tiga komponen yaitu : return type, nama fungsi dan argumen ( atau disebut juga parameter ).
2. Badan dari fungsi terdiri dari compound statement dan dituliskan langsung dibawah header dari fungsi.

Bentuk umum dari fungsi :

return_type nama_fungsi(type_1 argumen_1, ... , type_n argumen_n)
{
// badan dari fungsi ( satu atau lebih pernyataan C++ )
}

Return type
Adalah untuk menentukan tipe data yang akan dikembalikan ke program yang memanggil. Tipe data dapat berupa : char, int, long, float dan double. Anda juga dapat mendefinisikan fungsi yang tidak mempunyai return type dengan menggunakan void.

Nama fungsi
Anda dapat menggunakan nama apa saja untuk nama suatu fungsi. Nama fungsi tidak boleh ada yang sama (harus unik). Sebaiknya nama fungsi mencerminkan tujuan atau tugas dari fungsi tersebut.

Argumen atau parameter
Kebanyakan fungsi menggunakan argumen. Argumen ini digunakan untuk mengirimkan informasi ke fungsi. Kadang-kadang tidak mempunyai argumen, dalam hal ini anda menuliskan void sebagai parameter atau tidak menuliskan apa-apa diantara tanda kurung biasa.

Badan fungsi
Badan fungsi dituliskan diantara tanda kurung kurawal dibawah header dari fungsi. Bila fungsi dipanggil, pelaksanaan dimulai dari awal badan fungsi dan berakhir pada statemen return (yang mengembalikan ke program pemanggil) atau pada tanda kurung kurawal tutup. Didalam badan fungsi anda dapat mendefinisikan variabel baru yang bersifat lokal. Arti lokal disini adalah bahwa variabel yang didefinisikan di dalam badan fungsi tidak mempunyai hubungan apa-apa dengan variabel diluar fungsi, meskipun mempunyai nama yang sama.


Statemen return
Fungsi akan mengembalikan informasi ke program yang memanggil dengan statemen return. Hanya satu nilai yang dapat dikembalikan dengan statemen return. Bentuk umum dari statemen return adalah :

return expression;

Nilai dari expression akan dikembalikan ke program yang memanggil fungsi. Statemen return hanya boleh mempunyai satu expression. Jadi, suatu fungsi hanya bisa mengembalikan satu harga ke program yang memanggil. Tetapi suatu fungsi boleh mempunyai lebih dari satu statemen return yang masing-masing mempunyai expression yang berbeda.

Memanggil fungsi
Fungsi dipanggil dengan cara menuliskan nama dari fungsi, diikuti dengan argumen yang diletakan diantara tanda kurung biasa. Antara argumen yang satu dengan yang lain dipisahkkan dengan tanda koma. Argumen dapat berbentuk constant, variabel atau expression. Tipe data dari argumen harus sama dengan yang didefinisikan pada fungsi.

Contoh 6.1 :

#include

void main()
{
clrscr();
void bintang(); // prototipe fungsi bintang
bintang(); // memanggil fungsi bintang

cout << "Saya sedang belajar fungsi" << endl;
cout << "pada bahasa C++" << endl;

bintang(); // memanggil fungsi bintang
}

void bintang() // header atau definisi fungsi bintang
{
for ( int i=1; i<=30; i++ )
{
cout << "*";
}
cout << endl;
}

Keluaran programnya :

******************************
Saya sedang belajar fungsi
pada bahasa C++
******************************

Urutan jalannya program ini adalah :
1. Fungsi bintang() dipanggil, maka kontrol program berpindah ke fungsi bintang() yang akan mencetak asterik (*) sebanyak 30 buah, setelah selesai kontrol program kembali berpindah ke main() ke tempat tepat dibawah fungsi bintang() dipanggil.
2. Kedua cout didalam main() dilaksanakan yakni mencetak :
Saya sedang belajar fungsi
pada bahasa C++
3. Kemudian fungsi bintang() dipanggil lagi, kontrol program berpindah lagi ke fungsi bintang(), untuk mencetak asterik (*). Selesai mencetak, kontrol program berpindah ke main(), dimana pernyataan tidak ada lagi dan pelaksanaan program selesai.

Prototipe fungsi
Setiap fungsi harus dideklarasikan sebelum digunakan. Tujuan dari deklarasi fungsi adalah memberitahukan compiler tentang tipe data fungsi, nama fungsi dan argumen atau parameter dari fungsi. Dari contoh program diatas anda dapat melihat bahwa prototipe fungsi identik dengan definisi dari fungsi, tetapi dibelakang dari prototipe fungsi ditambah titik koma.

Contoh 6.2 :
Contoh fungsi untuk mengubah huruf kecil menjadi huruf besar.

#include

void main()
{
char kecil, besar; // variabel lokal pada main
char kecil_besar(char ch); // prototipe fungsi kecil_besar

cout << "Masukan sebuah huruf kecil ? ";
cin >> kecil;

besar = kecil_besar(kecil); // memanggil fungsi kecil_besar

cout << "Huruf besar dari " << kecil << endl;
cout << "adalah : " << besar << endl;
}

char kecil_besar(char ch)
{
if (ch>=97 && ch<=122)
{
ch = ch - 32;
}
return(ch);
}

Keluaran programnya :

Masukan sebuah huruf kecil ? h
Huruf besar dari h
adalah : H

Perhatikan bahwa return type dari fungsi kecil_besar adalah karakter (char) dan tipe data dari argumen fungsi kecil_besar adalah juga karakter. Pada program ini untuk mengubah huruf kecil menjadi huruf besar digunakan harga dari kode ASCII huruf tersebut. Dari tabel karakter ASCII diketahui bahwa huruh kecil a mempunyai kode ASCII 97 dan huruf kecil z mempunyai kode ASCII 122, sedangkan huruf besar A mempunyai kode ASCII 65 dan huruf besar Z mempunyai kode ASCII 90. Jadi antara huruf besar dengan huruf kecil kode ASCII-nya berselisih 32, sehingga untuk mengubah huruf kecil menjadi huruf besar cukup dikurangi 32.

Parameter Formal dan Aktual
Parameter formal adalah variabel yang ada pada daftar parameter dalam definisi fungsi. Pada contoh program diatas fungsi kecil_besar (char ch) variabel ch didalam tanda kurung fungsi kecil_besar dinamakan sebagai parameter formal. Adapun parameter aktual adalah parameter (tidak mesti variabel) yang dipakai dalam pemanggilan fungsi. Pada contoh program diatas kecil_besar (kecil) variabel kecil didalam tanda kurung pemanggil fungsi kecil_besar dinamakan sebagai parameter aktual.

Cara Melewatkan Parameter
Ada tiga cara melewatkan parameter kedalam fungsi yaitu : pemanggilan dengan nilai (call by value), pemanggilan dengan alamat (call by address) dan pemanggilan dengan referensi (call by reference).

Pemanggilan dengan Nilai
Pada pemanggilan dengan nilai, nilai dari parameter aktual akan disalin ke parameter formal. Dengan cara ini nilai parameter aktual tak bisa berubah sekalipun nilai parameter formal berubah.

Contoh 6.3 :
Program untuk menukar dua data dan melihat pengaruh pemanggilan nilai pada fungsi.

#include

void main()
{
int a, b;
void tukar(int x, int y);

cout << "Nilai sebelum pemanggilan fungsi" << endl;
cout << "Nilai a : ";
cin >> a;
cout << "Nilai b : ";
cin >> b;

cout << endl;
tukar(a, b);

cout << "Nilai sesudah pemanggilan fungsi" << endl;
cout << "Nilai a : " << a << endl;
cout << "Nilai b : " << b << endl;
}

void tukar (int x, int y)
{
int z;
z=x;
x=y;
y=z;
cout << "Nilai didalam fungsi" << endl;
cout << "Nilai a : " << x << endl;
cout << "Nilai b : " << y << endl << endl;
}

Keluaran programnya :

Nilai sebelum pemanggilan fungsi
Nilai a : 100
Nilai b : 500

Nilai didalam fungsi
Nilai a : 500
Nilai b : 100

Nilai sesudah pemanggilan fungsi
Nilai a : 100
Nilai b : 500

Tampak bahwa sekeluarnya dari pemanggilan fungsi tukar(), variabel a dan b (yang dilewatkan ke fungsi tukar()) tidak berubah, walaupun pada fungsi tukar telah terjadi penukaran antara parameter x dan y. Mengapa hal ini terjadi ? sebab x hanyalah salinan dari a dan y salinan dari b.

Pemanggilan dengan Alamat
Merupakan cara melewatkan alamat dari suatu variabel ke dalam fungsi. Cara ini dapat dipakai untuk mengubah isi suatu variabel di luar fungsi dengan pelaksanaan pengubahan dilakukan didalam fungsi. Sebagai contoh dapat dilihat pada program berikut ini yang merupakan modifikasi dari program sebelumnya. Perubahan yang pertama terletak pada definisi fungsi, yang kini berupa :

void tukar (int *px, int *py)
{
int z;
z=*px;
*px=*py;
*py=z;
------
}

Adapun perubahan dalam parameter aktual :

tukar(&a, &b);

Kemudian pada pendeklarasian fungsi yaitu parameternya menjadi :

void tukar (int *px, int *py);

px dan py adalah suatu variabel pointer. Variabel pointer adalah variabel yang menunjuk alamat variabel lain. Adapun pada pemanggilan fungsi, &a dan &b masing-masing berarti “alamat a“ dan “alamat b“.

Contoh 6.4 :

#include

void main()
{
int a, b;
void tukar(int *px, int *py);

cout << "Nilai sebelum pemanggilan fungsi" << endl;
cout << "Nilai a : ";
cin >> a;
cout << "Nilai b : ";
cin >> b;

cout << endl;
tukar(&a, &b);

cout << "Nilai sesudah pemanggilan fungsi" << endl;
cout << "Nilai a : " << a << endl;
cout << "Nilai b : " << b << endl;
}

void tukar (int *px, int *py)
{
int z;
z=*px;
*px=*py;
*py=z;

cout << "Nilai didalam fungsi" << endl;
cout << "Nilai a : " << *px << endl;
cout << "Nilai b : " << *py << endl << endl;
}

Keluaran programnya :

Nilai sebelum pemanggilan fungsi
Nilai a : 100
Nilai b : 500

Nilai didalam fungsi
Nilai a : 500
Nilai b : 100

Nilai sesudah pemanggilan fungsi
Nilai a : 500
Nilai b : 100

Setelah px menunjuk a dan py menunjuk b, proses penukaran isi a dan b dilakukan dengan cara sebagai berikut :
1. Variabel z diisi dengan nilai yang ditunjuk oleh px.
2. Yang ditunjuk oleh px diisi dengan yang ditunjuk oleh py ( berarti a diisi dengan b ).
3. Yang ditunjuk oleh py diberi nilai z.
Dengan melalui tiga pernyataan tersebut, nilai a dan b dapat diubah di dalam fungsi.

Pemanggilan dengan Referensi
C++ menyediakan cara ketiga untuk melewatkan data antara fungsi-fungsi yang tidak tersedia pada pendahulunya, bahasa C. Ketika anda melewatkan data dengan referensi, jika fungsi yang dipanggil mengubah data tersebut, C++ menggunakan perubahan yang sama ke data fungsi pemanggil. Hasil akhir pelewatan dengan referensi identik dengan pelewatan menggunakan alamat tetapi dengan satu pengecualian : anda tidak perlu bekerja dengan sintaks yang aneh ketika melewatkan variabel non-array dengan referensi. Jika anda melewatkan variabel dengan referensi, anda hanya perlu mengawali parameter penerima dengan tanda &.

Contoh 6.5 :

#include
#include
#include
void input_nilai(float &v, float &x, float &g);
void hitung_jarak(float v, float x, float g, float &r);
void tampilkan(float r);

void main()
{
float kecepatan, sudut;
float gravitasi, jarak;
clrscr();

input_nilai(kecepatan, sudut, gravitasi);
hitung_jarak(kecepatan, sudut, gravitasi, jarak);
tampilkan(jarak);
getch();
}

void input_nilai(float &v, float &x, float &g)
{
cout << "Kecepatan peluru (m/det) : ";
cin >> v;
cout << "Sudut tembakan (derajat) : ";
cin >> x;
cout << "Gravitasi bumi (m/det^2) : ";
cin >> g;
}

void hitung_jarak(float v, float x, float g, float &r)
{
r = pow(v, 2) * sin (2*x*22/7/180) / g;
}

void tampilkan(float r)
{
cout.precision(2);
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout << "Jarak tembak peluru : " << r << " meter";
}

Keluaran programnya :

Kecepatan peluru (m/det) : 100
Sudut tembakan (derajat) : 30
Gravitasi bumi (m/det^2) : 10
Jarak tembak peluru : 866.24 meter

Fungsi main() dari program diatas tak lebih daripada fungsi pengontrol pemanggilan fungsi. Meskipun demikian main() mendeklarasikan 4 buah variabel bertipe float untuk digunakan pada perhitungan yang berturutan, memanggil fungsi input_nilai(), fungsi hitung_jarak() dan fungsi tampilkan(). Tugas dari fungsi input_nilai() adalah mengumpulkan tiga buah nilai main() yang diinputkan dari keyboard. Fungsi main() melewatkan tiga buah argumen melalui referensi. Ketika input_nilai() mengubah parameter melalui masukan keyboard, maka nilai-nilai itu juga mengubah nilai variabel pada main(). Tugas dari fungsi hitung_jarak() adalah menghitung jarak tembak peluru. Pada fungsi ini satu-satunya nilai yang dibutuhkan untuk diperbaharui adalah hasil perhitungan yaitu : r. Sedangkan argumen lainnya dilewatkan dengan nilai. Tugas dari fungsi tampilkan() adalah untuk mencetak keluaran jarak tembak peluru yang mana argumennya dilewatkan dengan ni

Related Posts:

1 Response to "C++ Bagian 6"

guimand mengatakan...

program buat tukar huruf ada mbak??