praktikum 15 - ahmadardi06 it

advertisement
PRAKTIKUM 15
Fungsi : Passing Parameter by Value & by References
A. Tujuan Pembelajaran
1. Memahami perbedaan pengiriman parameter secara nilai dan secara alamat.
2. Memecah program dalam fungsi fungsi yang sederhana.
3. Menjelaskan tentang pemrograman terstruktur.
B. Laporan Resmi
1. Untuk setiap listing program dari percobaan-percobaan diatas, ambil capture outputnya.
a) Definisi function untuk menentukan bilangan terbesar dari 2 bilangan inputan.
Source code :
#include <stdio.h>
int banding(int satu, int dua){
if(satu > dua){
return(0);
}else{
return(1);
}
}
main(){
int ang1, ang2, pros;
printf("angka 1 : "); scanf("%d", &ang1);
printf("angka 2 : "); scanf("%d", &ang2);
pros = banding(ang1, ang2);
if(pros == 0){
printf("bilangan %d lebih besar dari %d\n", ang1, ang2);
}else{
printf("bilangan %d lebih besar dari %d\n", ang2, ang1);
}
}
Output :
Analisa :
b) Buatlah function permutasi dan kombinasi dengan menghitung permutasi dan
kombinasinya.
Source code :
#include <stdio.h>
int permutasi(int par1, int par2){
int a, b, sum1=1, sum2=1;
for(a=1; a<=par1; a++){
sum1 = sum1 * a;
}
b = par1 - par2;
for(a=1; a<=b; a++){
sum2 = sum2 * a;
}
return(sum1/sum2);
}
int kombinasi(int par1, int par2){
int a, b, sum1=1, sum2=1, sum3;
for(a=1; a<=par1; a++){
sum1 = sum1 * a;
}
for(a=1; a<=par2; a++){
sum3 = sum3 * a;
}
b = par1 - par2;
for(a=1; a<=b; a++){
sum2 = sum2 * a;
}
return(sum1/(sum2*sum3));
}
main(){
int ang1, ang2;
printf("input n :
printf("input r :
printf("permutasi
printf("kombinasi
}
"); scanf("%d", &ang1);
"); scanf("%d", &ang2);
: %d\n", permutasi(ang1, ang2));
: %d\n", kombinasi(ang1, ang2));
Output :
Analisa :
c) Buatlah sebuah function untuk mengubah dua bilangan masukan, masing-masing dinaikan
dengan 2. Masukkan dilakukan di main(). Selanjutnya tampilkan.
Source code :
#include <stdio.h>
void ubah(int *, int *);
main(){
int an1, an2;
printf("angka 1 : "); scanf("%d", &an1);
printf("angka 2 : "); scanf("%d", &an2);
printf("sebelum pengubahan\n");
printf("x = %d y = %d\n", an1, an2);
ubah(&an1, &an2);
}
void ubah(int *ang1, int *ang2){
int ang3;
ang3 = *ang1;
*ang1 = *ang2+2;
*ang2 = ang3+2;
printf("proses pengubahan\n");
printf("x = %d y = %d\n", *ang1, *ang2);
}
Output :
Analisa :
d) Buatlah sebuah program yang menerima input besar sudut dalam derajat dan panjang sisi.
Source code :
#include <stdio.h>
#include <math.h>
float segitiga(float, float);
main(){
float derajat, panjang, hasil;
printf("derajat sudut : "); scanf("%f", &derajat);
printf("panjang sisi : "); scanf("%f", &panjang);
hasil = segitiga(derajat, panjang);
printf("panjang sisi segitiga = %.2f\n", hasil);
}
float segitiga(float x, float y){
float rad;
rad = x * 3.142 / 180.0f;
return(tan(rad)*y);
}
Output :
Analisa :
2.
Tuliskan kesimpulan dari percobaan yang telah anda lakukan.
Dari percobaan diatas saya dapat mendefinisikan serta mengimplementasikan passing
parameter by value dan passing parameter by reference. Untuk pass by value itu tidak dapat
mengubah nilai suatu variabel. Jika pass by reference dapat mengganti nilai suatu variabel
dikarenakan langsung diganti dengan alamat variabel tersebut.
3.
Jelaskan perbedaan antara pass by value dengan pass by reference !
Berikan contoh function call dan definisi fungsinya !
Jawab :
Pass by Value mengirimkan parameter berdasarkan nilai variabel asalnya yang akan
dihubungkan terhadap paramater fungsi pemanggil.
Source code :
void tukar(int x, int y){
int z;
z = x;
x = y;
y = z;
printf("\nNilai di akhir fungsi tukar()\n");
printf("x = %d y = %d\n", x, y);
}
Pass by Reference mengirimkan parameter berdasarkan alamat dari nilai tertentu, maka
dari itu bila ada nilai yang dirubah dari alamat asalnya maka akan terjadi perubahan juga
terhadap nilai yang di panggil.
Source code :
void tukar(int *px, int *py){
int z;
z = *px;
*px = *py;
*py = z;
printf("\nNilai di akhir fungsi tukar()\n");
printf("x = %d
y = %d\n", *px, *py);
}
Download