LAPORAN PRAKTIKUM VII FUNGSI Disusun untuk Memenuhi Matakuliah Praktikum Dasar Pemrograman C++ Dibimbing oleh Bpk. Wahyu Sakti G.I
Oleh: Nur Kholifah Hidayah 1205!!00"#1 S1 PT$%12 OFF &
UNIV$RSITAS UNIV$RSITAS N$G$RI MALANG FAKULTAS T$KNIK 'URUSAN T$KNIK $L$KTRO PRO&I P$N&I&IKAN T$KNIK $L$KTRO APRIL 201! FUNGSI
A( TU'UAN
Setelah mempelaari bab ini !iharapkan akan mampu: ". %. &. '. (.
Mahasis#a mampu memahami $ungsi Mahasis#a mampu men!eklarasikan !an men!e$inisikan $ungsi Mahasis#a mampu menyelesaikan masalah menggunakan $ungsi Mahasis#a mampu memahami meto!e pemanggilan $ungsi Mahasis#a mampu membuat $ungsi rekursi$
)( &ASAR T$ORI
)ungsi merupakan blok !ari ko!e yang !iran*ang untuk melakukan tugas khusus. uuan pembuatan $unsi a!alah: ". Program mena!i terstruktur %. Dapat mengurangi !uplikasi ko!e &. )ungsi !apat !i panggil !ari program atau $ungsi yang lain Pa!a umumnya $ungsi memerlukan masukan yang !isebut parameter atau argument. ,asil akhir $ungsi akan berupa nilai-nilai balik $ungsi. Bentuk umum sebuah $ungsi a!alah: TypeFungsi namaFungsi - parameter / //Tubuh fungsi 0 ype )ungsi ber$ungsi untuk menentukan tipe keluaran $ungsi yang !apat berupa salah satu tipe !ata C++ yang berlaku misalnya char atau int . De$ault tipeyang ti!ak !isebutkan !ianggap sebagai int . Prototype )un*tion Sebuah program C++ !apat ter!iri !ari banyak $ungsi. Salah satu $ungsi tersebut harus bernama main -. 1ika $ungsi yang lain !i tuliskan setelah $ungsi main -2 sebelum $ungsi main harus !itambahkan prototype $un*tion agar $ungsi tersebut !apat !ikenal. ,al tersebut ti!ak berlaku ika penulisannya !ilakukan sebelum $ungsi main -. 3!a !ua *ara pemanggilan $ungsi yaitu: ". Call by 4alue %. Call by re$eren*e Call by 5alue Pemanggilan $ungsi !engan mele#atkan nilai paramater 4ariabel !alam !e$inisi $ungsi. )ungsi tsb akan mengolah nilai yang !ikirimkan kepa!anya Call by 6e$eren*e
Pemanggilan !engan re$erensi merupakan suatu usaha mele#atkan alamat !ari suatu 4ariabel ke !alam $ungsi. Dengan pengubahan !ilakukan !i !alam $ungsi untuk mengubah 4ariabel !i luar $ungsi.
Na-a Pro/ra)ahaa P.-ro/ra-ao-3il.r S4ri3* 3ro/ra-
La*iha+ Pra,*i,u- 1 P.-ro/ra-a+ : Men*ari nilai terbesar !ari suatu !ata : C++ : 5isual C++ 7.8 :
/*fungsi*/ #include
//deklarasi fungsi int cari (int n1, int n2); void prin (int ); //ain function ain() ! int i"; int $"%; int k; k"cari(i,$); prin(k); return &; ' //<function definition here int cari (int a, int ) ! if (a>) return a; else return ; ' void prin (int ) ! printf(+ilangan teresar adalah-dn,); ' //end function definition>
:
Ou3*u* Pro/ra-
Al/ori*-a ". Mulai.
:
%. Masukkan main $un*tion yang telah !itentukan. ain() ! int i"; int $"%; int k;
k"cari(i,$); prin(k); return &; ' &. 9ntuk $ungsi !e$inisi: if (a>) return a; else return ; ' '. Bilangan terbesar a!alah: ! ;n<2m= (. Cetah hasil. 7. Selesai. P.+.laa+ : Program !iatas menggunakan hea!er st!io karena menggunakan print$.. Menggunakan $ungsi *ari yang ber$ungsi men*ari !ua bilangan yang memiliki !ua parameter yaitu a !an b yag bertipe !ata integer. Menggunakan parameter $ormal 4ariabel. Menggunakan operator i$ else. Program $ungsi untuk men*ari nilai terbesar !ari !ua bilangan2 sebelum $ungsi uatama>main-2 kita terlebih !ahulu men!eklarasikan prototype $ungsi-pa!a s*ript program su!ah a!a komentar letak prototype $ungsi !an $ungsi lainnya untuk men*ari nilai terbesar % bilangan yaitu $ungsi ?*ari< yang akan !i panggil !alam $ungsi main-2 !alam $ungsi ?*ari< program akan memban!ingkan nilai % bilangan menggunakan operasi kon!isi I) ika nilai * lebih besar a!alah * maka program akan men*etak * yang bernilai ( !i monitor ika ti!ak maka ! yang akan !i *etak !an ! bernilai @. Aarena output atau keluarannya berupa print$ maka $ile hea!ernya a!alah st!io.h2 se!angkan ! !isitu !igunakan untuk menampilkan bentuk bilangaan !ata berupa bilangan bulat. -Bisa !ilihat !i output program.
Na-a Pro/ra)ahaa P.-ro/ra-ao-3il.r S4ri3* 3ro/ra-
La*iha+ Pra,*i,u- 2 P.-ro/ra-a+ : Menentukan paak pembelian : C++ : 5isual C++ 7.8 :
#include
//deklarasifungsi int calc0alesa(float purchase, float ta3ate" &.1); //ain function ain() ! float purchase; cout<<4asukkan peelian; cin>>purchase; float ta" calc0alesa(purchase); cout<<5a$ak peelian adalah<
Ou3*u* Pro/ra-
:
Al/ori*-a : 1. Mulai. 2. Masukkan pembelian. 6. Paak pembelian calc0alesa(purchase); 7. Cetak hasil paak pembelian. . Selesai. P.+.laa+6 : Menggunakan hea!er iostream karena menggunakan *out !an *in. Menggunakan $ungsi calc0alesa !engan mengoperasikan % parameter
yaitu pur*hase !an taE6ate yang bertipe $loat !engan batasan 82". Program $ungsi !i atas a!alah sebuah program $ungsi untuk men*ari paak pembelian2 sebelum $ungsi main-2 kita terlebih !ulu men!eklarasikan prototype $ungsi untuk men*ari paak pembelian yaitu $ungsi <*al*SalesaE< yang akan !i panggil oleh $ungsi utama nantinya. Menggunakan )loat Pur*hase untuk menampilkan hasil nilai yang akan !i*etak berupa bilangan bulat. Di !alam $ungsi *al*SalesaE sebelumnya uga su!ah !i !eklarasikan 4ariable>konstanta yang akan !i gunakan yaitu taErate8." yang nanti akan !ikalikan !engan nilai masukan pembelian untuk men!apatkan nilai paak pembelian. Setelah user memasukkan input maka $ungsi main akan memanggil $ungsi *al*SalesaE !an $ungsi main akan men*etak hasil !ari $ungsi *al*SalesaE. Perintah keluaran -output
menggunakan *out !igunakan untuk men*etak sesuatu ke layar2 baik berupa karakter maupun string. er!apat pa!a $ile hea!er ?iostream<2 !an menggunakan ?en!l< untuk ganti baris. 6eturn 8= baris ini a!alah return statement yang memiliki arti untuk mengakhri program utama -yang !iFreturn !apat berupa ko!e>4ariabel. Pa!a *ontoh !iatas kita menggunakan angka 8. 6eturn ko!e 8 biasanya berarti untuk mengakhiri program karena program telah berhasil !ialankan tanpa a!a kesalahan>error.
Na-a Pro/ra-
La*iha+ Pra,*i,u- P.-ro/ra-a+ : Program *ontoh perbe!aan program *all by
)ahaa P.-ro/ra-ao-3il.r S4ri3* 3ro/ra-
re$eren*e !an *all by 4alue. : C++ : 5isual C++ 7.8 :
/*aplikasirekursifpadafaktorial*/ #include int faktorial(int a) ! if(a""1) return 1; else return (a*faktorial(a1)); ' int ain() ! int ; cout<<4encari 8ilai 9aktorialn; cout<<4asukkan nilai n"; cin>>; cout<<9aktorial <<<<:"<
Ou3*u* Pro/ra-
:
Al/ori*-a : ". Mulai. %. Masukkan nilai n -$a*torial. &. Menghitung $a*torial:
if(a""1) return 1; else return (a*faktorial(a1)); ' '. Cetak hasil. (. Selesai.
P.+.laa+6
:
Menggunakan hea!er iostream karena menggunakan *out !an *in. Menggunakan $ungsi return. Menggunakan operator i$ else. Menggunakan operator logika ?<2 ?H<2 operator aritmatika ?<.
Na-a Pro/ra)ahaa P.-ro/ra-ao-3il.r S4ri3* 3ro/ra-
La*iha+ Pra,*i,u- ! P.-ro/ra-a+ : menghitung $a*torial !engan $ungsi rekursi$ : C++ : 5isual C++ 7.8 :
/*aplikasirekursifpadafionacci*/ #include longfio(long a) ! if (a""1 a""2) return 1; else returnfio(a1) fio(a2); ' int ain() ! int ; cout<<4encari nilai fionaccin; cout<<asukkan nilai n"; cin>>; cout<<9ionacci <<<<"<
S4ri3* 3ro/ra- ya+/ *.lah di3.r7ai,i /*aplikasirekursifpadafionacci*/ #include long fio(long a) ! if (a""1 a""2)
:
return 1; else return (fio(a1) fio(a2)); ' int ain() ! int ; cout<<4encari nilai fionaccin; cout<<asukkan nilai n"; cin>>; cout<<9ionacci <<<<"<
:
Ou3*u* Pro/ra-
Al/ori*-a : ". Mulai. %. Masukkan nilai )ibona**i. &. Menghitung )ibona**i: if (a""1 a""2) return 1; else return (fio(a1) fio(a2)); '
'. Cetak hasil. (. Selesai. P.+.laa+6
:
Menggunakan hea!er iostream karena menggunakan *out !an *in. Menggunakan operator i$ else. Menggunakan $ungsi long $ibo -long a. Menggunakan operator logika ?<2 ?JJ<2 operator aritmatika ?+<.
string. er!apat pa!a ganti baris.
$ile hea!er ?iostream<2 !an menggunakan ?en!l< untuk
Na-a Pro/ra)ahaa P.-ro/ra-ao-3il.r S4ri3* 3ro/ra-
Tu/a Pra,*i,u- 1 P.-ro/ra-a+ : Menampilkan permutasian nPr : C++ : 5isual C++ 7.8 :
#include #include int faktorial (int ); int ain() ! int n, r, perutasi; cout<<5rogra 4enghitung 5erutasi (n5r)n; cout<<8ur =holifah hidaahn; cout<<12&677&&?@1n; cout<<01 5AB12 C99 Dn; cout<<4asukkan 8ilai n ;cin>>n; cout<<4asukkan 8ilai r ;cin>>r; perutasi"faktorial(n)/faktorial(nr); cout<<5erutasina adalah <
Ou3*u* Pro/ra-
Al/ori*-a : ". Mulai Program. %. Masukkan nilai n.
:
&. Masukkan nilai r. '. Permutasi: int fak; if (n<"1) ! fak"1; ' else ! fak"n*faktorial (n1); ' return (fak); '
(. Cetak hasil. 7. Program Selesai. P.+.laa+6 : Program menyertakan hea!er iostream.h karena menggunakan *out !an *in. 1ika proram melibatkan ?get*h-=< maka perlu !isertakan hea!er *onio.h. penggunaan get*h-= ber$ungsi untuk ti!ak menampilkan karakter !ari tombol yang !itekan2 berguna memba*a sebuah karakter tanpa perlu menekan enter2 !ipakai uga untuk memba*a spasi2 ataupun tab. Menggunakan main $ungsi $a*torial. Menggunakan operator i$ else. Menggunakan $ungsi return-$ak. Menggunakan operator aritmatika ?<2 ?F?2 operator relasional ?<.
Na-a Pro/ra-
Tu/a Pra,*i,u- 2 P.-ro/ra-a+ : Menghitung nilai $a*torial !an $ibonan*i !ari
)ahaa P.-ro/ra-ao-3il.r S4ri3* 3ro/ra-
sebuah inputan yang !imasukkan. : C++ : 5isual C++ 7.8 :
#include #include long int faktorial (int E); long fio (long a); int ain() ! int r, hasil; cout<<5rogra 9ionaccin; cout<<8ur hidaahn; cout<< 12&677&&?@1n; cout<<01 Dn; cout<<4asukkan8ilai ; cin>>r; hasil"faktorial(r);
4enghitung9aktorialdan =holifah
5AB12
C99
cout<<Fasil <
Ou3*u* Pro/ra-
8
Al/ori*-a : ". Mulai Program. %. Masukkan nilai &. ,asil )ibona**i: long int faktorial (int E) ! if (E""1) return(E); else return (E*faktorial(E1)); ' long fio (long a) ! if (a""1a""2) return 1; else return (fio(a1)fio(a2));
'. Cetak hasil. (. Program Selesei. P.+.laa+6
:
Proram !i atas menggunakan hea!er iostream karena menggunakan *out !an *in. 1ika proram melibatkan ?get*h-=< maka perlu !isertakan hea!er *onio.h.
penggunaan get*h-= ber$ungsi untuk ti!ak menampilkan karakter !ari tombol yang !itekan2 berguna memba*a sebuah karakter tanpa perlu menekan enter2 !ipakai uga untuk memba*a spasi2 ataupun tab. Menggunakan $ungsi main $ibo !an $a*torial. Menggunakan operator i$ else. Menggunakan operator logika ?<2 ?JJ<2 operator aritmatika ?+<.
Na-a Pro/ra-
Tu/a Ru-ah 1 P.-ro/ra-a+ : Menentukan umlah gai bersih !ari gai pokok
yang !iinputkan !itambah !engan umlah bonus )ahaa P.-ro/ra-ao-3il.r S4ri3* 3ro/ra-
uga !iinputkan. : C++ : 5isual C++ 7.8 :
#include #include #include int int int int
onus (int ga$i, int a); ga$iersih (int ga$i, int onuss); ga$itotal ( int ga$i, int onuss); HnputIdata(int ga$i, int a);
ain () ! cout<<t""""""""""""""""n <<t 0elaat datang n <<tDiprogra 4enghitung Ja$i dan +onusn <<t""""""""""""""""n; int ga$i, a; cout<<4asukkan Ja$i 5okok 3p. ; cin>>ga$i; cout<<4asukkan +onus(-) ; cin>>a; int onuss"onus (ga$i,a); cout<<+onus Enda Edalah
3p. <<onuss<<
endl; int ersih"ga$iersih(ga$i,onuss); cout<<Kulah Ja$i +ersih Enda <<ersih<
telah
enggunakan
3p.
3p.
progra
' int onus (int ga$i, int a) ! return ga$i/1&&*a; ' int ga$iersih (int ga$i, int onuss) ! return ga$ionuss; ' int ga$itotal (int ga$i, int onuss) ! return ga$ionuss; '
:
Ou3*u* Pro/ra-
Al/ori*-a
:
". Mulai program %. Deklarasi 4ariabel &. Masukkan umlah gai '. Masukkan umlah bonus (. Menampilkan bonusnya 7. Menampilkan umlah gai bersih @. Menampilkan umlah gai total . Program selesai P.+.laa+6
:
Program ini ber$ungsi untuk menghitung gai !an bonusnya serta gai total !an gai bersih. Program menggunakan hea!er $ile iostream.h yang merupakan hea!er $ile !ari *in !an *out !an *onio.h untuk $ungsi get*h !an #in!o#s.h untuk $ungsi system. Pa!a a#al s*ript2 nampak bah#a program menggunakan $ungsi main2 $ungsi input !ata2 $ungsi bonus2 $ungsi gai bersih2 !an $ungsi gai total. Aelima $ungsi tersebut memiliki parameternya yaitu gai2 a2 bonuss !an semuanya menggunakan tipe !ata interger. Setelah itu2 user !iminta memasukkan besarnya gai !an bonus. Aemu!ian input gai masuk ke !alam 4ariabel gai !an bonus ke !alam 4ariabel bonuss !engan tipe !ata integer. Aemu!ian !ilakukan pemanggilan $ungsi bonus2 gai bersih !an gai total !imana bonus gai>"88 a2 gaibersihbonuss+gai !an gai totalbonuss+gai !an !iberikan nilainya kepa!a
4ariabel yaitu bonuss2 bersih2 !an total. Setelah selesei melakukan penghitungan program akan menampilkan hasilnya. :
Flo94har*
START
.
Read gaji, a
Bonuss=bonus (gaji,a) Bersih= gajibersih(gaji, bonuss) Total=gajitotal(gaji, bonuss)
bonus = gaji/100 a gajibersih = gaji!bonuss gajitotal = gaji!bonuss
ta"#il$an bonuss, bersih, total
Na-a Pro/ra-
)ahaa P.-ro/ra-ao-3il.r S4ri3* 3ro/ra-
Tu/a Ru-ah 2 END P.-ro/ra-a+ : Program Menu utama yang berisi operasi aritmatika yaitu penumlahan2 pengurangan2 perkalian !an pembagian. : C++ : 5isual C++ 7.8 :
#include #include int pengurangan (int a, int ); int pen$ulahan (int a, int ); float peagian (float a, float ); int perkalian (int a, int ); int ;
ain () ! aGal cout<<t"""""""""""""""""""""n << 0elaat datangn << Din; cout<<t 5rogra Eritatika n; cout<<t"""""""""""""""""""""n; cout<>pilihan; if (pilihan "" B1B) ! int a, ; cout<<ttnC5A3E0H 5A8KL4MEFE8 nnn; cout<<4asukkan 8ilai a ; cin>>a; cout<<4asukkan 8ilai ; cin>>; int hasil" pen$ulahan(a,); cout<<Fasil <>a; cout<<4asukkan 8ilai ; cin>>; int hasil" pengurangan(a,); cout<<Fasil <>a; cout<<4asukkan 8ilai ; cin>>; int hasil" perkalian(a,); cout<<Fasil <
getch(); ' '
:
Ou3*u* Pro/ra-
Al/ori*-a : ". Mulai program %. Deklarasi 4ariabel &. 1ika tekan " maka melakukan operasi penumlahan '. 1ika tekan % maka melakukan operasi pengurangan (. 1ika tekan & maka melakukan operasi pembagian 7. 1ika tekan ' maka melakukan operasi perkalian @. 1ika tekan E maka program akan NLI> keluar . Menampilkan hasil operasi . Program selesai. P.+.laa+6
:
Program ini ber$ungsi untuk menghitung operasi aritmatika penambahan2 pengurangan2 perkalian !an pembagian. Program menggunakan hea!er $ile iostream.h yang merupakan hea!er $ile !ari *in !an *out !an *onio.h. Pa!a a#al s*ript2 nampak bah#a program menggunakan $ungsi main2 $ungsi pengurangan2 $ungsi pembagian2 $ungsi perkalian2 $ungsi penumlahan !an $ungsi E. Setelah $ungsi main2 program akan menampilkan menu utama !an meminta user untuk
menginputkan nomer pilihan. Pa!a bagian ini !ilakukan 7 pengkon!isian i$...else i$. Aetika user memilih nomer ". Program selanutnya menampilkan $orm operasi penambahan !imana user akan !iminta untuk menginputkan nilai a !an b. Setelah nilai a !an b telah !iinputkan oleh user2 4ariabel hasil akan memanggil $ungsi penumlahan !an melakukan proses penambahan antara 4ariabel a !an b !an hasilnya kemu!ian akan !itampilkan oleh 4ariabel hasil. Begitu pula ketika user memilih nomer %2&2 !an ' maka 4ariabel hasil akan memanggil masingFmasing $ungsi yang telah !i!eklarasikan. Dan ketika $ungsi su!ah selesei !ilakukan maka program akan menampilkan hasilnya. Selanutnya user akan !i ta nya apakah ingin mengulang. 1ika ?y< akan kembali ke menu a#al !an ika ?n< akan mun*ul out berupa tulisan ?erimakasih elah Menggunakan Program ini<. "ulai
read #ilihan
#il = 1
#il = %
#il = &
#il = '
read a,b
read a,b
read a,b
a, b
a, b
a, b
hasil= #er$alian (a,b)
hasil= #e"bagian (a,b)
#er$alian =
#e"bagian =
ab
a/b
ta"#il hasil
ta"#il hasil
#il =
)lo#*hart
read a, b
hasil= hasil= #enju"lahan #enguranga (a,b) n (a,b)
#enju"lah #enguranga an = a ! b n = a b
ta"#il hasil
A
a$hir
ta"#il hasil
goto a$hir
K$SIMPULAN
". )ungsi
merupakan
blok
blok
!ari
ko!e
yang
!iran*ang
untuk
melaksanakan tugas khusus. Aegunaan !ari $ungsi a!alah: F Mengurangi pengulangan penulisan program yang berulangan atau F
sama. Program mena!i lebih terstruktur2 sehingga mu!ah !ipahami !an
!apat lebih !ikembangkan. %. ,asil akhir $ungsi akan berupa nilai -nilai balik $ungsi &. ype $ungsi ber$ungsi untuk menentukan tipe keluaran $ungsi yang !apat berupa salah satu tipe !ata C++ yang berlaku misalnya *har atau int. !e$ault tipe yang ti!ak !isebutkan !ianggap sebagai int. '. 1ika $ungsi yang lain !i tuliskan setelah $ungsi main -2 sebelum $ungsi main harus !itambahkan prototype $un*tion tersebut !apat !ikenal. (. er!apat !ua ma*am parameter $ungsi2 yaitu: F Parameter $ormal a!alah 4ariabel yang ter!apat pa!a !a$tar parameter F
yang bera!a !i!alam !e$inisi $ungsi. Parameter a*tual a!alah 4ariabel yang !igunakan pa!a pemanggilan
suatu $ungsi. 7. 3!a !ua pemanggilan $ungsi yaitu: F Call by 4alue F Call by re$eren*e
@. Meto!e *all by re$eren*e menggunakan operator pointer 22K !an 22 ‟
‟
untuk mengirimkan alamat 4ariabel ke suatu $ungsi. . Call by 4alue merupakan pemanggilan $ungsi !engan mele#atkan nilai parameter 4ariabel !alam !e$inisi $ungsi. Pa!a pemanggilan !engan nilai yaitu nilai parameter a*tual akan !imasukkan ke parameter $ormal. Dengan *ara ini parameter a*tual ti!ak bisa berubah2 #alaupun nilai !ari parameter $ormal berubah. . Pemanggilan !engan re$eren*e merupakan pemanggilan alamat suatu 4ariabel !i!alam $ungsi. Cara ini !apat !ipakai untuk mengubah isi suatu 4ariabel yang !iluar !ari $ungsi !engan melaksanakan pengubahan nilai !ari suatu 4ariabel !ilakukan !i!alam $ungsi. &AFTAR RU'UKAN ". im 3sisten Dosen.%8"&.Mo!ul@.)ungsi.Malang:9ni4ersitas egeri Malang. %. Aa!ir2 3b!ul.%88&. Pemrograman C++. Qogyakarta:Penerbit 3DI.