• Tidak ada hasil yang ditemukan

Fungsi Tanpa Nilai Balik (Procedure)

N/A
N/A
Protected

Academic year: 2019

Membagikan "Fungsi Tanpa Nilai Balik (Procedure)"

Copied!
32
0
0

Teks penuh

(1)

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 (

(2)

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

(3)

/ / 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

(4)

/ / 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];

(5)

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() {

(6)

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];

(7)

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");

(8)

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

(9)

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

(10)

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;

(11)

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

(12)

/ / 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[]) {

(13)

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:

(14)

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() {

(15)

19 20 21 22 23 24

int main(int argc, char *argv[]) {

cout<<luas_lingkaran()<<endl<<endl; system("PAUSE");

return EXIT_SUCCESS; }

Hasil eksekusi:

(16)

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

(17)

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;

(18)

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>

(19)

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;

(20)

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

(21)

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)

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.

(23)

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;

(24)

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

(25)

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;

(26)

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:

(27)

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

(28)

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

(29)

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");

(30)

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

(31)

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

(32)

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:

Gambar

Gambar 7.1 Hasil eksekusi program Lat 7.1
Gambar 7.2 Hasil eksekusi program Lat 7.2
Gambar 7.3 Hasil eksekusi program Lat 7.3
Gambar 7.4 Hasil eksekusi program Lat 7.4
+7

Referensi

Dokumen terkait

Suat u proses hidrolisis unt uk m enghasilkan sirup fr ukt osa dari polim er inulin yang t erkandung di dalam um bi t anam an Dahlia ( Dahlia pinnat a Cav.) dengan sist em

Keraf ( 1981) m eninj au reduplikasi dari segi m orfologis dan sem ant is yait u m elihat reeduplikasi dari segi bent uk, fungsi dan m akna. Keem pat ahli bahasa diat as m engkaj

Suat u lesi cont usio cerebri di daerah front al memiliki derajat gangguan fungsi luhur lebih berat di bandingkan t emporal.. Komponen yang paling banyak t erganggu unt uk lesi

Kuant it as dar i hasil perk ebunan yang diperj ualbelikan pada um um nya dalam j um lah yang kecil sehingga unt uk m endapat kan j um lah/ part ai yang besar diper lukan suat u

Fungsi array _slice( ) digunak an unt uk m engam bil pot ongan elem en dari suat u array y ang dit unj ukk an oleh param at er offset dan param et er lengt h.. Cara dek

bahw a dalam usaha unt uk selalu m enj aga agar perkem bangan perekonom ian sebagai t ersebut di at as dapat t et ap berj alan sesuai dengan kebij akan pem bangunan yang bert um

JADI dapat disim pulkan: unt uk m em aksim alkan laba, set iap produk sebaiknya diproduksi dalam j um lah besar j ika harga naik at au bila harga pasar produk lain t