Penggunaa
Fungs
Menerapkan
penggunaanfungsi
Membuatkodeprogrammenggunakanfungsi
&+
t I
l.g.
Galnbar6.lllustrasifungslpadapembagianpeke!aan
Sumbel|macrovector,20t9
r r . r , , , r i ,L l
[! ',,, , , ', , ',, '
Fungsimerupakansekelompok rangkaiankode programyang terorganisir untuk
melakukantugastertentu.Fungsimemberikan yanglebihbaikuntukaplikasi
modularitas
dantingkatpenggunaan kodeprogramyangsangatsering. SetiapprogramC++ memiliki
satufungsi,yaitufungsimain( ) . penggunaan
setidaknya fungsidalam programmemiliki
keuntungan sebagaiberikut.
a. Menguraikan kodepemrograman yangrumitmenjadilangkahlangkah yanglebih
sederhanaataukecil.
b. Mengurangi duplikasikode(kodeyangsamaditulisberulang-ulang) dalamsebuah
program.
Dapatmenggunakan kodeyangditulisdalamberbagaiprogramyangberbeda.
d . Memecahprogrambesarmenjadikecilsehingga dapatdikerjakanolehprogrommer
ataudipecahmenjadibeberapatahapuntuk mempermudah pengerjaandalam
sebuahprojek.
Meningkatkan identifikasi
dankemampuan pelacakankesalahanpadaproqram.
132 Pemrograman
Dasar
1. Prototipedan DefinisiFungsi
Prototipefungsidigunakanuntukmendeklarasikan kecornpirelmengenaitipedata
keluarandarifungsi,jumlahparameter,dantipe datadarimasing-masingparameter
yangdigunakan.Keuntunganpenggunaanprototipesebagaiberikut.
a. Compilerakanmelakukankonversiantaratipe parameterdalamdefinisidan
parameterfungsi.
b. Jikajumlahparameter yangdigunakandalamdefinisifungsidan padasaat
pemanggilan fungsiberbedaatautidaksama,akanmenunjukkan kesalahan.
Bentukumumpenulisan prototipefungsidalamGambar6.2.
Gambar62 umumprototlp€
Eentuk tungsl
Sumben Aloodd
Febrlanto
Gambar6.2 menunjukancarapembuatanprototipefungsi.Fungsitampil ( )
merupakan fungsiyangtidakmempunyainilaibalikan(returnvalue)karenatipe
keluaranfungslnyavoid dantidakmempunyaiparameter. FungsinitaiHuruf ( )
adalahfungsiyangtidak memilikiparameter, tetapi mempunyaitipe keluaran
fungsi,yaituchdr.Fungsibagi ( ) memilikisatuparameterdan returnvaluedouble.
Sementaraitu fungsi hitung ( ) mempunyaidua parameterberlipe integeryang
harusdiberikanuntuk menghasilkanretumvalueint.
Definisifungsiadalahbagiandi manamendefinisikan operasifungsi,terdiri
dari deklaratoryangdllkuti oleh badanfungsi.Bentukumum pendefinisianfungsi
disajikandalamGambar6.3.
Gambar
6.3Bentuftumumd€frnisifungsi
Suhb€l:Febrlanto
Alqod
Fungsi yangmemilikitingkatkompleksitasdanmemilikitingkat"pemanggilan"
mengandungsuatuparameter.Terdapat
yangtinggi biasanya duamacamparametel
padafungsi,yaituparameterformal (parameteryang nilai
tidakterdeklarasidengan
variabelsebenarnya/hanya disebutkantipe datanyasaja)dan parameteraktual
(parameter yangterdeklarasi Bentukpenulisan
dengannilaivariabelsebenarnya).
parameterformaldan parameter aktualditunjukkanolehGambar6.4.
-*--1
t
rot"t(",fl; l
flo.t robl(fo.t q,llort bl
- tt
"'-
'_ tl
{
retum(r.b)i
I ll t
LE laranotof altral
dan oalameteraktual
Gambar6,4Parameterformal
SuthberFebdantoAlqodri
Dalamprosespendeklarasian programyangmemuatsuatufungsi,terdapat
suatuvariabelyangbersifatglobal(variabel
ekternal)dan variabellokal.Variabel
Lokalmerupakan variabelyangdideklarasikandi dalamfungsidan hanyadikenal
olehfungsiyangbersangkutan, dideklarasikan
variabeleksternal
sedangkan diluar
fungsiyang bersifatglobal,artinyadapatdigunakanbersama-sama tanPaharus
berulang-ulang.
dideklarasikan Untukpendeklarasian eKernalinidiletakkan
variabel
diluarfungsimaint ) . Gambar6.5menunjukkan suatufungsiyangterdaPatdalam
strukturkodeprogram. Tabel6.1menunjukkanimplementasi penggunaan fungsi
dalamkodeprogram.
::l
ta l" '
!a_r@9!1o la,rsttd tiE{t!
i
22 Ll
r&drr -------------
t3 ltF_brqE E6_15rf,!1 | D.!e4r_lrr )
-_
,1
.:::
t
fungsidalamttrukturkodeptogram
Gambar6.sD€klarasi
SumberF€briantoAlqodri
r
Tabel6.1 lmplementasifungsi dalam kode plogram
Kode
ulng
':,Etp!..
l0
II
l
!: rnr $rvrr!.$I{) {
tt
t6
ll
Gambar6 6 Sourcecodeprogram
Sumber:FebiantoAlqodri
and Run
i,l "Ltut^S;riLuin\p.nulis
Buku\Ap&Data
dukunq\ap
Isi variabel Global = 1o0
Isi Variabel Lqkal = 9
Gambar6.7Ostpuaprogram
Sumbei Feb antoAlqodri
AnallsisKode
a. Bariske-4berisideklarasi variabel globaldarlprogram.
b. Perulangan di bariske-5merupakan deklarasi prototipefungsisetvarlokal ( ) ; .
c. Padaawaldijalankan. programakanmenampilkan nilaidarivariabel globalpadabariske-9,
karenanilaivariabelasudahterdeklarasi di variabel global.
d. Pa d abar isk e- ' 10pr o g ra ma k a nm e m a n g g ifu
l n g s i setV arl ,okal ( ) ; dan akan
menampilkan nilai9, haltersebut karenaketikafasepemanggilan fungsidi dalamfungsi
tersebutvariabel lokaldideklarasi dengannilai9.sehingga nilaivariabel
tersebutlahyang
dikembalikan olehfungsi.
Pemanggilan
Fungsi
||9 ""'"
Pembuatan fungsidalamC++ denganmendifinisikan tentangfungsiapayang harus
dilakukan.
Untukmenggunakan suatu fungsi,harusmemanggilfungsitersebut.Terdapa
dua carapemanggilanfungsi,yaitu dengancaracallby valuedan call by reference
Pemanggilanfungsisecara
sederhana diilustrasikan
dalamGambar6.8.
lenggrnaanrungsi 13g\
Gambar5Slluniaslp€manggllanfungri
Sumber:FebriantoAlqodrl
t llncludc <lo!tr..t)
2
I rr|tq t n-Ixo
nqxo .id
.td;
rl
I | ,L hru,
<bobr. hrll (rsr.
(.sr. a.
a
.l
? tDc aaLa
aa1! t)
|I
l,
- 1, h|ru - 0r
,21t
s
-{
,".,o9,utun 0"t",
f36
and Run
Gambar6 l0 Ourputprogram
Sumber:FebantoAlqodri
AnalislsKode Program
Gambar6.10menunjukan sebuahkodeprogramyangmemilikisebuahfungsibernama
kali O. Fungsiini mengerjakan tugasuntuk mengalikan nilaidua buahvariabeldan
kemudianmengembalikan hasilnya. Sedangkan di dalamfungsiinr malnO,terdapat
beberapa kalipemanggilan terhadapfungsikaI i ( ) sertaperbedaan carapengaksesan
dan pengaruh terhadaphasilnya.
has 1l m em an g g i lfun g s i k a l i d e n g a np e ri n tahhasi l = kal i (10,2);,
Va ri a bel
padabariske-l0,angka 10 sebagaiparameteraktualdandiberikanpadaparameterformal
a,danangka2 sebagai parameter aktualdiberikan padaparameterformalb. Dalamtubuh
fungsikaliO variabellokal ktHasil menampung hasilperkalian variabela * b yaitu
20,selanjutnya padabariske-27merupakan perintahuntukmengembalikan nilaiyang
ditampungpadavariabel klHasil kevariabel hasildalam programutama.
Bariske-l6 menunjukkan caraketigamemanggilfungsikali (x, y), perintahini akan
mencetakdata " Cara KETIGAmemanggil fungsi kali O ",sampaipada perintah
kali (x, y) makaterjadipemanggilan fungsi,dimanavariabelx yangberisi9 sebagai
parameter aktualdiberikan padaparameter formala, danvariabely yangberisi{sebagai
parameteraktualdiberikanpadaparameterformalb . Dalamtubuhfungsikali ( ) variabel
lokalk lH a s i 1 menampung hasilperkalian variabel a * b yaitu 35,selanjutnya padabaris
ke-27 merupakan perintahuntukmengembalikan nilaiyangditampungpadavariabel
klHasi.l keperintahcout yangakanmenampilkan hasilnya.
Di bariske-'|8variabelhasilmemanggilfungsikalidenganperintahhasit =100 +
kali (3,9); konstanta 100 akandijumlahkan denganfungsika I i O sehinggaterjadi
pemanggilan fungsi,dimanaangka3 sebagai parameter aktualdiberikan padaparameter
formala, danangka9 sebagai parameter aktualdiberikan padaparameter formalb.Dalam
tubuhfungsikali ( ) variabellokalklHasil menampung hasilperkalianvariabela* b
yaitu2T,selanjutnya padabariske-27merupakan perintahuntukmengembalikan nilai
yang ditampungvariabelktttasil ke variabelhasildalam programutama,sehingga
ditampilkan adalahhasilpenjumlahan 100+ 27.
Penggunaan
Fungsi l3Z
fungsi denganreference
Tabef6.3 Pemanggilan
Kode
l !n cl u d . < r ..tr .u>
orlng n4.9.6. .td,
I vo l .l t.r b.h( iD! r ., tnt iD,;
I
6 {
7 l rtr r 9iy- 1;
I ri
t coot<<ruu! rd Il nrf|[qs$,t Brqd ';
l0 @ o t< < { | r r !i .< < r < < r y r < < y;
-
!i
tz
tt
ll
ll
Cl;l.*;,'""
I caur<<.\$uql rrltu!
r <tr < <r
lr||!ssrl|[ D|3!|l- '
1a i sur < <.\ni, yt.< <yj
1a
It , i - t* "' b
20 l rb l d !.r b.tr r int ' ., tEt ' br
2r,
22
7t
za
lt mur<<'\nltlrt er rto* ll|Aqr,t rb& .J
.<<..<<' y I .<<ib,
2a cour <<r \n|,
andnun
Illrl ..t.1 !. r ..r n r tllr n Fonrrl
Ga m b a6r l2 Ou tp u tp r o q r a r ir
Su m b e rF e b r ia n to Alq o d r i
AnallslsKode
Gambar6.1I diatasmenunlukan kodeprogramyangmemilikisebuah fungsit ambalr( e,{
, &y) di bariske-12yang memengaruhi pertukarannilalvariabelpemberinyaCara
pertukaran parameter menggunakan tanda ompersand l&),yangartinyafungsimelayani
pengisianberdasarkan acuan(feference). Denganpengisian nrlaisepertiinr,jika terjadi
perubahan nilaipadavariable x dany, akan memengaruhi nilaivariable adanb.
Dibariske-12 ditunjukkan caramemanggil fungsitambah(&x, &y),denganperintahrni
terjadipemanggilan fungsidi manavariabel&x = 9 sebaqai parameteraktuaI menunju k
padaparameter formal *a dan vartabel ly = 7 sebagai parameter aktualmenunjukpada
parameter formal *b. Dalamtubuhfungsil,ambahO terjadidua prosespenjumlahan,
ya i tu*a = 1a + ' 7y a n gm e n g h a s i l k a1n6 d a n * b = * b 15 yanqmenghasi l kan 12.
Selanjutnya di bariske-16terdapat perintah untuk menampilkan isi variabel i = -a
(1 6 ) , danis iv ar iab ye l = ' b (1 2 ). S e te l a h s e l e mengerj
sai akanfungsil drrcah(t x
, &y) di bariske-l2 sampaibariske-'l6,programakanmenampilkan isivariabelx -6
d a nis iv ar iabely = 1 2
l3E Pemrograman
Dasar
.renie-jenis
Funssi
9J
2. FungsiRekursif
fungsiyang
Fungsirekursifadalah memanggil dirinyasendiri,
artinyafungsitersebut
dipanggildi dalamtubuh fungsiitu sendiri.Fungsirekursifsangatbergunabila
diimplementasikanuntukpekerjaanpengurutan dataataumenghitung nilaifaktorial
suatubilangan.ContohfungsirekursifditunjukkanolehTabel6.4.
Tabel6.4 Fungsirekursif
t ftacluda <1osl:"ari>
I qaltEl t ttt,
s{ -aDr6
lo|tg arlgortal ( long r);
I lot rrln I )
a {
7 loEer a;
I coot<<t \ n':
I coEt<<.Ulllrtt! trttrr| Djtltlgln I r;
l0
1t
1' coot<<r8lt,JLl tllgd,,t ttl3n ld{) \'l"
l.t
ta
1t ooe i< <'tdilth ( r ) < < Gn dr,
ta
t? aatErtr 0i
tl t ,...' '
t9 tont r.r.orfit ( long r I
20 t l'...
ll tt ( t > 1 1,1
22 c o u t < < t< < t,..1
ratEln 'tllrortal
2t { rr
aa
ts lr." C
24 {
z7 c o s t < < I< < ' 'i
,t r.tnrtr (lU
2t -
t0
co d ep r o gr am
Ga m b a r 6 l3So u fc€
SumberFebriantoAlqodi
r!a tu b l lor t an : 6
I I t unr s l f t l to rl .l o
!r6fa rNt2t I r dr lef i: l?0
Ga m b a r 6 .1o4u tp u tp r cg r a m
5umber:FebriantoAlqodri
\
tungsr
Fenggunaan l 39 -1
Anrllsii Kode
Di Bariske-10terdapatperintahyangmemintausermemasukan satubilangan,misalnya
yangdiinputkan adalah5.
Di bariske-I5 terdapatperintahmemanggilfungsifaktorial (5) denganalur kerja
sebagaiberikut.Parameter aktual a yang berisibilangan 5 akandiberikanke parameter
faktual r. Proseskerjafungsi faktoriat ( ) dimulai denganpengecekanbilanganx
melaluiperintahpadabariske-2'1,karena( 5 > 1) bernilaitruemakadilakukanpengerjaan
bariske-22.
Dl bariske-23terdapatprosesutamafungsi faktorial ( ) karenaterjadiprosesrekursit
yaitufungsifaktorial O memanggilfungsi fa ktorj.al O dan menghasilkan 5 *
faktolial(4).Demikianseterusnyasehingamenghasilkan5 r 4 * 3 * 2 yaitu
120. Nilaix akanberku.angterussampaix bernilai'1,karenatidak memenuhisyarat( x >
1 ) makayang dike.Jakan adalahblok ebeyaitu return i.. Selanjutnyaprogramakan
kembalikemain ( ) dan menampilkan hasilfungsi faktorial yaitu120,
3. Fungsl Overloading
Overloadingbergunauntuk mendefinisikanbeberapafungsi dengan namayang
sama,tetapi denganparameteryang berbeda.Hal ini dapat diartikanbahwa
fungsi yang overloadberarti menyediakanversilain dari fungsi tersebut.Contoh
impfementasi overloadingyaitu,membuatfungsiyang namanyasamanamun
denganjumlahparameter yangberbeda,bahkandengantipe datayangberbeda
tiap parameternya.Contohprogramyangmemilikifungsioverloodingditunjukkan
olehTabel6.5.
Tabef6.5 Fungsloverlooding
Kode
I orrnq m{pror
t
4 rn t..r4 l rn t r, r nt ar ;
4t d o vb l a a .l l r.ro q br .., ( r uE!r . .?,,
-a 44c I l"
",
t rn ! ti .t (,
t{
,0
ztl
2)
zt
.!oqbl.
,:
r.a1(doubJ,.
rGturn : . 6;
e;'<lo{td.
,
r .l)
1n PemrognmanDasar
t r . t . l a ra tl a d -l !tl
f . nl rl .r.rl .ra - I3 a l .l l
Fr.t.l cr.rlo.a - | : Il.r.r Ell.r.
Gambar p.ogram
5.15Output
sumb€rFebantoAlqodrl
LcmbarKerrrSlswa(L!b.STEMI
Gambar6.lTDiagramprogan denganfungsidldalamnya
Sumber:teb antoAlqodri
TampllanKeluaranPlogram
l.rdll.r lr.l.[ a .t.( ..r
0.(. l.-l : 5l
0rt. t.-10 : l0
| 5 ! lru lll l5l lr r | 2r | 5r la. lt 5 la! |
Ju .l rl ..rr. a .r. : l,l!
Jo .l r[ r.t.-.rtr :8a.3
8 l l ..tr. t.rt..rr : S3
B l l ..r.n (..l .cl | : ?3
? .n .{ru t.. D .l . l .c.nd ln.
a, Research
Mengumpulkan atausumberbacaanyangterkaitdengan,
informasi
L orrayI dimensi,
2. penggunaanfungsi,
3. pemanfaatansorting,dan
4. strukturkontrolpengambilankeputusandan looping.
b. Discovery
PengolahDataSederhanadenganmenggunakanbahasapemrogramanC++ diawalidengan
nama,lembarjawaban,dan kuncijawabansiswa.Programharusdapat
penginisialisasian
menampllkan LEMBAR JAWABsiswa.Denganperintahloopingdan pengambilan keputusan,
programharusdapatmenampilkanLEMBARHASILKOREKSI nilaidanketerangan
sekaligus nilai.
(., *.,1n.--o*", r
Input Masukkan
iumlahdata.
Output MenampilkanLEMBARJAWABdan (perhatikan
LEMBARHASILKOREKSI
padacontohtampilan).
Peralatan Komputer/laptop
b. PerangkatlunakIDECodeBloks
c. Appllcatlon
l. algorttmaprogrdmdiatas dengandlagramalur (flotuchart)
Rancanglah
dou b l e sum O ;
.l^rrh16
-116r5^a/\.
dou b l e m ax Dat a ( int a );
dou b l e m inDala { int b) ;
rr^i.l ac-c^rf ihd/\.
j-nt ma i n o
{
l
inp u tD a ta O ;
p ri n tDat a () ;
co u t< < " J um lah s e rn u a d a ta : " < < s u m O < < endl ;
co u t< < " J um lah ra ta -ra ta : " < < a v e ra qe ( ) < < endl ;
ffi xData(n)
cout<<" Bilangan terbesal <<endl;
co u t < < " B ilanga n te rk e c i l : " < < rn i n D aLa ( n ) < < endl ;
a scs or t ing O ;
re tur n 0i
l
void printData ( )
cout<<"
'/<<endl t
*;
cout((" |
for(inti=0;i<nii++)
t
l
cout<(" \n
"<<endl;
)
double sun O {
)
'....;
)
doubfe average o
{
double r=0;
r
=double rnaxData (int x)
t
double maks = da t a [ 0] ;
for(in t i=l ; i<n ; i+ + )
t
)
I
retuln maks;
J
double ninData (int x)
I
double mins - da t a [ 0] ;
f or(int i=1 ; i<n ; i+ + )
{
)
I
reEuln m.Lns;
)
rt^i.l:.^.^r+ind/\
{
double temp;
for(int i = 0; i<n - 1 ; i+ + )
I
for ( int j = 0 ; j < n -i -1 ; j++)
{
if ( dat a I j ] > d a ta l j + 1 1 )
t
I
cout<<" Pengurutan Data Ascending \n,,;
printData () ;
1. Bullddan8u, kodepmgramdanamatlhasll progtam
keluaran
2. Rancangulangkodeprogramyangtelahdibuatjikaadayangperludisempurnakan.
tampilanprogramyangpaiingbaik.
Ujikembalikodeprogramuntukmenghasilkan
4. Euatlaporanpercobaan
denganformatyangtersediadanpresentasikan,
diagramalUI(flowchort)dankodeprogramuntuk PengolahDatasederhana.
Presentasikan