Sabtu, 12 April 2014

Ada 2 cara yang bisa kita gunakan untuk memanggil sebuah fungsi di beberapa bahasa pemrograman, yaitu call by value dan call by references


Call by Value
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.
Contoh :

#include <stdio.h>
#include <conio.h>

int kali(int a,int b, int c) //parameter formal
{
int x;
x = a * b * c;
return(x);
}


int main()
{
int a,b,c;
printf(”Masukkan angka 1 : “);
scanf(”%d”,&a);
printf(”Masukkan angka 2 : “);
scanf(”%d”,&b);
printf(”Masukkan angka 3 : “);
scanf(”%d”,&c);

printf(”Hasil perkalian ketiga bilangan adalah %d”,kali(a,b,c)); //parameter aktual
getch();
return(0);

}

Call by References
Pelewatan parameter ke dalam fungsi dengan menyalin alamat dari suatu variabel aktualnya. Fungsi yang menerima kiriman alamat ini akan menggunakan alamat yang sama untuk mendapatkan nilai datanya. Hal ini dilakukan dengan menggunakan pointer. Pointer adalah variabel yang merujuk pada alamat lokasi suatu memori tertentu, variable pointer dapat dideklarasikan dengan menuliskan nama variabelnya diawali dengan asterisk (‘*’). Perubahan yang terjadi pada variabel asal akan mengakibatkan perubahan pada variabel pointernya dan sebaliknya.

Contoh: 
#include <stdio.h>
#include <conio.h>

void desc_sort(int *bil1,int *bil2) //parameter formal
{

if(*bil1<*bil2)
{
*bil1 = *bil1 + *bil2;
*bil2 = *bil1 - *bil2;
*bil1 = *bil1 - *bil2;
}

}

int main() {
int a,b,c;

printf(”Masukkan angka 1 : “);
scanf(”%d”,&a);
printf(”Masukkan angka 2 : “);
scanf(”%d”,&b);
printf(”Masukkan angka 3 : “);
scanf(”%d”,&c);

desc_sort(&a,&b); //parameter aktual
desc_sort(&a,&c); //parameter aktual
desc_sort(&b,&c); //parameter aktual
printf(”Hasil descending sort adalah %2d %2d %2d”,a,b,c);

getch();
return(0);

}


0 komentar:

Posting Komentar