Turbo C : Contoh Function (by Value & by Refference)


Tidak jarang, ketika awal-awal aku mempelajari Pemrograman C dan sampai pada tahap menggunakan Function, mulai muncul berbagai kerumitan yang cukup bikin jidat ini berkerut. Salah satunya, bagaimana membedakan pola dari Function yang Call by Value dengan Call by Refference.

Mungkin, dengan contoh program berikut, bisa membantu teman-teman yang mengalami masalah yang sama. -)

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

void hitung(int x, int y, int z);
void seleksi(int x, int y, int z);
void reff(int *px,int *py);
void ulang(int x, int y, int z);
void soal1();
void soal2();
void soal3();
void soal4();
void soal5();
void soal6();
void soal7();
void soal8();
void soal9();
void soal10();

void main()
{ int soal;
clrscr();
printf("@ Pilihan Soal (1-10) = ");
scanf("%i",&soal);
if (soal==1) soal1();
else if ( soal==2 ) soal2();
else if ( soal==3 ) soal3();
else if ( soal==4 ) soal4();
else if ( soal==5 ) soal5();
else if ( soal==6 ) soal6();
else if ( soal==7 ) soal7();
else if ( soal==8 ) soal8();
else if ( soal==9 ) soal9();
else if ( soal==10 ) soal10();
else
printf("’n Maaf, Nomor Pilihan TIDAK Tersedia ’n");

getch();
}

void hitung(int x, int y, int z)
{
x = y+y;
y = z*2;
z = x+y;
printf("%i %i %i’n",x,y,z); }

void seleksi(int x, int y, int z)
{
if(z<x)
{ z = y+2;
printf("%i %i’n",z,x); }
else
{ x = z+y;
printf("%i %i’n",x,z); }
if(y>x)
{ x = x*z;
printf("%i %i’n",x,y); }
else
{ y = z+x*2;
printf("%i %i’n",y,x); }
}

void reff(int *px,int *py)
{
*px = *py + *px * 2;
*py = 3 * *py;
}

void ulang(int x, int y, int z)
{
int i;
for(i=1;i<3;i++)
{
z=x*2+y;
y=y+z;
x=z;
}
printf("%i %i %i’n",x,y,z);
}
//==========================================
void soal1()
{ int a,b,c; clrscr();
a=4; b=2; c=3;
hitung(c,b,a); }

void soal2()
{ int f,g,h; clrscr();
f=3; g=2; h=4;
seleksi(h,g,f); }

void soal3()
{ int a,b,c; clrscr();
a=5; b=2; c=3;
ulang(c,b,a);
hitung(b,a,c); }

void soal4()
{ int a,b,c; clrscr();
a=4; b=5; c=3;
seleksi(c,b,a);
hitung(c,a,b); }

void soal5()
{ int f,g,h; clrscr();
f=1; g=3; h=2;
ulang(h,g,f);
seleksi(f,g,h); }

void soal6()
{ int f,g,h; clrscr();
f=3; g=2; h=4;
ulang(g,f,h);
ulang(f,h,g); }

void soal7()
{ int a,b,c; clrscr();
a=3; b=1; c=5;
ulang(c,b,a);
hitung(b,a,c);
seleksi(c,a,b); }

void soal8()
{ int f,g,h; clrscr();
f=3; g=2; h=5;
reff(&h,&g);
hitung(g,h,f); }

void soal9()
{ int a,b,c; clrscr();
a=3; b=2; c=5;
reff(&a,&c);
ulang(c,a,b); }

void soal10()
{ int f,g,h; clrscr();
f=3; g=2; h=5;
reff(&g,&f);
seleksi(g,h,f); }

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s