laporan resmi 13-16 konsep pemrograman [function]
TRANSCRIPT
8/20/2019 Laporan Resmi 13-16 Konsep Pemrograman [Function]
http://slidepdf.com/reader/full/laporan-resmi-13-16-konsep-pemrograman-function 1/29
PRAKTIKUM 13Fungsi : Dasar Fungsi
A. Dasar Teori
Fungsi adalah suatu bagian dari program yang dirancang untuk melaksanakan tugas
tertentu dan letaknya dipisahkan dari program yang menggunakannya. Elemen utama dari
program bahasa C berupa fungsi -fungsi, dalam hal ini program dari bahasa C dibentuk dari
kumpulan fungsi pustaka (standar) dan fungsi yang dibuat sendiri oleh pemrogram. Fungsi
banyak digunakan pada program C dengan tujuan :
a. rogram menjadi terstruktur, sehingga mudah dipahami dan mudah dikembangkan. !engan
memisahkan langkah-langkah detail ke satu atau lebih fungsi -fungsi, maka fungsi
utama (main()) menjadi lebih pendek, jelas dan mudah dimengerti. b. dapat mengurangi pengulangan (duplikasi) kode. "angkah -langkah program yang sama
dan dipakai berulang-ulang di program dapat dituliskan sekali saja secara terpisah
dalam bentuk fungsi-fungsi. #elanjutnya bagian program yang membutuhkan langkah-langkah ini tidak perlu selalu menuliskannya, tetapi cukup memanggil fungsi-fungsi
tersebut.
Dasar Fungsi
Fungsi standar C yang mengemban tugas khusus contohnya adalah $a. printf() , yaitu untuk menampilkan informasi atau data ke layar.
b. scanf() , yaitu untuk membaca kode tombol yang diinputkan
ada umumnya fungsi memerlukan nilai masukan atau parameter yang disebut
sebagai argumen. %ilai masukan ini akan diolah oleh fungsi. &asil akhir fungsi berupa sebuah
nilai (disebut sebagai return 'alue atau nilai keluaran fungsi). leh karena itu fungsisering digambarkan sebagai kotak gelap seperti ditunjukkan pada gambar di ba*ah ini.
enggambaran sebagai kotak gelap pada gambar +.+ menjelaskan bah*a bagian dalamfungsi bersifat pribadi bagi fungsi. ak ada suatu pernyataan di luar fungsi yang bisa mengakses
bagian dalam fungsi, selain melalui parameter (atau 'ariabel eksternal yang akan dibahas
belakangan). isalnya melakukan goto dari pernyataan di luar fungsi ke pernyataan dalam
fungsi adalah tidak diperkenankan./entuk umum dari definisi sebuah fungsi adalah sebagai
berikut :
tipe-keluaran-fungsi nama-fungsi (deklarasi argumen){tubuh fungsi}
0eterangan :• tipe-keluaran-fungsi, dapat berupa salah satu tipe data C, misalnya char atau int .
0alau penentu tipe tidak disebutkan maka dianggap bertipe int (secara default).
• tubu fungsi berisi deklarasi 'ariabel (kalau ada) dan statemen-statemen yang akan
melakukan tugas yang akan diberikan kepada fungsi yang bersangkutan. ubuh fungsi
ini ditulis di dalam tanda kurung kura*al buka dan kurung kura*al tutup.
Laporan Resmi Praktikum Konsep Pemrograman : Fungsi | Rendra Budi Hutama
[2110131036] 1
8/20/2019 Laporan Resmi 13-16 Konsep Pemrograman [Function]
http://slidepdf.com/reader/full/laporan-resmi-13-16-konsep-pemrograman-function 2/29
Me!berikan "ilai Keluaran Fungsi
#uatu fungsi dibuat untuk maksud menyelesaikan tugas tertentu. #uatu fungsi dapat
hanya melakukan suatu tugas saja tanpa memberikan suatu hasil keluaran atau melakukan
suatu tugas dan kemudian memberikan hasil keluaran. Fungsi yang hanya melakukan
suatu tugas saja tanpa memberikan hasil keluaran misalnya adalah fungsi untuk
menampilkan hasil di layar. !alam tubuh fungsi, pernyataan yang digunakan untuk
memberikan nilai keluaran fungsi berupa return.
Prototipe Fungsi
rototipe fungsi digunakan untuk menjelaskan kepada kompiler mengenai :
• tipe keluaran fungsi
• jumlah parameter
• tipe dari masing-masing parameter.
/agi kompiler, informasi dalam prototipe akan dipakai untuk memeriksa keabsahan
('aliditas) parameter dalam pemanggilan fungsi. #alah satu keuntungannya adalah,
kompiler akan melakukan kon'ersi seandainya antara tipe parameter dalam fungsi dan
parameter saat pemanggilan fungsi tidak sama, atau akan menunjukan kesalahan bila jumlah parameter dalam definisi dan saat pemanggilan berbeda.
Contoh prototipe fungsi$float jumlah (float x, float y);
ataufloat jumlah (float, float);
#. Tugas Pen$auluan
%&oal 1'
Algorit!a !ena!pilkan !enu berulang $engan fungsi.
!eklarasikan i dan n sebagai bilangan bulat, dan fungi menu() dengan tipe data void . 1nisiasi
nilai i dengan angka 2.
+. asukkan jumlah pengulangan(n).
3. 4ika nilai i kurang dari n maka lakukan langkah dan seterusnya, bila tidak langsung ke
langkah 5.. anggil fungsi menu().
6. ambahkan i dengan + dan simpan hasilnya di i kembali.
5. #elesai.
Algorit!a fungsi !enu()
+. ampilkan pilihan menu yang ada.
%&oal *'
Algorit!a !ena!pilkan bilangan triangular $engan fungsi
!eklarasikan bil sebagai bilangan bulat dan fungsi triangular sebagai void.
+. asukkan bilangan(bil).
3. anggil fungsi triangular dengan menyertakan bil sebagai parameter.. #elesai.
Algorit!a fungsi triangular()
erima nilai bil sebagai bilangan bulat. !eklarasikan nilai i dan +u! sebagai bilangan bulat.
+. /erikan nilai bil ke i
3. 4ika nilai i lebih dari 2 lakukan langkah 3 bila tidak langsung ke langkah 7.
Laporan Resmi Praktikum Konsep Pemrograman : Fungsi | Rendra Budi Hutama
[2110131036] 2
8/20/2019 Laporan Resmi 13-16 Konsep Pemrograman [Function]
http://slidepdf.com/reader/full/laporan-resmi-13-16-konsep-pemrograman-function 3/29
. ampilkan nilai i
6. 4ika nilai i tidak sama dengan +, maka tampilkan karakter 89.
5. ambahkan jum dengan i, simpan hasilnya di +u! kembali.
;. 0urangi nilai i dengan +, simpan hasilnya di i kembali, 0embali ke langkah 3.7. ampilkan nilai +u!
<. #elesai.
%&oal 3'Algorit!a !ena!pilkan asil kua$rat $ari bilangan !enggunakan fungsi
!eklarasikan bil,asilKua$rat dan fungsi kua$ratkan() sebagai bilangan bulat.
1. asukkan nilai bil
*. anggil fungsi kuadratkan() dengan menyertakan bil sebagai parameter. #impan hasil
pemanggilan fungsi di asilKua$rat.
3. ampilkan nilai asilKua$rat.
,. #elesai
Algorit!a fungsi kua$ratkan()
erima nilai bil sebagai bilInput dengan tipe data bilangan bulat.
1. 0alikan bilInput dengan bilInput dan kembalikan hasilnya ke fungsi pemanggil
%&oal ,'
Algorit!a !ena!pilkan asil peritungan $engan fungsi
!eklarasikan bil,asiln/ asil&n/fungsi fnn()/fungsi&n() sebagai bilangan pecahan.
1. asukkan nilai bil*. anggil fungsi fn=Cn() dengan menyertakan bil sebagai parameter. #impan hasil
pemanggilan fungsi di asiln.
3. anggil fungsi fn=#n() dengan menyertakan bil sebagai parameter. #impan hasil
pemanggilan fungsi di asil&n.
,. ampilkan asiln ke layar
0. ampilkan asil&n ke layar
. #elesai
Algorit!a fungsi asiln()
erima nilai bil sebagai angka dengan tipe data bilangan bulat. !eklarasikan i dan asilsebagai bilangan pecahan. 1nisiasi nilai hasil dengan angka +
1. 4ika nilai i kurang dari nilai angka maka lakukan langkah 3 bila tidak langsung ke langkah 6
*. 0alikan nilai asil dengan * kemudian tambahkan dengan 1 dan simpan hasilnya di asil
kembali
3. 0embalikan nilai asil ke fungsi pemanggil.
Algorit!a fungsi asil&n()erima nilai bil sebagai angka dengan tipe data bilangan bulat. !eklarasikan i dan asil
sebagai bilangan pecahan. 1nisiasi nilai hasil dengan angka +
1. 4ika nilai i kurang dari nilai angka maka lakukan langkah 3 bila tidak langsung ke langkah 6
*. ambahkan nilai asil dengan angka kemudian kurangi dengan 1 dan simpan hasilnya di
asil kembali
3. 0embalikan nilai asil ke fungsi pemanggil.Laporan Resmi Praktikum Konsep Pemrograman : Fungsi | Rendra Budi Hutama
[2110131036] 3
8/20/2019 Laporan Resmi 13-16 Konsep Pemrograman [Function]
http://slidepdf.com/reader/full/laporan-resmi-13-16-konsep-pemrograman-function 4/29
. Per2obaan
&oal 1
a. /uatlah sebuah fungsi yang berfungsi untuk menampilkan sebuah string (di layar) >
8ilihan enu (misalkan nama fungsinya > menu). Fungsi tersebut tidak memiliki nilai
kembalian (return 'alue) dan juga tidak menerima parameter masukan apapun.
b. ulislah prototipe fungsi untuk fungsi tersebut.c. /uat function main untuk memanggil function menu() secara berulang-ulang, dengan
jumlah perulangan yang merupakan input dari user.
a4ab
a. "isting rogram#include stdio!h"
oid menu();
main(){
int n,i;
printf($%&'*+ . /0'1 2n&345&' 6 78.8.9 6 5:*2n$);printf($2n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 2n$);printf($34'%*1'4 34+ 3&+1'4= 534='4 >+4=/*2n$);printf($2n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 2n$);
printf($asukkan jumlah pengulangan2t ? $);scanf($@d$,An);for(i<8;in;iBB)
menu();}
oid menu(){
puts($%ilihan menu$);
puts($! 4asi =oreng$);puts($7! 4asi &endang$);puts($.! 4asi +duk$);puts($$);
}
b. Capture rogram
c. ?nalisis rogram
ada program ini digunakan fungsi yang tidak memerlukan keluaran atau return value
sehingga dalam prototype fungsi, fungsi ini didefinisikan bertipe void . idak memerlukan
return 'alue karena tugas fungsi hanyalah untuk menampilkan tulisan di layar. ?gar jumlah
tulisan yang tampil sesuai jumlah yang diinginkan maka fungsi dipanggil secara berulang
dengan cara pengulangan @ loop.
&oal *
a. /uatlah sebuah fungsi untuk menghitung jumlah triangular n (misal nama fungsinya >
triangular). Fungsi tersebut memiliki sebuah parameter berupa bilangan int (n) yang
akan dicari triangularnya serta tidak memiliki nilai kembalian (return 'alue)
Laporan Resmi Praktikum Konsep Pemrograman : Fungsi | Rendra Budi Hutama
[2110131036] 4
8/20/2019 Laporan Resmi 13-16 Konsep Pemrograman [Function]
http://slidepdf.com/reader/full/laporan-resmi-13-16-konsep-pemrograman-function 5/29
b. ulislah prototipe fungsi untuk fungsi tersebut.c. /uat function main untuk memanggil function triangular() tersebut dengan nilai n yang
merupakan input dari user.
a4ab
a. "isting rogram#include stdio!h"
oid triangular(int bil);
main(){
int n,bil;
printf($%&'*+ . /0'1 72n&345&' 6 78.8.9 6 5:*2n$);printf($2n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 2n$);printf($>+4=/* 34'%*1'4 *1'4='4 &*'4=+1'&$);printf($2n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 2n$);
printf($2nasukkan bilangan ? $);scanf($@d$,Abil);
triangular(bil);}
oid triangular(int bil){
int i,jum < 8;
printf($2nCasil pengulangan ? $);for(i<bil;i"8;i--){
printf($@d $,i);jum < jum B i;if(i D< )
printf($B $);}
printf($< @d 2n$,jum);}
b. Capture rogram
2. ?nalisis rogram
#ama dengan soal no +, pada program ini menggunakan fungsi dengan tipe 'oid karena tidak
ada return value atau nilai kembaliannya. /edanya, pada program ini sudah terdapat
parameter aktual yang bertipe integer(int). %ilai parameter aktual tersebut selanjutnya akan
diterima oleh parameter formal di dalam fungsi dan nilainya akan dijadikan sebagai acuan
dalam mengerjakan tugas pada fungsi tersebut.
&oal 3
a. /uatlah sebuah fungsi untuk menghitung nilai bilangan kuadrat (misal nama fungsinya
> kuadrat). Fungsi tersebut memiliki sebuah parameter bertipe float, yaitu bilangan yang
akan dikuadratkan serta memiliki sebuah return 'alue bertipe float, yaitu hasil kuadratnya
b. ulislah prototipe fungsi untuk fungsi tersebut.
Laporan Resmi Praktikum Konsep Pemrograman : Fungsi | Rendra Budi Hutama
[2110131036] 5
8/20/2019 Laporan Resmi 13-16 Konsep Pemrograman [Function]
http://slidepdf.com/reader/full/laporan-resmi-13-16-konsep-pemrograman-function 6/29
2. /uat function main untuk memanggil function kuadrat() tersebut dengan bilangan A
yang akan dicari kuadratnya merupakan input dari user.
a4ab :
a. "isting rogram#include stdio!h"
float kuadratkan(float);
main(){float bil,hasiluadrat;
printf($%&'*+ . /0'1 .2n&345&' 6 78.8.9 6 5:*2n$);printf($2n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 2n$);printf($>+4=/* 34'%*1'4 C'/*1 +'5&' *1'4='4$);printf($2n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 2n$);
printf($2nasukkan bilangan2t<2t$);scanf($@f$,Abil);hasiluadrat < kuadratkan(bil);printf($2nCasil kuadrat 2t2t<2t@g$,hasiluadrat);
}
float kuadratkan(float bil*nput){
return bil*nput E bil*nput;}
b. Capture rogram
c. ?nalisis rogramada program ini terdapat sebuah fungsi yang memiliki return 'alue @ nilai kembalian yaitu
fungsi kuadratkan() dengan tipe data float. Fungsi tersebut mendapatkan sebuah parameter
dari fungsi main yang berupa bilangan pecahan float juga kemudian mengembalikan hasil
pengolahan parameter tadi kembali ke main() yang akhirnya akan ditampilkan ke layar
sebagai sebuah output.
&oal ,
!engan menggunakan fungsi, buatlah program untuk mendapatkan keluaran dari
fungsi di ba*ah ini, dimana inputnya berupa bilangan untuk n
B Cn > 3 Cn-+ 9 + jika C2 > +
B #n > #n-+9 n B + jika #+ > 2
a4ab :
a. "isting rogram#include stdio!h"
int fnFGn(int);int fnF/n(int);
main(){
int bil,hasilFGn,hasilF/n;printf($%&'*+ . /0'1 :2n&345&' 6 78.8.9 6 5:*$);printf($2n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 2n$);
printf($2nasukkan bilangan2t<2t$);scanf($@d$,Abil);
Laporan Resmi Praktikum Konsep Pemrograman : Fungsi | Rendra Budi Hutama
[2110131036] 6
8/20/2019 Laporan Resmi 13-16 Konsep Pemrograman [Function]
http://slidepdf.com/reader/full/laporan-resmi-13-16-konsep-pemrograman-function 7/29
hasilFGn < fnFGn(bil);hasilF/n < fnF/n(bil);
printf($2nCasil Gn @d$,hasilFGn);printf($2n2nCasil /n @d$,hasilF/n);
}
int fnFGn(int angka){
int i,hasil<;for(i < 8;iangka;iBB){
hasil < 7 E hasil B ;}return hasil;
}
int fnF/n(int angka){
int i,hasil<;for(i < 8;iangka;iBB){
hasil < hasil B angka -;}
return hasil;}
b. Capture rogram
c. ?nalisis rogram
!alam bahasa C, suatu program tersusun dari berbagai fungsi yang terstruktur dan
berhubungan antara satu dengan yang lain. Contohnya adalah pada program ini yang
memiliki fungsi buatan sebanyak 3 fungsi kecuali fungsi main(). #etiap fungsi menjalankan
tugasnya masing-masing sesuai dengan perintah dan pernyataan yang telah ditentukan.
D. Kesi!pulan
+. Fungsi adalah suatu bagian dari program yang dirancang untuk melaksanakan tugas
tertentu dan letaknya dipisahkan dari program yang menggunakannya.
3. Fungsi membuat suatu program lebih terstruktur dan mengurangi duplikasi dalam
penulisan kode program.. #uatu fungsi dapat memiliki parameter dan@atau return value sesuai kebutuhan.
Laporan Resmi Praktikum Konsep Pemrograman : Fungsi | Rendra Budi Hutama
[2110131036] 7
8/20/2019 Laporan Resmi 13-16 Konsep Pemrograman [Function]
http://slidepdf.com/reader/full/laporan-resmi-13-16-konsep-pemrograman-function 8/29
PRAKTIKUM 1,Fungsi : Para!eter For!al 5 Aktual
A. Dasar TeoriPara!eter For!al $an Para!eter Aktual
arameter formal adalah 'ariabel yang ada pada daftar parameter dalam definisi fungsi. ada
contoh program di atas misalnya, maka dalam fungsi jumlah() 'ariabel A dan y dinamakan
sebagai parameter formal. ?dapun parameter aktual adalah parameter (tidak selalu berupa
'ariabel) yang dipakai dalam pemanggilan fungsi.
erbedaan antara arameter Formal dan ?ktual ditunjukkan pada gambar +6.+.
ada pernyataan :x < jumlah(a, b);y < jumlah(78!, :H!9);
a dan b merupakan parameter aktual dari fungsi jumlah() dalam hal ini parameter berupa 'ariabel.
!emikian juga 32.+ dan 65.; adalah parameter aktual, dalam hal ini berupa konstanta.
/ahkan bisa juga parameter aktual berupa ungkapan yang melibatkan operator, misalnya :
#. Tugas Pen$auluan%&oal 1'
Algorit!a !en2ari nilai bilangan terbesar $ari $ua bilangan $engan fungsi.
!eklarasikan bil, isanjil dan fungsi cekanjil() sebagai bilangan bulat.
+. asukkan bilangan(bil)3. anggil fungsi cekanjil() dengan parameter bil. #impan hasil pemanggilan fungsi di
isanjil. 4ika nilai isanjil sama dengan + maka tampilkan 8bilangan ganjil, bila tidak maka
tampilkan 8bilangan genap6. #elesai.
Algorit!a fungsi 2ek6an+il()
erima nilai bil sebagai bilangan bulat pada 7g$i2ek
+. 0embalikan nilai 7g$i2ek 8 *
%&oal *'
Algorit!a !en2ari +u!la faktorial $ari suatu bilangan $engan fungsi.
!eklarasikan bil, jumFaktorial dan fungsi faktorial() sebagai bilangan pecahan.
+. asukkan bilangan(bil)
Laporan Resmi Praktikum Konsep Pemrograman : Fungsi | Rendra Budi Hutama
[2110131036] 8
8/20/2019 Laporan Resmi 13-16 Konsep Pemrograman [Function]
http://slidepdf.com/reader/full/laporan-resmi-13-16-konsep-pemrograman-function 9/29
3. anggil fungsi faktorial() dengan parameter bil. #impan hasil pemanggilan fungsi di
jumFaktorial
. ampilkan nilai jumFaktorial6. #elesai.
Algorit!a fungsi faktorial()
erima nilai bil sebagai bilangan pecahan. !eklarasikan nilai i dan jum. 1nisiasi nilai jum
dengan angka +.
+. 4ika i lebih besar daripada 2 maka lanjutkan langkah selanjutnya, bila tidak langsung ke
langkah 6
3. &itung nilai jum dengan mengalikan jum dengan i dan simpan hasilnya di jum kembali
. 0urangi nilai i dengan + dan simpan hasilnya di i kembali. #elanjutnya kembali ke langkah +6. 0embalikan nilai jum ke fungsi pemanggil.
%&oal 3'
Algorit!a !en2ari bilangan pri!a $engan fungsi.
!eklarasikan bil, isrima dan fungsi cekrima() sebagai bilangan bulat.
+. asukkan bilangan(bil)
3. anggil fungsi cekrima() dengan parameter bil. #impan hasil pemanggilan fungsi di
isPri!a
. 4ika nilai isrima sama dengan + maka tampilkan 8/ilangan rima bila tidak maka
tampilkan 8/ukan /ilangan rima
6. #elesai.
Algorit!a fungsi 2ekPri!a()
erima nilai bil sebagai bilangan bulat. !eklarasikan nilai i,pe!bagi dan faktorn7a. 1nisiasi
nilai pe!bagi dengan + dan faktorn7a dengan angka 2.
+. 4ika pe!bagi kurang dari sama dengan bil maka lanjutkan langkah selanjutnya, bila tidak
langsung ke langkah
3. 4ika bil dimodulus pe!bagi sama dengan nol maka naikkan nilai faktornya dengan angka +.
0emudian kembali ke langkah +. 4ika faktorn7a sama dengan 3 maka kembalikan nilai + ke fungsi pemanggil, bila tidak
kembalikan nilai 2.
6. #elesai
%&oal ,'
Algorit!a !engkon9ersi $era+a$ ke ra$ian.
!eklarasikan &1 sebagai konstanta dengan nilai 3.1,10f , $era+a$, slRa$ dan fungsi
ra$ian() sebagai bilangan pecahan.
+. asukkan bilangan(bil)
*. anggil fungsi radian() dengan parameter bil. #impan hasil pemanggilan fungsi di slRa$
. ampilkan nilai slRa$
6. #elesai.
Algorit!a fungsi ra$ian()
1. &itung nilai sudut dalam radian dengan membagi sudut dengan +<2 lalu dikalikan dengan&1
*. 0embalikan nilai sudut dalam radian ke fungsi pemanggil
%&oal 0'
Algorit!a !engkon9ersi suu.
!eklarasikan su!ber dan tu+uan sebagai char, suu&u!ber dan suuTu+uan dan fungsi
kon9ersi() sebagai bilangan pecahan.Laporan Resmi Praktikum Konsep Pemrograman : Fungsi | Rendra Budi Hutama
[2110131036] 9
8/20/2019 Laporan Resmi 13-16 Konsep Pemrograman [Function]
http://slidepdf.com/reader/full/laporan-resmi-13-16-konsep-pemrograman-function 10/29
+. asukkan nilai suhu sumber(su!ber)
3. asukkan nilai suhu tujuan(tu+uan)
. asukkan kode suu&u!ber
6. asukkan kode suuTu+uan
0. anggil fungsi kon'ersi() dengan parameter su!ber/ suu&u!ber dan suuTu+uan.
#impan hasil pemanggilan fungsi di tu+uan
;. ampilkan nilai tu+uan7. #elesai.
Algorit!a fungsi ra$ian()
1. #eleksi jenis suhu a*al untuk menentukan suhu a*al dan pembanding sumber
*. #eleksi jenis suhu akhir untuk menentukan suhu a*al dan pembanding sumber
3. &itung suhutujuan dengan rumus
(pembandingTujuan / pembandingSumber) * (suhuSumber suhu!"a#Sumber) $ suhu!"a#Tujuan
,. 0embalikan hasil perhitungan ke fungsi pemanggil
. Per2obaan
&oal 1
a. !efinisikan sebuah fungsi ganjil() yang memilliki sebuah parameter bilangan bulat dan
mengembalikan nilai + jika parameter yang diberikan adalah bilangan ganjil dan
mengembalikan nilai 2 jika parameter tsb bukan bilangan ganjil
b. ulislah prototipe fungsi untuk fungsi tersebut.
2. /uat function main untuk memanggil function ganjil() yang menerima input sebuah
bilangan bulat yang akan ditentukan ganjil@genapnya. ampilkan pesannya (ganjil@genap)
dalam main().
a4ab :
a. "isting rogram#include stdio!h"
int ganjil(int);
main(){
int bil,is=anjil;
printf($%&'*+ : /0'1 2n&345&' 6 78.8.9 6 5:*2n$);
printf($2n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<2n$);printf($34=3G3 *1'4='4 ='4I*1 =34'% 534='4 >+4=/*$);printf($2n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<2n$);
printf($asukkan bilangan2t?2t$);scanf($@d$,Abil);printf($2n$);
is=anjil < ganjil(bil);
if(is=anjil)printf($ilangan @d adalah bilangan ='4I*1$,bil);
elseprintf($ilangan @d adalah bilangan =34'%$,bil);
}
int ganjil(ygdicek){
return ygdicek @ 7;}
b. Capture rogram
Laporan Resmi Praktikum Konsep Pemrograman : Fungsi | Rendra Budi Hutama
[2110131036] 10
8/20/2019 Laporan Resmi 13-16 Konsep Pemrograman [Function]
http://slidepdf.com/reader/full/laporan-resmi-13-16-konsep-pemrograman-function 11/29
c. ?nalisis rogram
/ilangan ganjil adalah bilangan yang apabila dibagi 3 hasil baginya 2. !engan konsep
tersebut maka dibuatlah fungsi untuk mengecek suatu bilangan ganjil atau tidak. Fungsi
tersebut bertipe integer yang apabila bilangan yang dimasukkan ke parameter adalah bilangan
ganjil maka memberikan return 'alue + bila tidak maka 2. &asil return 'alue tadi diseleksi
kembali menggunakan pernyataan in di fungsi pemanggil.
&oal *
/uatlah program untuk menghitung faktorial dengan menggunakan 3 fungsi (main()dan faktorial()). Fungsi faktorial() memberikan return 'alue bertipe long int yang akan
dicetak ke layar dalam fungsi main().
a4ab :
a. "isting rogram
#include stdio!h"
long faktorial(long bil);
main()
{long jum>aktorial,bil;
printf($%&'*+ : /0'1 72n&345&' 6 78.8.9 6 5:*2n$);printf($2n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 2n$);printf($>+4=/* 34'%*1'4 I+1'C *1'4='4 >'0&*'1$);printf($2n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<2n$);
printf($2nasukkan bilangan 2t< $);scanf($@ld$,Abil);
jum>aktorial < faktorial(bil);
printf($2nIumlah faktorial dari @ld adalah @ld$,bil,jum>aktorial);}
long faktorial(long bil){
int i,jum < ;
for(i<bil;i"8;i--){
jum < jum E i;}return jum;
}
b. Capture rogram
Laporan Resmi Praktikum Konsep Pemrograman : Fungsi | Rendra Budi Hutama
[2110131036] 11
8/20/2019 Laporan Resmi 13-16 Konsep Pemrograman [Function]
http://slidepdf.com/reader/full/laporan-resmi-13-16-konsep-pemrograman-function 12/29
c. ?nalisis rogram
Faktorial merupakan hasil kali seluruh bilangan mulai dari + hingga bilangan itu sendiri.
0arena pasti hasil factorial tidak sedikit, maka digunakan tipe data long yang bisa
menyimpan lebih banyak digit bilangan. ada program ini, fungsi akan menerima bilangan
yang akan dicari faktorialnya dari parameter. 0emudian memprosesnya dengan cara
melakukan pengulangan. #elanjutnya jumlah dari factorial tadi dikembalikan ke fungsi
pemangil untuk ditampilkan ke layar.
&oal 3
/uatlah fungsi prima(), yang memberikan nilai balik + bila bilangan yang
dimasukkan adalah prima, dan 2 bila bukan bilangan prima.
a4ab :
a. "isting rogram
#include stdio!h"
int prina(int bil);
main(){
int bil,is%rima;
printf($%&'*+ : /0'1 .2n&345&' 6 78.8.9 6 5:*2n$);printf($2n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 2n2n$);printf($>+4=/* 34=3G3 *1'4='4 %&*' 2n$);printf($2n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 2n$);
printf($2nasukkan bilangan 2t< $);scanf($@d$,Abil);
is%rima < prima(bil);
if(is%rima)printf($2nilangan @d adalah bilangan %&*'$,bil);
elseprintf($2nilangan @d bukan bilangan %&*'$,bil);
getch();}
int prima(int bil){
int pembagi,faktornya < 8;
for(pembagi < ;pembagi < bil;pembagiBB){
if(bil @ pembagi << 8)faktornyaBB;
}
if(faktornya < 7)return ;
elsereturn 8;
}
b. Capture rogram
Laporan Resmi Praktikum Konsep Pemrograman : Fungsi | Rendra Budi Hutama
[2110131036] 12
8/20/2019 Laporan Resmi 13-16 Konsep Pemrograman [Function]
http://slidepdf.com/reader/full/laporan-resmi-13-16-konsep-pemrograman-function 13/29
c. ?nalisis rogram/ilangan rima hanyalah bilangan yang hanya mempunyai 3 faktor yaitu bilangan + dan
bilangan itu sendiri. aka dari itu pada program kali ini fungsi melakukan looping untuk
mengeck apakah faktor dari bilangan tersebut kurang dari atau sama dengan 3 atau tidak. /ila
iya maka me-return + yang berarti bilangan rima, bila tidak maka me-return 2 yang berarti
bukan bilangan prima.
&oal ,
a. !efinisikan sebuah fungsi radian() yang berfungsi untuk mengkon'ersi besaran sudut
dari derajat ke radian dengan rumus sbb : rad > drjt @ +<2.2f D 1. Fungsi tersebut memiliki
sebuah parameter yaitu derajat yang akan dikon'ersi, dan memiliki sebuah return 'alue
berupa hasil kon'ersi dalam radian. b. ulislah prototipe fungsi untuk fungsi tersebut.
c. /uat function main untuk memanggil function radian(), setelah sebelumnya meminta
masukan nilai derajat yang akan dikon'ersi.
d. !efinisikan 1 sebagai sebuah konstanta yang bernilai : .+6+5f
a4ab :
a. "isting rogram
#include stdio!h"#define %C* .!:HJf;
float radian(float);
main(){
float derajad,hsl&ad;
printf($%&'*+ : /0'1 :2n&345&' 6 78.8.9 6 5:*2n$);printf($2n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 2n2n$);printf($>+4=/* 04K3&/* 3/'&'4 53&'I'5 3 &'5*'4 2n$);printf($2n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 2n$);
printf($2nasukkan besaran sudut 2t< $);scanf($@f$,Aderajad);
hsl&ad < radian(derajad);
printf($Casil konersi ke dalam radian adalah @f$,hsl&ad);
getch();}
float radian(float derajad)
{ return (derajad L M8!8f) E %C*;}
b. Capture rogram
c. ?nalisis rogram
Laporan Resmi Praktikum Konsep Pemrograman : Fungsi | Rendra Budi Hutama
[2110131036] 13
8/20/2019 Laporan Resmi 13-16 Konsep Pemrograman [Function]
http://slidepdf.com/reader/full/laporan-resmi-13-16-konsep-pemrograman-function 14/29
ntuk mengkon'ersi nilai sudut dari derajad ke radian, yang diperlukan hanyalah fungsi
yang membagi nilai sudut dalam derajat tadi dengan +<2 kemudian dikali dengan nilai &1.
%ilai &1 sendiri karena tidak pernah berubah maka dideklarasikan sebagai konstanta.
&oal 0
a. !efinisikan sebuah fungsi float kon'ersi(suhu, asal, tuj), untuk mengkon'ersikan suhu dari
Celsius ke Fahrenheit, Celsius ke Geamur, Fahrenheit ke Celsius, Fahrenheit ke Geamur,
Geamur ke Celsius, dan Geamur ke Fahrenheit. !imana suhu adalah suhu sumber, asal adalah
satuan a*al suhu yang akan dikon'ersi dan tuj adalah satuan hasil kon'ersi
b. ulislah prototipe fungsi untuk fungsi tersebut.
c. /uat function main() untuk memanggil function kon'ersi(), setelah sebelumnya meminta
masukan nilai suhu, satuan asal dan satuan tujuannya.
a4ab :
a. "isting rogram
#include stdio!h"
float konersi(char,float,char);
main(){
char sumber,tujuan;float suhu/umber,suhuujuan;
printf($%&'*+ : /0'1 H2n&345&' 6 78.8.9 6 5:*2n$);printf($2n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 2n$);printf($>+4=/* +4+ 34=04K3&/* /+C+$);printf($2n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 2n$);
printf($2nasukkan suhu sumber 2t< $);scanf($@f$,Asuhu/umber);fflush(stdin);
printf($2nasukkan satuan asal NGL>L&O2t< $);scanf($@c$,Asumber);fflush(stdin);printf($2nasukkan satuan tujuan NGL>L&O2t< $);scanf($@c$,Atujuan);
suhuujuan < konersi(sumber,suhu/umber,tujuan);
printf($2n@!7f @c < @!7f @c$,suhu/umber,sumber,suhuujuan,tujuan);
getch();}
float konersi(char sumber, float suhu/umber, char tujuan)
{ float
pembanding/umber,pembandingujuan,suhu'Pal/umber,suhu'Palujuan,suhuujuan;
sPitch(sumber){
case QGQ? pembanding/umber < H; suhu'Pal/umber < 8; break;case Q&Q? pembanding/umber < :; suhu'Pal/umber < 8; break;case Q>Q? pembanding/umber < J; suhu'Pal/umber < .7; break;
}
sPitch(tujuan){
case QGQ? pembandingujuan < H; suhu'Palujuan < 8; break;case Q&Q? pembandingujuan < :; suhu'Palujuan < 8; break;
case Q>Q? pembandingujuan < J; suhu'Palujuan < .7; break;}
suhuujuan < (pembandingujuan L pembanding/umber) E (suhu/umber -
suhu'Pal/umber) B suhu'Palujuan ;
return suhuujuan;}
b. Capture rogram
Laporan Resmi Praktikum Konsep Pemrograman : Fungsi | Rendra Budi Hutama
[2110131036] 14
8/20/2019 Laporan Resmi 13-16 Konsep Pemrograman [Function]
http://slidepdf.com/reader/full/laporan-resmi-13-16-konsep-pemrograman-function 15/29
c. ?nalisis rogram
#etiap satuan suhu memiliki karakteristik masing-masing. isalnya pada nilai pembanding,
titik didih dan titik bekunya. ertama kita perlu mendefiniskan masing-masing hal tersebut.
0emudian dengan acuan tersebut kita bisa melakukan proses perhitungan fisika sesuai rumus
yang ada. #alah satu hal yang perlu diperhatikan disini adalah ketika satuan suhu memiliki
titik beku yang bukan nol. aka dalam proses kon'ersi perlu proses penambahan atau
pengurangan agar hasil yang direturn fungsi tersebut benar.
D. Tugas Ta!baan b. ?pa hasil eksekusi dari program berikut :
#include stdio!h"oid ubah(int);main(){
int x;printf($asukkan nilai x ? $);scanf($@d$, Ax);ubah(x);
printf($x < @d2n$, x);}
oid ubah(int y){
y < MH;}
a4ab :
rogram tersebut akan menampilkan nilai A sesuai yang diinputkan user tanpa ada perubahan
*alaupun ada fungsi. &al tersebut terjadi karena pada fungsi tidak memberikan return 'alue
sama sekali.
c. !engan menggunakan fungsi, buatlah program yang melakukan 'alidasi terhadap tanggal,
bulan dan tahun yang diinputkan. rogram juga melakukan pengecekan apakah sebuah tahun
adalah tahun kabisat atau bukan (jika tahun bukan kabisat, bulan yang diinputkan bulan 3
tanggal di atas 3< maka tanggal tidak 'alid).
Contoh:
1nput :tanggal : 3
bulan : 3
tahun : +
utput :tanggal tidak 'alid
a4ab :
a. "isting programHinclude Istdio.hJ
int cekanggal(int,int,int)$
main()
Laporan Resmi Praktikum Konsep Pemrograman : Fungsi | Rendra Budi Hutama
[2110131036] 15
8/20/2019 Laporan Resmi 13-16 Konsep Pemrograman [Function]
http://slidepdf.com/reader/full/laporan-resmi-13-16-konsep-pemrograman-function 16/29
K
int tanggal,bulan,tahun,isLalid$
printf(G?010 +6 #?" ambahanMnGE%!G? N 3++2++2; N +!61/Mn)$
printf(Mn>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Mn)$ printf(E%ECE0 L?"1!?#1 ?%?")$
printf(Mn>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>MnMn)$
printf(asukkan tanggalMt> )$
scanf(Od,Ptanggal)$ printf(asukkan bulan MtMt> )$
scanf(Od,Pbulan)$
printf(asukkan tahun MtMt> )$scanf(Od,Ptahun)$
printf(Mn)$
isLalid > cekanggal(tanggal,bulan,tahun)$
if(isLalid)
printf(anggal tersebut 'alid)$
else printf(anggal tersebut tidak 'alid)$
getch()$
Q
int cekanggal(int d,int m,int y)
K
int jum!,isLalid > 2$
s*itch(m)
K
case + : case : case 5 : case 7 : case < : case +2 : case +3 : jum! > +$ break$
case 6 : case ; : case : case ++ :
jum! > +$ break$
case 3 :if(y O 6 >> 2)
jum! > 3$
else
jum! > 3<$ break$
Q
if(+ I> m PP m J> +3 PP + I> d PP d I> jum!)K
isLalid > +$
Q
return isLalid$Q
b. Capture rogram
;. Kesi!pulan
+. !alam bahasa C, program terdiri dari fungsi-fungsi yang terstruktur.
Laporan Resmi Praktikum Konsep Pemrograman : Fungsi | Rendra Budi Hutama
[2110131036] 16
8/20/2019 Laporan Resmi 13-16 Konsep Pemrograman [Function]
http://slidepdf.com/reader/full/laporan-resmi-13-16-konsep-pemrograman-function 17/29
3. #etiap fungsi dapat memiliki parameter apabila dibutuhkan.. arameter formal adalah 'ariabel yang ada pada daftar parameter dalam definisi fungsi.
6. arameter aktual adalah parameter (tidak selalu berupa 'ariabel) yang dipakai dalam
pemanggilan fungsi.
Laporan Resmi Praktikum Konsep Pemrograman : Fungsi | Rendra Budi Hutama
[2110131036] 17
8/20/2019 Laporan Resmi 13-16 Konsep Pemrograman [Function]
http://slidepdf.com/reader/full/laporan-resmi-13-16-konsep-pemrograman-function 18/29
PRAKTIKUM 10Fungsi : Passing Para!eter b7 <alue 5 b7 Referen2e
A. Dasar Teoriemanggilan dengan nilai merupakan cara yang dipakai untuk seluruh fungsi buatan
yang telah dibahas pada praktikum sebelumnya. ada pemanggilan dengan nilai, nilai dari
parameter aktual akan disalin ke parameter formal. !engan cara ini nilai parameter aktual
tidak bisa dirubah sekalipun nilai parameter formal berubah. ntuk lebih jelasnya lihat pada
fungsi tukar() pada contoh berikut ini.
#include stdio!h"oid tukar (int, int);main(){
int a < MM, b < RR;printf($4ilai sebelum pemanggilan fungsi2n$);printf($a < @d b < @d2n$, a, b);tukar(a,b);printf($2n4ilai setelah pemanggilan fungsi2n$);printf($a < @d b < @d2n$, a, b);}
oid tukar(int x, int y)
{
int S; S < x; x < y; y < S;printf($2n4ilai di akhir fungsi tukar()2n$);printf($x < @d y < @d2n$, x, y);
}
ampak bah*a sekeluarnya dari pemanggilan fungsi tukar(), 'ariabel a dan b (yang
dile*atkan ke fungsi tukar() tidak berubah, *alaupun pada fungsi tukar() telah terjadi
penukaran antara parameter A dan y . engapa hal ini bisa terjadi R #ebab A hanyalah salinan
dari a dan y adalah salinan dari b ("ihat gambar +5.+). ada saat pemanggilan fungsi, maka : A bernilai << (nilai a)
y bernilai 77 (nilai b)
#esudah pernyataan-pernyataan berikut dijalankan, maka :
S > A$ A > y$ y > S$ A akan bernilai 77 dan y bernilai <<.
ambar tersebut menjelaskan bah*a a dan b tidak berubah. Tang berubah hanyalah
parameter A dan y.
emanggilan dengan referensi (call by reference) merupakan upaya untuk mele*atkan
alamat dari suatu 'ariabel ke dalam fungsi. Cara ini dapat dipakai untuk mengubah isi
suatu 'ariabel di luar fungsi dengan pelaksanaan pengubahan dilakukan di dalam fungsi. #ebagai
contoh perhatikan program tukar3.c yang merupakan modifikasi dari tukar+.c. erubahan yang
pertama terletak dalam definisi fungsi, yang kini berupa
Laporan Resmi Praktikum Konsep Pemrograman : Fungsi | Rendra Budi Hutama
[2110131036] 18
8/20/2019 Laporan Resmi 13-16 Konsep Pemrograman [Function]
http://slidepdf.com/reader/full/laporan-resmi-13-16-konsep-pemrograman-function 19/29
oid tukar(int Epx, int Epy)
{
int S;
S < Epx;
Epx < Epy;
Epy < S;
printf($2n4ilai di akhir fungsi tukar()2n$);
printf($x < @d y < @d2n$, Epx, Epy);
}
?dapun perubahan dalam parameter aktualnya menjadi :
tukar(Aa,Ab); LLalamat a dan alamat b
!alam deklarasi parameter
int Epx, int Epy
menyatakan bah*a pA dan py adalah suatu 'ariabel pointer. Tang dimaksudkan sebagai 'ariabel pointer adalah suatu 'ariabel yang menunjuk ke 'ariabel lain. "ebih jelasnya, 'ariabel pointer
berisi alamat dari 'ariabel lain.
?dapun pada pemanggilan fungsi, Pa dan Pb masing-masing berarti alamat a dan alamat
b. !engan pemanggilan seperti ini, hubungan antara 'ariabel pointer pA dan py dengan 'ariabel
a dan b adalah seperti ditunjukkan pada gambar di ba*ah ini !alam hal ini, pA dikatakan
menunjuk 'ariabel a dan py menunjuk 'ariabel b. 1lustrasi penempatan di memory untuk
masing-masing 'ariabel ditunjukkan pada gambar +5.3.
#. Tugas Pen$auluan
%&oal 1'
Algorit!a !en2ari nilai bilangan terbesar $ari $ua bilangan.
!eklarasikan bil+, bil3, maA dan fungi carierbesar() sebagai bilangan bulat.
5. asukkan bilangan pertama(bil1);. asukkan bilangan kedua(bil*)
7. anggil fungsi carierbesar() dengan parameter bil1 dan bil*. #impan hasil pemanggilanfungsi di maA.
<. ampilkan nilai maA.
. #elesai.
Algorit!a fungsi !enu()
erima nilai bil1 dan bil* sebagai bilangan bulat pada input1 dan input*
Laporan Resmi Praktikum Konsep Pemrograman : Fungsi | Rendra Budi Hutama
[2110131036] 19
8/20/2019 Laporan Resmi 13-16 Konsep Pemrograman [Function]
http://slidepdf.com/reader/full/laporan-resmi-13-16-konsep-pemrograman-function 20/29
+. 4ika input1 lebih kecil daripada input* maka kembalikan nilai input* jika tidak
kembalikan nilai input+
%&oal *'
!eklarasikan fungsi per!utasi, ko!binasi dan faktorial sebagai fungsi dengan return value
bilangan bulat.
!eklarasikan n, r, hslermutasi,hsl0ombinasi sebagai bilangan bulat.
+. asukkan nilai n
3. asukkan nilai r
. anggil fungsi permutasi() dengan parameter n dan r. #impan hasil pemanggilan fungsi di
slPer!utasi
6. anggil fungsi kombinasi() dengan parameter n dan r. #impan hasil pemanggilan fungsi di
slKo!binasi
5. ampilkan slPer!utasi ke layar ;. ampilkan slKo!binasi ke layar
Algorit!a fungsi faktorial()
erima nilai bil sebagai bilangan pecahan. !eklarasikan nilai i dan jum. 1nisiasi nilai jum dengan
angka +.
5. 4ika i lebih besar daripada 2 maka lanjutkan langkah selanjutnya, bila tidak langsung ke
langkah 6;. &itung nilai jum dengan mengalikan jum dengan i dan simpan hasilnya di jum kembali
7. 0urangi nilai i dengan + dan simpan hasilnya di i kembali. #elanjutnya kembali ke langkah +
<. #elesai
Algorit!a fungsi per!utasi()
erima nilai bil1 dan bil* sebagai bilangan bulat pada fnn dan fnr
+. &itung nilai permutasi yaitu dengan rumus faktorial fnn dibagi faktorial dari fnn =fnr.
unakan fungsi faktorial untuk mencari nilai faktorial tersebut.
3. 0embalikan hasil perhitungan ke fungsi pemanggil
Algorit!a fungsi ko!binasi()
erima nilai bil1 dan bil* sebagai bilangan bulat pada fnn dan fnr
3 &itung nilai kombinasi yaitu dengan rumus faktorial fnn dibagi faktorial dari fnn
dikalikan faktorial fnn =fnr . unakan fungsi faktorial untuk mencari nilai factorial
tersebut.
3. 0embalikan hasil perhitungan ke fungsi pemanggil
%&oal 3'
Ti$ak 4a+ib $iker+akan
%&oal ,'Algorit!a !en2ari pan+ang sisi # !enggunakan fungsi
!eklarasikan &1 dengan .+6, fungsi cari/C() dan radian() sebagai bilangan pecahan float.
!eklarasikan sudut/?C,sisi?/ dan sisi/C sebagai bilangan pecahan float.
+. asukkan besaran sudut /?C
3. asukkan panjang sisi ?/
Laporan Resmi Praktikum Konsep Pemrograman : Fungsi | Rendra Budi Hutama
[2110131036] 20
8/20/2019 Laporan Resmi 13-16 Konsep Pemrograman [Function]
http://slidepdf.com/reader/full/laporan-resmi-13-16-konsep-pemrograman-function 21/29
. anggil fungsi cari/C() dengan parameter bil1 dan bil*. #impan hasil pemanggilan fungsi di
maA.
6. ampilkan panjang sisi /C.
Algorit!a fungsi 2ari#()
+. &itung /C dengan cara mengalikan tangen /?C dengan sisi ?/, namun sudut /?C harus
diubah ke radian dulu dengan memanggil fungsi radian()
3. 0embalikan nilai /C ke fungsi pemanggil
Algorit!a fungsi ra$ian()
0. &itung nilai sudut dalam radian dengan membagi sudut dengan +<2 lalu dikalikan dengan
&1
. 0embalikan nilai sudut dalam radian ke fungsi pemanggil
. Per2obaan
&oal 1
a. !efinisikanlah function untuk menentukan bilangan terbesar dari 3 bilangan yang
diinputkan di main(). Function mempunyai parameter berupa 3 buah bilangan yangakan dibandingkan dan memberikan return 'alue berupa bilangan yang terbesar.
#ertakan pula prototype function tsb.
b. ulislah prototipe fungsi untuk fungsi tersebut.
c. /uat function main() untuk memanggil function kon'ersi(), setelah sebelumnya meminta
masukan nilai suhu, satuan asal dan satuan tujuannya.
a4ab :
a. "isting rogram
#include stdio!h"
int carierbesar(int,int);main(){
int bil,bil7,max;
printf($%&'*+ H /0'1 2n&345&' 6 78.8.9 6 5:*2n$);printf($2n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 2n$);printf($encari ilangan erbesar dari 7 ilangan$);printf($2n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 2n$);
printf($2nasukkan bilangan pertama 2t < $);scanf($@d$, Abil);
printf($2nasukkan bilangan kedua 2t < $);
scanf($@d$, Abil7);
max < carierbesar(bil,bil7);
printf($2nilangan @d adalah bilangan yang lebih besar$,max);}
int carierbesar(int input,int input7){
if(input input7)return input7;
elsereturn input;
}
b. Capture rogram
Laporan Resmi Praktikum Konsep Pemrograman : Fungsi | Rendra Budi Hutama
[2110131036] 21
8/20/2019 Laporan Resmi 13-16 Konsep Pemrograman [Function]
http://slidepdf.com/reader/full/laporan-resmi-13-16-konsep-pemrograman-function 22/29
c. ?nalisis rogramada program ini, parameter dile*atkan ke fungsi dengan pass parameter by value sehingga
perubahan pada 'ariabel parameter formal tidak berpengaruh terhadap 'ariable di fungsi
pemanggil. Fungsi menerima 3 buah input yang kemudian masing-masing dibandingkan
mana yang terbesar. #lanjutnya nilai yang lebih besar akan direturn atau dikembalikan ke
fungsi pemanggil.
&oal *
/uatlah suatu fungsi permutasi() dan kombinasi() untuk menghitung permutasi dan
kombinasi dari suatu pasangan bilangan, yang dinyatakan dengan formula:
a4ab :
a. "isting rogram#include stdio!h"
int permutasi(int,int);int kombinasi(int, int);int faktorial(int);
main(){
int n,r,hsl%ermutasi,hslombinasi;
printf($%&'*+ H /0'1 72n&345&' 6 78.8.9 6 5:*2n$);printf($2n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 2n$);printf($encari Casil %ermutasi dan ombinasi$);
printf($2n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 2n$);
printf($2nasukkan n 2t < $);scanf($@d$, An);printf($2nasukkan r 2t < $);scanf($@d$, Ar);
hsl%ermutasi < permutasi(n,r);hslombinasi < kombinasi(n,r);
printf($2nCasil permutasi dari @d dan @d adalah @d$,n,r,hsl%ermutasi);printf($2nCasil kombinasi dari @d dan @d adalah @d$,n,r,hslombinasi);
}
int faktorial(int bil){
int i,jum < ;
for(i<bil;i"8;i--)jum < jum E i;
return jum;}
int permutasi(int fnFn,int fnFr)
Laporan Resmi Praktikum Konsep Pemrograman : Fungsi | Rendra Budi Hutama
[2110131036] 22
8/20/2019 Laporan Resmi 13-16 Konsep Pemrograman [Function]
http://slidepdf.com/reader/full/laporan-resmi-13-16-konsep-pemrograman-function 23/29
{return faktorial(fnFn) L faktorial(fnFn-fnFr);
}
int kombinasi(int fnFn,int fnFr){
return faktorial(fnFn) L ( faktorial(fnFr) E faktorial(fnFn-fnFr) );}
b. Capture rogram
c. ?nalisis rogram
ada program ini terdapat beberapa fungsi. Fungsi yang sering dipanggil adalah fungsi
faktorial karena fungsi tersebut digunakan dalam setiap perhitungan permutasi dan
kombinasi. !isini tampak jelas bah*asannya sebuah fungsi bisa dipanggil oleh fungsi buatan
user lainnya tidak hanya bisa dipanggil di fungsi main().
&oal 3
/uatlah sebuah fungsi untuk mengubah dua bilangan masukan, masing-masing dinaikkan
dengan 3. asukan dilakukan di main(). #elanjutnya tampilkan hasil akhir bilangan
setelah dirubah di main(). unakan pass by reference U
a4ab :
a. "isting rogram
#include stdio!h"
int naikkan(int,int);main(){
int bil,bil7,max;
printf($%&'*+ H /0'1 .2n&345&' 6 78.8.9 6 5:*2n$);printf($2n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 2n2n$);printf($%ass by &eference untuk enaikkan ilangan2n$);printf($2n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 2n$);
printf($2nasukkan bilangan pertama 2t < $);scanf($@d$, Abil);printf($2nasukkan bilangan kedua 2t < $);scanf($@d$, Abil7);
printf($/ebelum menjalankan fungsi,2nilangan pertama < @d dan bilangan kedua
< @d$,bil,bil7);
naikkan(Abil,Abil7);
printf($2n2n/etelah menjalankan fungsi,2nilangan pertama < @d dan bilangankedua < @d$,bil,bil7);}
int naikkan(int Einput,int Einput7){
EinputB< 7;Einput7B<7;
}
Laporan Resmi Praktikum Konsep Pemrograman : Fungsi | Rendra Budi Hutama
[2110131036] 23
8/20/2019 Laporan Resmi 13-16 Konsep Pemrograman [Function]
http://slidepdf.com/reader/full/laporan-resmi-13-16-konsep-pemrograman-function 24/29
b. Capture rogram
c. ?nalisis rogram
Fungsi pada program ini menggunakan pass by reference. !engan cara tersebut maka pada
parameter aktual yang dikirimkan adalah alamat dari 'ariable tersebut yaitu dengan cara
menambahkan tanda P sebelum nama 'ariable. erbedaannya dengan pass by value adalah
perubahan pada 'ariable di fungsi akan mempengaruhi nilai pada fungsi pemanggil.
&oal ,
erhatikan gambar segitiga ?/C di samping ini, dengan sudut
?/C adalah siku-siku. /uatlah sebuah program yang menerima input berupa :
besar sudut /?C (dalam besaran derajat), dan panjang sisi ?/ (dalam
meter). rogram tersebut bisa menampilkan output berupa panjang
sisi /C (dalam meter).
a4ab :
a. "isting rogram
#include stdio!h"#include math!h"
#define %C* .!:7MHRf;
float cariG(float,float);float radian(float);
main(){
float sudut'G,sisi',sisiG;
printf($%&'*+ H /0'1 :2n&345&' 6 78.8.9 6 5:*2n$);printf($2n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 2n2n$);printf($enghitung sisi G dari segitiga$);printf($2n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 2n$);
printf($2nasukkan besaran sudut 'G (derajat) 2t < $);scanf($@f$, Asudut'G);
printf($2nasukkan panjang sisi ' (meter) 2t < $);scanf($@f$, Asisi');
sisiG < cariG(sudut'G,sisi');printf($2n%anjang sisi G adalah @!7f meter$,sisiG);
getch();}
float cariG(float fnFsudut'G,float fnFsisi'){
Laporan Resmi Praktikum Konsep Pemrograman : Fungsi | Rendra Budi Hutama
[2110131036] 24
8/20/2019 Laporan Resmi 13-16 Konsep Pemrograman [Function]
http://slidepdf.com/reader/full/laporan-resmi-13-16-konsep-pemrograman-function 25/29
return tan(radian(fnFsudut'G)) E fnFsisi';}
float radian(float derajat){
return (derajat L M8!8f) E %C*;}
b. Capture rogram
c. ?nalisis rogram?gar panjang sisi /C dapat dihitung maka hal pertama yang harus kita lakukan adalah
mengkon'ersi nilai sudut yang berupa derajad ke radian terlebih dahulu denan menggunakan
fungsi kon'ersi derajad ke radian(radian()). #etelah dikon'ersi baru bisa dihitung panjang
/C dengan memanggil fungsi cari/C().
D. Tugas Ta!baan
4elaskan perbedaan antara pass by 'alue dengan pass by reference U
/erikan contoh function call dan definisi fungsinya U
a4ab :
ada pass by 'alue, nilai dari parameter aktual akan disalin ke parameter formal. !engan
cara ini nilai parameter aktual tidak bisa dirubah sekalipun nilai parameter formal berubah.
#edangkan pada pass by reference merupakan upaya untuk mele*atkan alamat dari suatu
'ariabel ke dalam fungsi. Cara ini dapat dipakai untuk mengubah isi suatu 'ariabel di luar
fungsi dengan pelaksanaan pengubahan dilakukan di dalam fungsi.
erbedaan Function call !efinisi fungsi
ass by 'alue kalikan(a,b); int kalikan(int x, int y){
LLpernyataan}
ass by reference kalikan(Aa,Ab); int kalikan(int Ex,int Ey){ LLpernyataan}
;. Kesi!pulan+. !alam bahasa C, program terdiri dari fungsi-fungsi yang terstruktur.
3. #etiap fungsi dapat memiliki parameter apabila dibutuhkan.. arameter dapat dikirim pada fungsi dengan pass by value dan pass by reference.
ass by 'alue hanya mengirimkan nilai dari 'ariable dikirimkan.
ass by reference mengirim alamat dari 'ariable yang dikirimkan.
Laporan Resmi Praktikum Konsep Pemrograman : Fungsi | Rendra Budi Hutama
[2110131036] 25
8/20/2019 Laporan Resmi 13-16 Konsep Pemrograman [Function]
http://slidepdf.com/reader/full/laporan-resmi-13-16-konsep-pemrograman-function 26/29
PRAKTIKUM 1Fungsi : Penggolongan <ariabel 5Pe!rogra!an Terstruktur
A. Dasar Teori
#uatu 'ariabel, di samping dapat digolongkan berdasarkan jenis@tipe data juga dapatdiklasifikasikan berdasarkan kelas penyimpanan (storage class). enggolongan berdasarkan
kelas penyimpanan berupa : 'ariabel lokal, 'ariabel eksternal, 'ariabel statis dan 'ariabel
register.
<ariabel >okal
• Lariabel lokal adalah 'ariabel yang dideklarasikan dalam fungsi, dengan sifat :
• #ecara otomatis diciptakan ketika fungsi dipanggil dan akan sirna (lenyap) ketika
eksekusi terhadap fungsi berakhir.
• &anya dikenal oleh fungsi tempat 'ariabel tersebut dideklarasikan
• idak ada inisialisasi secara otomatis (saat 'ariabel diciptakan, nilainya tak menentu).
<ariabel ;ksternal
Lariabel eksternal merupakan 'ariabel yang dideklarasikan di luar fungsi, dengan sifat :
• dapat diakses oleh semua fungsi
• kalau tak diberi nilai, secara otomatis diinisialisasi dengan nilai sama dengan nol.
<ariabel &tatis
Lariabel statis dapat berupa 'ariabel internal (didefinisikan di dalam fungsi) maupun
'ariabel eksternal. #ifat 'ariabel ini :
• 0alau 'ariabel statis bersifat internal, maka 'ariabel hanya dikenal oleh fungsi tempat 'ariabeldideklarasikan
• 0alau 'ariabel statis bersifat eksternal, maka 'ariabel dapat dipergunakan oleh semua fungsi
yang terletak pada file yang sama, tempat 'ariabel statis dideklarasikan
• /erbeda dengan 'ariabel lokal, 'ariabel statis tidak akan hilang sekeluarnya dari fungsi
(nilai pada 'ariabel akan tetap diingat).
• 1nisialisasi akan dilakukan hanya sekali, yaitu saat fungsi dipanggil yang pertama kali. 0alau
tak ada inisialisasi oleh pemrogram secara otomatis akan diberi nilai a*al nol
<ariabel Register
Lariabel register adalah 'ariabel yang nilainya disimpan dalam register dan bukan dalammemori G?. Lariabel yang seperti ini hanya bisa diterapkan pada 'ariabel yang lokal atau
parameter formal, yang bertipe char atau int.
Pengenalan Konsep Pe!rogra!an Terstruktur
Fungsi sangat bermanfaat untuk membuat program yang terstruktur.
#uatu program yang terstruktur dikembangkan dengan menggunakan
8top-do*n design (rancang atas ba*ah). ada C suatu program disusun dari
sejumlah fungsi dengan tugas tertentu. #elanjutnya masing masing fungsi
dipecah -pecah lagi menjadi fungsi yang lebih kecil.
embuatan program dengan cara ini akan memudahkandalam pencarian kesalahan ataupun dalam hal pengembangan dan tentu saja
mudah dipahami@ dipelajari.
#. Per2obaan+. ?dakah sesuatu yang salah pada sebuah fungsi yang tidak mempunyai return 'alue R
4elaskan analisismu tentang sebuah fungsi yang tidak memiliki return 'alueU
Laporan Resmi Praktikum Konsep Pemrograman : Fungsi | Rendra Budi Hutama
[2110131036] 26
8/20/2019 Laporan Resmi 13-16 Konsep Pemrograman [Function]
http://slidepdf.com/reader/full/laporan-resmi-13-16-konsep-pemrograman-function 27/29
a. #ource CodeHinclude Istdio.hJ
oid tanpa&eturn(int);
main(){
oid penampung;
printf($%&'*+ 9 /0'1 2n&345&' 6 78.8.9 6 5:*2n$);printf($2n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 2n$);
printf($'nalisis >ungsi tanpa &eturn$);printf($2n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 2n2n$);
tanpa&eturn(7H);
}
oid tanpa&eturn(int angka){
printf($>ungsi ini tidak memiliki return alue!$);}
b. Capture rogram
c. ?nalisis rogramada dasarnya tidak ada yang salah pada sebuah fungsi yang tidak memiliki return 'alue atau
nilai kembalian. 0arena di bahasa C sendiri, sudah disediakan tipe data 'oid yang digunakan
untuk mendeklarasikan fungsi yang tidak memiliki return 'alue.
%amun hasil fungsi yang tidak memiliki return 'alue tersebut tentu saja tidak bisa diassign ke
'ariable lain. &al tersebut disebabkan beberapa hal, pertama tentu saja karena fungsi tersebut
tidak memiliki return 'alue dan yang kedua kita ketahui sendiri bah*asannya 'ariable dengan
tipe data 'oid tidak ada, sehinga tidak ada 'ariable yang bisa menampung hasil yang 'oid tadi.
#eperti pada gambar di ba*ah ini, tidak bisa sebuah 'ariable bertipe 'oid.
#ehingga tidak bisa mengassign ke hasil fungsi ke 'ariable
?kibatnya agar proram tetap berjalan, maka tidak diperlukan lagi sebuah 'ariable penamung,
dan dalam fungsi tersebut langsung melakukan tugasnya seperti printf saja tanpa memberikan
nilai kembalian
3. ?pakah yang terjadi jika sebuah fungsi memberikan return 'alue tetapi tidak diassign
ke 'ariabel apapun R
a. #ource Code#include stdio!h"
int tambahkan(int, int);
main()
Laporan Resmi Praktikum Konsep Pemrograman : Fungsi | Rendra Budi Hutama
[2110131036] 27
8/20/2019 Laporan Resmi 13-16 Konsep Pemrograman [Function]
http://slidepdf.com/reader/full/laporan-resmi-13-16-konsep-pemrograman-function 28/29
{int bil,bil7;
printf($%&'*+ 9 /0'1 72n&345&' 6 78.8.9 6 5:*2n$);printf($2n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 2n$);printf($'nalisis >ungsi dengan &eturn tanpa %enampung$);printf($2n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 2n2n$);
printf($asukkan bilangan 2t<$);scanf($@d$,Abil);printf($asukkan bilangan 72t<$);
scanf($@d$,Abil7);
tambahkan(bil,bil7); LLidak diassign ke ariabel apapun}
int tambahkan(int angka, int angka7){
return angka B angka7;}
b. Capture rogram
c. ?nalisis rogram#ebenarnya, jika sebuah fungsi memberikan return 'alue namun tidak diassign ke 'ariable
manapun tidak akan terjadi error maupun *arning sedikitpun, namun yang terjadi adalah
hasil return 'alue tersebut tidak bisa diperoleh atau diolah kembali di fungsi pemanggil
sehingga pemanggilan fungsi tersebut bisa kita katakana sia-sia. &asil dari fungsi hanya
berlaku di fungsi tersebut tanpa berpengaruh ke bagian program yang lainnya.
. ?pakah yang terjadi jika sebuah fungsi diassign ke sebuah 'ariabel padahal fungsi
tersebut tidak memiliki return 'alueR
a. #ource Code#include stdio!h"
int tambahkan(int, int);
main(){
int bil,bil7,hasil;
printf($%&'*+ 9 /0'1 .2n&345&' 6 78.8.9 6 5:*2n$);printf($2n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 2n$);printf($'nalisis >ungsi tanpa &eturn tapi 5itampung$);printf($2n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 2n2n$);
printf($asukkan bilangan 2t<$);scanf($@d$,Abil);printf($asukkan bilangan 72t<$);scanf($@d$,Abil7);
hasil < tambahkan(bil,bil7); LLidak memiliki return alue tapi diassign
printf($Casil penjumlahan 2t<@d$,hasil);
getch();}
int tambahkan(int angka, int angka7){
int jum < angka B angka7;int lainnya < 7.;
}
b. Capture rogram
Laporan Resmi Praktikum Konsep Pemrograman : Fungsi | Rendra Budi Hutama
[2110131036] 28
8/20/2019 Laporan Resmi 13-16 Konsep Pemrograman [Function]
http://slidepdf.com/reader/full/laporan-resmi-13-16-konsep-pemrograman-function 29/29
c. ?nalisis rogram
Fungsi yang tidak memiliki return 'alue seharusnya bertipe 'oid seperti pada soal nomor
+, sehingga apabila dijalankan fungsi yang tanpa return 'alue namun harus diassign pasti
akan error. ?kan tetapi pada percobaan kali ini fungsi yang dicoba adalah bertipe integer.
?nehnya, pada percobaan menggunakan tipe data int(integer) pada fungsi, *alaupun tanpa
return 'alue, program tetap menjalankan fungsi terebut dangan hasil @ return 'alue otomatis
yaitu hasil proses terakhir di fungsi yang melibatkan parameter formal. &al tersebut
ditunjukkan pada capture program diatas.
. Kesi!pulan
+. Lariabel dapat digolongkan berdasarkan kelas penyimpanan yaitu berupa : 'ariabel lokal,
'ariabel eksternal, 'ariabel statis dan 'ariabel register.
3. asing-masing kelas penyimpanan memiliki karakteristik sendiri.
a. Lariabel "okal : &anya dapat diakses dalam fungsi tempat dia dideklarasikan.
b. Lariabel Eksternal : !apat diakses di fungsi mana saja di dalam program.c. Lariabel #tatis : %ilainya disimpan dan dapat diakses ketika fungsi dijalankan lagi
d. Lariabel Gegister : Lariabel yang nilainya disimpan dalam register bukan di G?
. ada C suatu program disusun dari sejumlah fungsi dengan tugas tertentu. #elanjutnya masingmasing fungsi dipecah -pecah lagi menjadi fungsi yang lebih kecil.