Pengiriman data pada Fungsi
2008 | Direktorat Pembinaan SMK
265 include
conio.h include
iostream
using namespace std;
Prototipe Fungsi
void TampilNilaiint;
int
main {
cout Saya
sedang memasukan 5 ke fungsi TampilNilai.\n ;
TampilNilai 5
; Call TampilNilai dengan argument 5
cout Sekarang
saya sudah kembali ke program utama.\n ;
getch; return
; }
void TampilNilaiint num
{ cout
Besar nilainya adalah:
num endl; }
Keluaran programnya adalah sebagai berikut: Saya
sedang memasukan 5 ke fungsi TampilNilai. Besar
nilainya adalah: 5 Sekarang
saya sudah kembali ke program utama. Dalam prototype fungsi tersebut diatas yang perlu diperhatikan adalah pada
TampilNilai: void
TampilNilaiint; function prototype Dalam fungsi tersebut kita tidak
perlu memasukan daftar parameter yang merupakan variabel dalam
tanda kurung, dan hanya dengan memasukan type data yang
diperlukan saja. Fungsi ini dapat prototype ini juga dapat ditulis
sebagai berikut:
void TampilNilaiint num;
Fungsi tersebut diatas sangat mudah digunakan walaupun,
compiler mengabaikan nama variabel pada parameter fungsi prototype
tersebut. Dalam program utama, fungsi TampiNilai disebut dengan
argumen 5, dimana hal tersebut berada dalam tanda kurung. Nomor 5
266
Direktorat Pembinaan SMK | 2008
dimasukan kedalam variabel num, yang mana num merupakan
parameter TampilNilai. Untuk lebih jelasnya mengenai hal tersebut,
perhatikan gambar dibawah ini:
Gambar 7.5. Fungsi prototipe Dengan melihat gambar
tersebut, apapun argumen yang tertulis dalam tanda kurung pada
panggilan fungsi akan dicopy kedalam variable parameter fungsi.
Pada dasarnya, parameter adalah variabel yang diinisialisasi menjadi
nilai sesuai argument yang berhubungan. Program 7.7 dibawah
menunjukkan bahwa fungsi \tampilNilai dapat dipanggil beberapa
kali dengan alasan sesuai masing- masing kegunaannya.
Program 7.7. include
conio.h include
iostream
using namespace std;
Prototipe Fungsi
void TampilNilaiint;
int
main {
cout Saya
sedang mengisikan beberapa nilai pada TampilNilai.\n ;
TampilNilai 5
; Panggil TampilNilai dengan argument 5
TampilNilai 10
; Panggil TampilNilai dengan argument 10
TampilNilai 2
; Panggil TampilNilai dengan argument 2
TampilNilai 16
; Panggil TampilNilai dengan argument 16
cout sekarang
saya kembali.\n ;
TampilNilai 5
; void
TampilNilaiint num
{ cout
Besar nilainya adalah:
num endl; }
2008 | Direktorat Pembinaan SMK
267 getch;
return
; }
void TampilNilaiint num
{ cout
Nilainya adalah
num endl; }
Keluaran programnya Adalah sebagai berikut; Saya
sedang mengisikan beberapa nilai pada TampilNilai. Nilainya
adalah 5 Nilainya
adalah 10 Nilainya
adalah 2 Nilainya
adalah 16 sekarang
saya kembali. Setiap kali sebuah fungsi dalam
program diatas tersebut dipanggil, variabel num akan mengambil nilai
yang berbeda. Setiap ekspresi fungsi, nilai akan diberikan kedalam num
yang digunakan sebagai argumen. Sebagai contoh, panggilan fungsi
berikut digunakan untuk memasukan nilai 8 kedalam variabel num:
TampilNilai3 + 5;
Jika kita memasukan jenis argumen yang tidak sama dengan
jenis parameter, argumen tersebut akan digunakan secara otomatis.
Misalnya, jika TampilNilai dari sebuah parameter adalah bertipe integer,
argumen pada pemanggilan fungsi akan dipotong, sehingga nilai 4 akan
dimasukan ke varibel num:
TampilNilai 4.7;
Seringkali hal tersebut berguna untuk digunakan oleh beberapa argumen
dalam sebuah fungsi. Program dibawah ini menunjukkan sebuah
fungsi dari fungsi yang memiliki tiga buah parameter.
Program 7.8. include
conio.h include
iostream
using namespace std;
268
Direktorat Pembinaan SMK | 2008
Prototipe Fungsi
void Tambahanint, int, int;
int
main {
int value1, value2, value3; cout
Masukan Tiga bilangan Integers dan saya akan menampilkan
; cout
Penjumlahan: ;
cin value1 value2 value3; Tambahannilai1, nilai2, nilai3;
Call Tambahan dengan 3 arguments. getch;
return
; }
void Tambahanint num1, int num2, int num3
{ cout num1 + num2 + num3 endl;
} Keluaran Programnya adalah sebagai berikut;
Masukan Tiga bilangan Integers dan saya akan menampilkan Penjumlahan: 4 5 6
15 Dalam
header fungsi Tambahan, daftar parameter berisi tiga definisi
variabel yang dipisahkan oleh koma adalah sebagai berikut:
void Tambahanint num1, int num2, int num3
Hal yang perlu diperhatikan pada setiap variabel yaitu harus
memiliki tipe data yang namanya sebelum telah tertulis. Error pada
compiler akan terjadi jika daftar parameter yang dinyatakan sebagai
int num1, num2, num3 ternyata bukan int num1, int num2, int num3.
Dalam pemanggilan fungsi, sebuah variabel nilai1, nilai2 dan
nilai 3 dapat digunakan sebagai argument:
Tambahannilai1, nilai2, nilai3;
Potongan program diatas jika diperhatikan ada perbedaan antara
header fungsi dan panggilan fungsi saat melewati variabel sebagai
argumen menjadi parameter. Dalam panggilan fungsi, kita tidak dapat
menyertakan variabel jenis data didalam tanda kurung. Perhatikan
potongan program dibawah ini:
2008 | Direktorat Pembinaan SMK
269 Tambahanint
nilai1, int nilai2, int nilai3; Ketika sebuah fungsi dengan
beberapa parameter disebut, argumen akan dimasukan kedalam
parameter yang di pesan. Hal tersebut dapat digambarkan seperti
gambar dibawah ini.
Gambar 7.6. Fungsi dengan beberapa Parameter Fungsi dibawah ini akan
menyebabkan nilai 5 dimasukan kedalam parameter num1, nilai 10
dimasukan ke dalam num2, dan 15 dimasukan kedalam num3. Untuk
lebih jelasnya perhatikan instruksi dibawah ini:
showSum5, 10, 15;
meskipun pemanggilan fungsi berikut ini akan menyebabkan 15 yang
dimasukan kedalam parameter num1, 5 dimasukan ke dalam num2,
dan nilai 10 akan dimasukan kedalam num3:
Tambahan15, 5, 10;
7.6. Passing Data by Value
Parameter khusus merupakan variabel tujuan yang ditentukan
didalam tanda kurung dari definisi fungsi. Tujuan parameter tersebut
adalah untuk menyampaikan informasi yng dilakukan oleh
argumen dan tercantum dalam tanda kurung pada panggilan fungsi.
Secara umum, ketika informasi disampaikan kedalam fungsi disebut
Tambahannilai1, nilai2, nilai3;
void Tambahanint num1, int num2, int num3
{ cout num1 + num2 + num3 endl;
}
270
Direktorat Pembinaan SMK | 2008
passed by value. Hal ini berarti parameter menerima copy dari nilai
yang disampaikan kepadanya. Jika sebuah parameter nilai
berubah didalam fungsi maka hal tersebut tidak mempengaruhi pada
argumen yang asli. Perhatikan program dibawah ini yang
menunjukkan konsep mengenai passed by value.
Program 7.9. include
iostream
using namespace std;
void changeThemint, double;
int
main {
int
whole = 12
;
double
real = 3.5
; cout
dalam nilai main adaIah
whole endl; cout
dan nilai real adalah
real endl endl; changeThemwhole,
real; memanggil changeThem dengan 2 arguments
cout sekarang
kembali dalam main lagi, nilainya adalah ;
cout semuanya
masih whole endl;
cout dan
nilai real adalah masih real endl;
return ;
}
void changeThemint i, double d
{ i
= 100
; d
= 27.5
; cout
dalam fungsi changeThem nilainya diubah menjadi
; cout
i endl; cout
dan nilainya diubah menjadi
d endl endl; }
Pada program diatas walaupun parameter i dan f berubah dalam
fungsi changeThem, kenyataannya seluruh argumen tidak diubah.
Parameter i dan f hanya berisi salinan keseluruhan dan nyata.
fungsi ChangeThem tidak memiliki akses ke argumen sebelumnya
original. Gambar dibawah menunjukan bahwa variabel
2008 | Direktorat Pembinaan SMK
271 parameter disimpan dalam lokasi
memori yang terpisah dari argumen yang asli. Perhatikan gambar berikut
ini:
Argumen Asli 12
Fungsi Parameter 12
Gambar 7.7. Variabel parameter yang disimpan dalam memori