Anda di halaman 1dari 9

LAPORAN RESMI PRAKTIKUM 15

-KONSEP PEMROGRAMAN-
Fungsi : Passing Parameter by Value & by Reference
A. Percobaan

 Percobaan 1

Definisikanlah function untuk menentukan bilangan terbesar dari 2 bilangan


yang diinputkan di main(). Function mempunyai parameter berupa 2 buah
bilangan yang akan dibandingkan dan memberikan return value berupa
bilangan yang terbesar. Sertakan pula prototype function tsb.

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

Buatlah suatu fungsi permutasi() dan kombinasi() untuk menghitung


permutasi dan kombinasi dari suatu pasangan bilangan, yang dinyatakan dengan
formula:

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

Buatlah sebuah fungsi untuk mengubah dua bilangan masukan, masing-masing


dinaikkan dengan 2. Masukan dilakukan di main(). Selanjutnya tampilkan hasil
akhir bilangan setelah dirubah di main().
Gunakan pass by reference !

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).

Petunjuk : terlebih dahulu ubah besaran derajat menjadi radian


a. Listing Program
#include <stdio.h>
#include <stdlib.h>
#define PHI 3.14f;

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.

Perbedaan Function call Definisi fungsi


Pass by value kalikan(a,b); int kalikan(int
x, int y)
{
//pernyataan
}
Pass by reference kalikan(&a,&b); int kalikan(int
*x,int *y)
{
//pernyataan
}

Anda mungkin juga menyukai