Pe
em as dalam
n. Tuj uan p
ungsi m ain
a fungsi inil
m erupak
t ugas kh
m sebuah n
pem buat an
dahk an dala
em at ukura
rogram an C
efined func
n fungsi ada
am m engem
alam progra
uah fungsi
m ain ini haru
kan dij alank
dari kod
buah fung
t inya, nam
alah sebaga
m bangkan p
m .
yang past i
us ada di s
kan oleh co
e program
i oleh seora
disediakan
AMAN I
I)
n kum pulan
n yang disim
digunakan
et iap progr
om piler.
dari fungs
m pan di da
ai balikan (
Fungsi j uga bisa dibedak an berdasarkan nilai balik yait u:
1. Fungsi t anpa nilai balik ( Procedure)
2. Fungsi dengan nilai balik.
Prototipe Fungsi
Ada dua cara m enggunakan sebuah fungsi di dalam suat u program yait u:
1. Menggunakan fungsi t anpa m enyert akan prot ot ipe fungsinya
Cara yang pert am a ini bisa digunakan dengan syarat fungsi yang dibuat harus
dilet akkan di at as fungsi m ain. Apabila fungsi yang dibuat dilet ak kan set elah
fungsi m ain m aka fungsi t ersebut dianggap t idak t erdefinisi. Bent uk
um um nya adalah sebagai berikut :
t ipe _ da t a n a m a _ fu n gsi( pa r a m e t e r ) {
/ / ba da n_ fu n gsi r e t u r n nila i_ r e t u r n }
m a in ( ) {
n a m a _ fu n gsi( pa r a m e t e r ) ; r e t u r n 0 ;
}
2. Menggunakan fungsi dengan m eny ert akan prot ot ipe fungsinya
Prot ot ipe fungsi adalah k ode program yang digunakan unt uk m endeklarasikan
sebuah fungsi yang dibuat oleh program m er. Dengan m enggunakan cara
yang kedua ini m aka seorang program m er dapat m elet akkan fungsi yang
/ / pr ot ot ipe fu n gsi
t ipe _ da t a n a m a _ fu n gsi1 ( pa r a m e t e r ) ; t ipe _ da t a n a m a _ fu n gsi2 ( pa r a m e t e r ) ;
t ipe _ da t a n a m a _ fu n gsi1 ( pa r a m e t e r ) {
/ / ba da n _ fu n gsi r e t u r n n ila i_ r e t u r n }
m a in ( ) {
na m a _ fu n gsi1 ( pa r a m e t e r ) ; na m a _ fu n gsi2 ( pa r a m e t e r ) ; r e t u r n 0 ;
}
t ipe _ da t a n a m a _ fu n gsi2 ( pa r a m e t e r ) {
/ / ba da n _ fu n gsi r e t u r n n ila i_ r e t u r n }
Fungsi Tanpa Nilai Balik (Procedure)
Pem rogram an C/ C+ + t ida k m engenal ist ilah pr ose du r sepert i yang dipelaj ari di algorit m a. Lalu bagaim ana kalau seorang program m er ingin m em buat
sebuah fungsi yang t idak m engem balikan suat u nilai? Fungsi seper t i ini dalam
pem rogram an C/ C+ + dikenal dengan fungsi yang bert ipe void. Berart i dalam hal ini fungsi t ersebut t idak m em iliki nilai balik. Bent uk um um dari fungsi ini adalah sebagai
/ / pr ot ot ipe fu n gsi
void n a m a _ fu n gsi( pa r a m e t e r 1 ,pa r a m e t e r 2 ) ;
void n a m a _ fu n gsi( pa r a m e t e r 1 ,pa r a m e t e r 2 ) {
/ / ba da n _ fu n gsi }
m a in ( ) {
/ / Pe m a n ggila n fu n gsi
n a m a _ fun gsi( n ila i_ pa r a m e t e r 1 ,n ila i_ pa r a m e t e r 2 ) ; r e t ur n 0 ;
}
Param et er pada fungsi ini bukanlah suat u harga m at i m aksudnya fungsi void ini t idak
harus selalu m enggunakan par am et er . Tet api alangkah lebih baiknya apabila dalam
pem buat an dan pem anggilan sebuah fungsi disert ai dengan param et ernya agar
m em perj elas v ariabel y ang akan diolah di dalam fungsi t ersebut . Sebagai cont oh
buat lah program dengan sint aks sepert i di bawah ini:
1. Fungsi void t anpa param et er
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
/*
Program 7.1
Nama File : Lat-7.1.c
Programmer : Adam Mukharil Bachtiar, S.Kom. */
#include <stdio.h> #include <stdlib.h> //prototipe fungsi void tampil_nama(); void tampil_nama() {
int nim;
char nama[31],alamat[51];
20
printf("Masukkan Alamat : ");fflush(stdin); gets(alamat);
int main(int argc, char *argv[]) {
Programmer : Adam Mukharil Bachtiar, S.Kom. */
#include <cstdlib> #include <iostream> using namespace std; //prototipe fungsi void tampil_nama(); void tampil_nama() {
28 29 30 31 32 33
int main(int argc, char *argv[]) {
tampil_nama(); system("PAUSE");
return EXIT_SUCCESS; }
Hasil eksekusi:
Gam bar 7.1 Hasil eksekusi program Lat 7.1
2. Fungsi void m enggunakan param et er
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
#include <stdio.h> #include <stdlib.h> //prototipe fungsi
void tampil_nama(int nim,char nama[31],char alamat[51]); void tampil_nama(int nim,char nama[31],char alamat[51]) {
printf("NIM anda = %i\n\a",nim); printf("Nama anda = %s\n\a",nama); printf("Alamat anda = %s\n\n\a",alamat); }
int main(int argc, char *argv[]) {
int nim_isi;
char nama_isi[31],alamat_isi[51];
19
printf("Masukkan Nama : ");fflush(stdin); gets(nama_isi);
printf("Masukkan Alamat : ");fflush(stdin); gets(alamat_isi);
printf("\n");
tampil_nama(nim_isi,nama_isi,alamat_isi); system("PAUSE");
Programmer : Adam Mukharil Bachtiar, S.Kom. */
#include <cstdlib> #include <iostream> using namespace std; //prototipe fungsi
void tampil_nama(int nim,char nama[31],char alamat[51]); void tampil_nama(int nim,char nama[31],char alamat[51]) {
int main(int argc, char *argv[]) {
int nim_isi;
char nama_isi[31],alamat_isi[51];
cout<<"Masukkan NIM : ";cin>>nim_isi; cout<<"Masukkan Nama : ";fflush(stdin); cin.get(nama_isi,30);
cout<<"Masukkan Alamat : ";fflush(stdin); cin.get(alamat_isi,50);
cout<<endl;
tampil_nama(nim_isi,nama_isi,alamat_isi); system("PAUSE");
Hasil eksekusi:
Gam bar 7.2 Hasil eksekusi program Lat 7.2
Cont oh lain unt uk fungsi bert ipe v oid adalah fungsi unt uk m em buat kot ak yang
sint aksnya sebagai berikut :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
/*
Program 7.3
Nama File : Lat-7.3.c
Programmer : Adam Mukharil Bachtiar, S.Kom. */
#include <stdio.h> #include <stdlib.h> #include <conio2.h> //prototipe fungsi
void Kotak(int X1,int Y1, int X2,int Y2,int Bingkai, int Latar);
void Kotak(int X1,int Y1, int X2,int Y2,int Bingkai, int Latar)
{
int i;
textcolor(Bingkai); textbackground(Latar);
gotoxy(X1,Y1);printf("Ú");//untuk simbol Ú cari di simbol M.Word dengan Character Code 218 from
ASCII(Decimal) lalu copy-kan
21
gotoxy(X2,Y1);printf("%c",191); gotoxy(X2,Y2);printf("%c",217); for (i=X1+1;i<=X2-1;i++)
for(i=Y1+1;i<=Y2-1;i++) {
gotoxy(X1,i);printf("%c",179); gotoxy(X2,i);printf("%c",179); }
}
int main(int argc, char *argv[]) {
//warna background textbackground(WHITE); clrscr();
Kotak(1,1,80,24,WHITE,BLUE); Kotak(2,2,15,23,WHITE,RED); textbackground(WHITE);
textcolor(BLACK);
gotoxy(1,25);system("PAUSE"); return 0;
Programmer : Adam Mukharil Bachtiar, S.Kom. */
#include <cstdlib> #include <iostream> #include <conio2.h> using namespace std; //prototipe fungsi
void Kotak(int X1,int Y1, int X2,int Y2,int Bingkai, int Latar);
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
int Latar) {
int i;
textcolor(Bingkai); textbackground(Latar);
gotoxy(X1,Y1);cout<<"Ú";//untuk simbol Ú cari di simbol M.Word dengan Character Code 218 from ASCII(Decimal)lalu copy-kan
gotoxy(X1,Y2);cout<<"\xC0"; gotoxy(X2,Y1);cout<<"\xBF"; gotoxy(X2,Y2);cout<<"\xD9"; for (i=X1+1;i<=X2-1;i++) {
gotoxy(i,Y1);cout<<"\xC4"; gotoxy(i,Y2);cout<<"\xC4"; }
for(i=Y1+1;i<=Y2-1;i++) {
gotoxy(X1,i);cout<<"\xB3"; gotoxy(X2,i);cout<<"\xB3"; }
}
int main(int argc, char *argv[]) {
//warna background textbackground(WHITE); clrscr();
Kotak(1,1,80,24,WHITE,BLUE); Kotak(2,2,15,23,WHITE,RED); textbackground(WHITE);
textcolor(BLACK);
gotoxy(1,25);system("PAUSE"); return EXIT_SUCCESS;
Hasil eksekusi:
Gam bar 7.3 Hasil eksekusi program Lat 7.3
Void kot ak m erupakan sebuah fungsi yang ak an m em buat kot ak di lay ar sesuai
dengan koordinat y ang diberikan di bagian param et er. Koordinat t ersebut adalah
koordinat kiri at as ( X1,Y1) dan koordinat t it ik kanan bawah ( X2,Y2) . Selain it u ada
param et er Bingkai yang berfungsi unt uk m enent ukan w arna bingkai sert a param et er
Layar unt uk m enent ukan w arna lat ar belakang kot ak yang dibuat .
Cat at an Param et er dalam sebuah fungsi m em ang buka sebuah harga m at i
akan t et api sangat disarankan penggunaan param et er dalam
pem buat an dan pem anggilan fungsi unt uk m em perj elas penggunaan
variabel dari sebuah fungsi. Unt uk param et er t et ap ada yang
bersifat globa l m aupun lok a l sepert i yang dij elaskan di Bab I I I .
Fungsi dengan Nilai Balik
Berbeda dengan fungsi yang bert ipe void, fungsi ini berguna unt uk m elakukan suat u proses yang dapat m engem balikan suat u nilai. Dalam m em buat
fungsi ini kit a perlu unt uk m em ilih t ipe dat a yang akan m enj adi t ipe dat a unt uk nilai
/ / pr ot ot ipe fu n gsi
t ipe _ da t a na m a _ fu n gsi( pa r a m e t e r 1 ,pa r a m e t e r 2 ) ;
t ipe _ da t a na m a _ fu n gsi( pa r a m e t e r 1 ,pa r a m e t e r 2 ) {
/ / ba da n _ fu n gsi
r e t ur n n ila i_ ya n g_ dik e m ba lik a n ; }
m a in ( ) {
/ / pe m a n ggila n fu n gsi
n a m a _ fun gsi( n ila i_ pa r a m e t e r 1 ,n ila i_ pa r a m e t e r 2 ) ; r e t ur n 0 ;
}
Fungsi yang Mengembalikan Tipe String
Berikut ini adalah cont oh sebuah fungsi yang m engem balikan dat a bert ipe
st ring.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
/*
Program 7.4
Nama File : Lat-7.4.c
Programmer : Adam Mukharil Bachtiar, S.Kom. */
#include <stdio.h> #include <stdlib.h> char *nama();
char *nama() {
return "Fungsi string dipanggil!"; }
int main(int argc, char *argv[]) {
20 21 22
system("PAUSE"); return 0;
} 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
/*
Program 7.4
Nama File : Lat-7.4.cpp
Programmer : Adam Mukharil Bachtiar, S.Kom. */
#include <cstdlib> #include <iostream> using namespace std; char *nama();
char *nama() {
return "Fungsi string dipanggil!"; }
int main(int argc, char *argv[]) {
cout<<nama()<<endl<<endl; system("PAUSE");
return EXIT_SUCCESS; }
Hasil eksekusi:
Fungsi yang Mengembalikan Tipe Bilangan
Berikut ini adalah cont oh sebuah fungsi yang m engem balikan dat a bert ipe
bilangan.
Programmer : Adam Mukharil Bachtiar, S.Kom. */
#include <stdio.h> #include <stdlib.h> float luas_lingkaran(); float luas_lingkaran() {
return(3.14*10*10);//jari2 = 10 }
int main(int argc, char *argv[]) {
printf("%f\n\n",luas_lingkaran()); system("PAUSE");
Programmer : Adam Mukharil Bachtiar, S.Kom. */
#include <cstdlib> #include <iostream> using namespace std; float luas_lingkaran(); float luas_lingkaran() {
19 20 21 22 23 24
int main(int argc, char *argv[]) {
cout<<luas_lingkaran()<<endl<<endl; system("PAUSE");
return EXIT_SUCCESS; }
Hasil eksekusi:
Fungsi Bertipe dengan Parameter
Kedua buah fungsi sebelum sub bab ini adalah cont oh dari fungsi bert ipe
t anpa param et er. Dalam sub bab ini akan dibuat fungsi bert ipe dengam
m enggunakan param et er t et api sebelum it u ada t iga j enis param et er yang bisa
digunak an di dalam pem buat an fungsi, yait u:
1. Param et er m asuk an
2. Param et er keluaran
3. Param et er m asukan/ keluaran.
Parameter Masukan
Sesuai dengan nam anya, param et er ini digunakan sebagai nilai m asukan
dalam sebuah fungsi. Nilai t ersebut kem udian akan diproses oleh fungsi unt uk
m enghasilkan sebuah nilai balik. Unt uk lebih j elasnya buat lah program dengan
sint aks di bawah ini:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
/*
Program 7.6
Nama File : Lat-7.6.c
Programmer : Adam Mukharil Bachtiar, S.Kom. */
#include <stdio.h> #include <stdlib.h>
float kecepatan(float s, float t); float kecepatan(float s, float t) {
float v; v=s/t; return v; }
int main(int argc, char *argv[]) {
float s_isi,t_isi,v;
printf("Masukkan jarak (KM) : ");scanf("%f",&s_isi); printf("Masukkan waktu (S) : ");scanf("%f",&t_isi); v=kecepatan(s_isi,t_isi);
26 27 28
system("PAUSE"); return 0;
} 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
/*
Program 7.6
Nama File : Lat-7.6.cpp
Programmer : Adam Mukharil Bachtiar, S.Kom. */
#include <cstdlib> #include <iostream> #include <iomanip> using namespace std;
float kecepatan(float s, float t); float kecepatan(float s, float t) {
float v; v=s/t; return v; }
int main(int argc, char *argv[]) {
float s_isi,t_isi,v;
cout<<"Masukkan jarak (KM) : ";cin>>s_isi; cout<<"Masukkan waktu (S) : ";cin>>t_isi; v=kecepatan(s_isi,t_isi);
cout<<endl;
cout<<setiosflags(ios::fixed);
cout<<"Kecepatan = "<<setprecision(2) <<v<<" KM/Jam"<<endl<<endl;
system("PAUSE"); return 0;
Hasil eksekusi:
Gam bar 7.6 Hasil eksekusi program Lat 7.6
Variabel s dan v ariabel t pada fungsi kecepat an ber fungsi sebagai param et er
m asuk an.
Parameter Keluaran
Param et er keluaran adalah param et er yang berfungsi unt uk m enam pung nilai
yang dihasilkan dari proses di dalam fungsi. Param et er ini harus dilew at kan
berdasarkan alam at at au referensinya buk an nilainy a. Param et er keluaran biasanya
digunakan unt uk fungsi bert ipe void. Unt uk lebih j elasnya buat lah program dengan sint aks di bawah ini:
1 2 3 4 5 6 7 8 9 10 11
/*
Program 7.7
Nama File : Lat-7.7.c
Programmer : Adam Mukharil Bachtiar, S.Kom. */
#include <stdio.h> #include <stdlib.h>
12
void jumlah_deret(int batas,int *jumlah) {
int x; *jumlah=0;
for(x=1;x<=batas;x++) {
*jumlah=*jumlah+x; }
}
int main(int argc, char *argv[]) {
int batas,jumlah;
printf("Masukkan batas deret : ");scanf("%i",&batas); jumlah_deret(batas,&jumlah);
printf("%i\n\n",jumlah); system("PAUSE");
Programmer : Adam Mukharil Bachtiar, S.Kom. */
#include <cstdlib> #include <iostream> using namespace std;
void jumlah_deret(int batas, int *jumlah); void jumlah_deret(int batas,int *jumlah) {
int main(int argc, char *argv[]) {
int batas,jumlah;
28 29 30 31 32 33
jumlah_deret(batas,&jumlah); cout<<endl;
cout<<"Jumlah Deret = "<<jumlah <<endl<<endl;
system("PAUSE"); return EXIT_SUCCESS; }
Hasil eksekusi:
Gam bar 7.7 Hasil eksekusi program Lat 7.7
Param et er j um lah yang ada di dalam fungsi j um lah_deret adalah param et er
keluar an. Apabila lebih diperhat ikan lagi ket ik a pem anggilan fungsi j um lah_deret ,
param et er yang diisikan unt uk posisi int * j um lah berisikan variabel yang diaw ali
dengan t anda &. Hal it u digunakan unt uk m engakses alam at dari suat u var iabel yang m enyim pan nilai( akan dipelaj ari lebih lanj ut di Bab Point e r) .
Parameter Masukan/Keluaran
Param et er ini bisa digunakan sebagai param et er m asuk an at aupun param et er
keluar an. Art inya param et er ini akan digunak an sebagai m asukan unt uk proses di
dalam fungsi dan set elah proses t ersebut selesai hasilnya akan disim pan kem bali ke
dalam param et er t ersebut sebagai nilai keluaran. Unt uk lebih j elasnya buat pr ogram
1
Programmer : Adam Mukharil Bachtiar, S.Kom. */
#include <stdio.h> #include <stdlib.h> #include <math.h>
void pangkat_dua(float *bil); void pangkat_dua(float *bil) {
*bil=pow(*bil,2); }
int main(int argc, char *argv[]) {
float bilangan;
printf("Masukkan bilangan : ");scanf("%f",&bilangan); pangkat_dua(&bilangan);
printf("pangkat dua = %.0f\n\n",bilangan);
Programmer : Adam Mukharil Bachtiar, S.Kom. */
#include <cstdlib> #include <iostream> #include <math.h> #include <iomanip> using namespace std;
void pangkat_dua(float *bil); void pangkat_dua(float *bil) {
*bil=pow(*bil,2); }
22 23 24 25 26 27 28 29 30
{
float bilangan;
cout<<"Masukkan bilangan : ";cin>>bilangan; pangkat_dua(&bilangan);
cout<<setiosflags(ios::fixed);
cout<<"pangkat dua = "<<setprecision(0) <<bilangan<<endl<<endl;
system("PAUSE"); return EXIT_SUCCESS; }
Hasil eksekusi:
Gam bar 7.8 Hasil eksekusi program Lat 7.8
Parameter Formal dan Aktual
Jenis- j enis Param et er t erbagi m enj adi dua yait u:
1. Param et er Form al
Param et er yang dideklarasikan pada saat pem buat an sebuah prot ot ipe fungsi
at au fungsi. Param et er inilah yang akan diisi dengan nilai, variabel, at au
alam at ket ika pem anggilan fungsinya.
2. Param et er Akt ual
Param et er y ang didek larasikan dan digunakan ket ika pem anggilan fungsi.
param et er form alny a at au boleh j uga berbeda dengan nam a variabel
param et er form alnya.
Unt uk lebih j elasny a buat pr ogram dengan sint ak s di baw ah ini:
Programmer : Adam Mukharil Bachtiar, S.Kom. */
#include <stdio.h> #include <stdlib.h> #include <math.h>
float akar_pangkat(int bil);
float akar_pangkat(int bil)//bil di sini parameter formal
{
return (sqrt(bil)); }
int main(int argc, char *argv[]) {
int bil;
printf("Masukkan bilangan : ");scanf("%i",&bil); printf("Akar pangkat dua = %.2f\n\n"
,akar_pangkat(bil));//bil di sini parameter
Programmer : Adam Mukharil Bachtiar, S.Kom. */
#include <cstdlib> #include <iostream> #include <math.h> #include <iomanip> using namespace std;
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
float akar_pangkat(int bil)//bil di sini parameter formal
{
return (sqrt(bil)); }
int main(int argc, char *argv[]) {
int bil;
cout<<"Masukkan bilangan : ";cin>>bil; cout<<setiosflags(ios::fixed);
cout<<"Akar pangkat dua = "<<setprecision(2) <<akar_pangkat(bil)<<endl<<endl;
//bil di sini parameter aktual system("PAUSE");
return EXIT_SUCCESS; }
Hasil eksekusi:
Gam bar 7.9 Hasil eksekusi program Lat 7.9
Ket erangan:
1. Var iabel bil yang ada di pr ot ot ipe fungsi dan pem buat an fungsi akar
akar_pangkat m erupakan param et er form al.
2. Var iabel bil y ang ada di fungsi m ain ket ika pem anggilan fungsi akar_pangkat
Melewatkan Parameter Di Fungsi
Param et er bisa dilew at kan di dalam sebuah fungsi dengan dua cara y ait u:
1. Ber dasarkan nilai ( pass by value)
Nilai yang dihasilkan oleh suat u fungsi t idak ak an m em pengaruhi nilai di
dalam program ( di luar fungsi t ersebut ) . Hal ini disebabk an k arena dalam
pem anggilan fungsi, com piler hanya m em buat salinan dari nilai yang ada di
param et er akt ual ke param et er form al. Unt uk lebih j elasny a buat pr ogram
dengan sint aks di bawah ini.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
/*
Program 7.10
Nama File : Lat-7.10.c
Programmer : Adam Mukharil Bachtiar, S.Kom. */
#include <stdio.h> #include <stdlib.h>
void perkalian_lima(int bil); int main(int argc, char *argv[]) {
int bil_isi;
printf("Masukkan bilangan : "); scanf("%i",&bil_isi);
perkalian_lima(bil_isi);
printf("Bilangan input : %i\n\n",bil_isi); system("PAUSE");
return 0; }
void perkalian_lima(int bil) {
bil=bil*5;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
/*
Program 7.10
Nama File : Lat-7.10.cpp
Programmer : Adam Mukharil Bachtiar, S.Kom. */
#include <cstdlib> #include <iostream> using namespace std;
void perkalian_lima(int bil); int main(int argc, char *argv[]) {
int bil_isi;
cout<<"Masukkan bilangan : ";cin>>bil_isi; perkalian_lima(bil_isi);
cout<<"Bilangan input : "<<bil_isi <<endl<<endl;
system("PAUSE"); return EXIT_SUCCESS; }
void perkalian_lima(int bil) {
bil=bil*5;
cout<<"Hasil perkalian lima : "<<bil<<endl; }
Hasil eksekusi:
Pada kasus t ersebut variabel bil_isi dan var iabel bil m enem pat i alam at yang
berbeda sehingga pada saat pem anggilan fungsi nilai keduanya akan ber beda.
Variabel bil_isi akan bernilai t et ap ( sesuai yang diinput ) karena m em ang
program ini t idak m elakukan apa- apa t erhadap variabel t er sebut .
2. Ber dasarkan alam at ( pass by reference)
Ber beda dengan param et er pass by value, pass by reference akan
m elewat kan param et er ke sebuah fungsi berdasarkan alam at nya. Hal ini akan
m eny ebabkan nilai di dalam fungsi akan sam a dengan nilai yang ada di luar
fungsi. Unt uk lebih j elasnya buat program dengan sint aks di bawah ini.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
/*
Program 7.11
Nama File : Lat-7.11.c
Programmer : Adam Mukharil Bachtiar, S.Kom. */
#include <stdio.h> #include <stdlib.h>
void perkalian_lima(int *bil); int main(int argc, char *argv[]) {
int bil_isi;
printf("Masukkan bilangan : "); scanf("%i",&bil_isi);
perkalian_lima(&bil_isi);
printf("Bilangan input : %i\n\n",bil_isi); system("PAUSE");
return 0; }
void perkalian_lima(int *bil) {
*bil=(*bil)*5;
printf("Hasil perkalian lima : %i\n",*bil); }
1 2 3 4 5
/*
Program 7.11
Nama File : Lat-7.11.cpp
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
#include <cstdlib> #include <iostream> using namespace std;
void perkalian_lima(int *bil); int main(int argc, char *argv[]) {
int bil_isi;
cout<<"Masukkan bilangan : ";cin>>bil_isi; perkalian_lima(&bil_isi);
cout<<"Bilangan input : "<<bil_isi <<endl<<endl;
system("PAUSE"); return EXIT_SUCCESS; }
void perkalian_lima(int *bil) {
*bil=(*bil)*5;
cout<<"Hasil perkalian lima : "<<*bil<<endl; }
Hasil eksekusi:
Gam bar 7.11 Hasil eksekusi program Lat 7.11
Variabel bil_isi dan variabel bil akan m enem pat i m em ori y ang sam a sehingga
Overloading Function
Overloading funct ion adalah fungsi yang m em punyai nam a yang sam a akan
t et api m em punyai param et er yang berbeda. Berbeda di sini dapat dilihat dari t iga sisi
yait u secara j um lah, t ipe dat a, m aupun gabungan dari keduanya. Salah sat u cont oh
dari overloading funct ion bisa dilihat dari penggunaan fungsi print f dan cout . Kedua
fungsi t ersebut bisa digunakan unt uk m enam pilkan t eks saj a at aupun gabungan t eks
dengan variabel w alaupun cara pem anggilannya sam a yait u t inggal m em anggil nam a
fungsi t ersebut lalu t inggal dibedakan berdasark an param et er akt ualny a. Tet api
kelebihan ini hanya bisa digunakan unt uk bahasa C+ + . Unt uk lebih j elasnya buat
program dengan sint aks di bawah ini.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
/*
Program 7.12
Nama File : Lat-7.12.cpp
Programmer : Adam Mukharil Bachtiar, S.Kom. */
#include <cstdlib> #include <iostream> using namespace std; int luas(int sisi);
int luas(int panjang,int lebar); int main(int argc, char *argv[]) {
int sisi_isi;
int panjang_isi,lebar_isi;
cout<<"Masukkan sisi persegi : "; cin>>sisi_isi;
cout<<"Masukkan panjang persegi panjang : "; cin>>panjang_isi;
cout<<"Masukkan lebar persegi panjang : "; cin>>lebar_isi;
cout<<"Luas persegi = "<<luas(sisi_isi) <<endl;
cout<<"Luas persegi panjang = "
<<luas(panjang_isi,lebar_isi)<<endl<<endl; system("PAUSE");
28 29 30 31 32 33 34 35 36 37 38 39 40
int luas(int sisi) {
int hasil; hasil=sisi*sisi; return hasil; }
int luas(int panjang,int lebar) {
int hasil;
hasil=panjang*lebar; return hasil;
}
Hasil eksekusi:
Gam bar 7.12 Hasil eksekusi program Lat 7.12
Program di at as m em iliki dua buah fungsi yang m em iliki nam a yang sam a yait u
fungsi luas. Unt u fungsi luas yang pert am a m em iliki param et er sisi digunakan unt uk
m enghit ung luas persegi sedangkan fungsi luas yang kedua m em iliki param et er
Rekursi Fungsi
Di dalam pem rogram C/ C+ + dim ungk inkan unt uk suat u fungsi m em anggil
fungsi it u sendiri. Hal t ersebut disebuat sebagai rekursi fungsi. Sebagai cont oh
adalah program unt uk m enghit ung xy. Program nya sebagai berikut :
1
Programmer : Adam Mukharil Bachtiar, S.Kom. */
#include <stdio.h> #include <stdlib.h>
int pangkat(int x,int y);
int main(int argc, char *argv[]) {
int a,b;
printf("x : ");scanf("%i",&a); printf("y : ");scanf("%i",&b);
printf("x pangkat y = %i\n\n",pangkat(a,b)); system("PAUSE");
return 0; }
int pangkat(int x,int y) {
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
#include <cstdlib> #include <iostream> using namespace std;
int pangkat(int x,int y); int pangkat(int x,int y) {
if(y==1) {
return x; }
else {
return (x*pangkat(x,y-1)); //rekursi fungsi }
}
int main(int argc, char *argv[]) {
int a,b;
cout<<"x : ";cin>>a; cout<<"y : ";cin>>b;
cout<<"x pangkat y = "<<pangkat(a,b)<<endl<<endl; system("PAUSE");
return EXIT_SUCCESS; }
Hasil eksekusi: