-KONSEP PEMROGRAMAN-
Fungsi : Passing Parameter by Value & by Reference
A. Percobaan
Percobaan 1
a. Listing Program
b. Output
c. Analisa
Pada program ini, parameter dilewatkan ke fungsi dengan pass parameter by
value sehingga perubahan pada variabel parameter formal tidak berpengaruh
terhadap variable di fungsi pemanggil. Fungsi menerima 2 buah input yang
kemudian masing-masing dibandingkan mana yang terbesar. Slanjutnya nilai
yang lebih besar akan direturn atau dikembalikan ke fungsi pemanggil.
Percobaan 2
a. Listing Program
#include <stdio.h>
#include <stdlib.h>
int permutasi(int,int);
int kombinasi(int,int);
int faktorial(int);
int main()
{
int n,r,hasilpermutasi,hasilkombinasi;
printf("Masukkan nilai n = ");
scanf("%d",&n);
printf("Masukkan nilai r = ");
scanf("%d",&r);
hasilpermutasi = permutasi(n,r);
hasilkombinasi = kombinasi(n,r);
printf("Hasil permutasi adalah %d \n",hasilpermutasi);
printf("Hasil kombinasi adalah %d ",hasilkombinasi);
}
int faktorial(int bil)
{
int i, jum= 1 ;
for(i=bil;i>0;i--)
jum = jum * i;
return jum;
}
int permutasi(int fn_n,int fn_r)
{
return faktorial(fn_n) / faktorial(fn_n-fn_r);
}
int kombinasi(int fn_n,int fn_r)
{
return faktorial(fn_n) / ( faktorial(fn_r) * faktorial(fn_n-fn_r) );
}
b. Output
c. Analisa
Pada program ini terdapat beberapa fungsi. Fungsi yang sering dipanggil adalah
fungsi faktorial karena fungsi tersebut digunakan dalam setiap perhitungan
permutasi dan kombinasi. Disini tampak jelas bahwasannya sebuah fungsi bisa
dipanggil oleh fungsi buatan user lainnya tidak hanya bisa dipanggil di fungsi
main().
Percobaan 3
a. Listing Program
b. Output
c. Analisa
Fungsi pada program ini menggunakan pass by reference. Dengan cara
tersebut maka pada parameter aktual yang dikirimkan adalah alamat dari
variable tersebut yaitu dengan cara menambahkan tanda & sebelum nama
variable. Perbedaannya dengan pass by value adalah perubahan pada
variable di fungsi akan mempengaruhi nilai pada fungsi pemanggil.
Percobaan 4
Perhatikan gambar segitiga ABC di samping ini, dengan sudut ABC adalah
siku-siku. Buatlah sebuah program yang menerima input berupa : besar sudut
BAC (dalam besaran derajat), dan panjang sisi AB (dalam meter). Program
tersebut bisa menampilkan output berupa panjang sisi BC (dalam meter).
float cariBC(float,float);
float radian(float);
main()
{
float sudutBAC,sisiAB,sisiBC;
printf("Masukkan sudut segitiga BAC(dalam derajat) = ");
scanf("%f",&sudutBAC);
printf("Masukkan panjang sisi AB (dalam meter) = ");
scanf("%f",&sisiAB);
sisiBC = cariBC(sudutBAC,sisiAB);
printf("Panjang sisi BC adalah %.2f meter",sisiBC);
getch();
}
float cariBC(float fn_sudutBAC,float fn_sisiAB)
{
return tan(radian(fn_sudutBAC))*fn_sisiAB;
}
float radian(float derajat)
{
return (derajat / 180.0f)*PHI;
}
b. Output
c. Analisa
Agar panjang sisi BC dapat dihitung maka hal pertama yang harus kita
lakukan adalah mengkonversi nilai sudut yang berupa derajad ke radian
terlebih dahulu denan menggunakan fungsi konversi derajad ke
radian(radian()). Setelah dikonversi baru bisa dihitung panjang BC dengan
memanggil fungsi cariBC().
B. Kesimpulan
1. Dalam bahasa C, program terdiri dari fungsi-fungsi yang terstruktur.
2. Setiap fungsi dapat memiliki parameter apabila dibutuhkan.
3. Parameter dapat dikirim pada fungsi dengan pass by value dan pass by
reference.
Pass by value hanya mengirimkan nilai dari variable dikirimkan.
Pass by reference mengirim alamat dari variable yang dikirimkan.
C. Soal Tambahan
Jelaskan perbedaan antara pass by value dengan pass by reference !
Berikan contoh function call dan definisi fungsinya !
Jawab :
Pada pass by value, nilai dari parameter aktual akan disalin ke parameter
formal. Dengan cara ini nilai parameter aktual tidak bisa dirubah sekalipun
nilai parameter formal berubah. Sedangkan pada pass by reference merupakan
upaya untuk melewatkan alamat dari suatu variabel ke dalam fungsi.
Cara ini dapat dipakai untuk mengubah isi suatu variabel di luar fungsi
dengan pelaksanaan pengubahan dilakukan di dalam fungsi.