Translate

Tutorial prosedur dan subroutin halaman 10

Selamat datang di eagleboot dan selamat membaca.

6.9. Call by Value dan Call by References 

Ada dua cara bagaimana suatu argumen dalam suatu program dapat memanggil sub rutin (function), yaitu call by value dan call by reference. Yang dimaksud dengan call by value adalah metode yang menyalin data (nilai) dari argumen yang memanggil function ke parameter dari function tersebut. Akibatnya jika ada perubahan nilai pada parameter function tidak akan berpengaruh pada nilai aslinya (nilai yang ada pada argumen program yang memanggil function tersebut). Sebaliknya untuk call by reference yang disalin bulan nilainya tetapi alamat memori yang menyimpan nilai tersebut sehingga jika terjadi perubahan- perubahan nilai pada parameter function, maka secara otomatis nilai argumennya juga akan ikut berubah. Untuk lebih jelasnya, perhatikan contoh call by value dengan C++ berikut ini

#include<iostream> 2. usingnamespacestd; 3. intsqr(intx){ 4. x=x*x; 5. return(x); 6. } 7. intmain(void){ 8. intt=10; 9. cout<<sqr(t)<<","<<t<<endl; 10. return0; 11. }  

Keluaran programnya adalah : 100,10 

Nilai argumen sqr() pada program utama yaitu t (bernilai 10) disalin ke parameter x function sqr(). Didalam function sqr(), nilai x dirubah (x=x*x) sehingga function sqr() bernilai 100. Nilai function sqr() ini langsung ditampilkan oleh program yang memanggilnya (baris ke-9). Akan tetapi nilai t, yang juga ditampilkan oleh program utama (bariske-9), tetap 10. Keluaran program ini adalah 100, 10 dimana 100 adalah nilai dari function fpb() dan 10 adalah nilai variabel t 

Nilaiawal t=10 Pemanggilankembali variabelt t=10 Nilaivariabeltdisalinke parameterfungsisqr() x=10 Prosesdifunction sqr() x=100atau sqr()=100
Gambar 6.3. call by value 

 Untuk permasalahan yang sama dalam bahasa Java adalah sebagai berikut : 

 1. importjava.io.*; 2. classkuadrat{ publicintsqr(intx){ 4. x=x*x; 5. return(x); 6. } 7. } 8. classpower{ 9. publicstaticvoidmain(String[]args){ 10. kuadrata=newkuadrat(); 11. intt=10; 12. System.out.println(a.sqr(t)+","+t); 13. } 14. }  

Keluaran programnya adalah : 100,10  

Untuk call by reference, tipe data yang digunakan adalah tipe data pointer karena yang disalin adalah alamat dari memori dimana data disimpan (pembahasan mengenai pointer ini ada di bab tersendiri). Untuk bahasa Java tidak menggunakan call by reference karena tidak ada pointer dalam bahasa Java. Contoh call by reference (dengan menggunakan bahasa C++) adalah sebagai berikut:  

1. #include<iostream> 2. usingnamespacestd; 3. voidtukar(int*x,int*y){ 4. inttemp; 5. temp=*x; 6. *x=*y; 7. *y=temp; 8. } 9. intmain(void){ 10. inti,j; 11. i=10; 12. j=20; 13. cout<<"Mula‐mula:"<<endl; 14. cout<<"Nilaii:"<<i<<endl; 15. cout<<"Nilaij:"<<j<<endl; 16. tukar(&i,&j); 17. cout<<endl<<"Setelahditukar:"<<endl; 18. cout<<"Nilaii:"<<i<<endl; 19. cout<<"Nilaij:"<<j<<endl; 20. return0; 21. } 

Keluaran dari program di atas adalah : Mula‐mula: NilaiI :10 Nilaij :20 Setelahditukar: NilaiI :20 Nilaij :10

Next read ON halaman 11.

Share this

Related Posts

Previous
Next Post »