Minggu : 09 sesi 2
Topik : Fungsi
Aktifitas : coding
Waktu pengerjaan : 110 menit
Setoran PrakDaspro_09_2_DY_NIM.zip, yang terdiri dari file:
1. Fungsi_eksponensiasi_XXX.c
2. Call_by_vale_XXX.c
3. Call_by_ref_XXX.c
4. MyArea_XXX.c
Struktur dari sebuah fungsi dapat dilihat pada Gambar 1. Secara umum, sebuah fungsi terdiri atas
empat bagian, yaitu:
1. Return type. Tipe dari data yang dikembalikan atau dihasilkan oleh sebuah fungsi. Return
type dapat berupa tipe data primitif atau komposit. Fungsi yang tidak mengembalikan nilai
apapun diberi return type void.
2. Function name. Setiap fungsi yang dideklarasikan harus memiliki nama(identifier) yang
unik. Dalam penamaan, sebaiknya menyiratkan suatu proses yang dilakukan oleh fungsi
tersebut dan menggunakan kata atau frasa yang perilaku aktif. Sebagai contoh sum, atau
luas_persegi.
3. Parameter. Sebuah fungsi dapat menerima satu atau lebih parameter ketika fungsi tersebut
dipanggil. Fungsi yang tidak menerima parameter apapun, sebaiknya diberi keyword void
pada parameter section-nya.
4. Function body. Function body berisi serangkaian statement yang akan dilakukan oleh
fungsi tersebut.
Sebelum digunakan, sebuah fungsi harus terlebih dahulu didefinisikan atau setidaknya
diperkenalkan dalam bentuk function prototype.
Call by Value
Ketika sebuah argumen disertakan dalam sebuah pemanggilan fungsi, nilai dari argumen tersebut
akan diduplikasi dan disimpan oleh parameter sesuai dengan pemetaannya. Konsep ini disebut
passing by value atau call by value (pemanggilan fungsi dengan menyertakan nilai sebagai
argumen).
Call by Reference
Konsep referensial lain yang dapat digunakan adalah passing by reference atau call by reference.
Pada konsep ini, function caller tidak mengirimkan nilai dari argumen, namun alamat memori dari
argumen. Untuk mendapatkan memori dari sebuah argumen digunakan ampersand operator (&).
Di sisi parameter, untuk menyimpan alamat memori digunakan pointer operator (*). Gambar 3
adalah contoh dari call by value dan call by reference.
Langkah-langkah praktikum
a. Kode di bawah ini memberikan illustrasi tentang cara membuat prototipe, pendefinisian, dan
pemanggilan fungsi. Buatlah kode program dalam teks editor dan beri nama
fungsi_eksponensiasi_XXX.c
a. Program di bawah ini menggambarkan pemanggilan fungsi dengan nilai (call by value). Pada call
by value, nilai yang dikirimkan ke fungsi adalah salinan dari nilai variabel yang digunakan sebagai
argumen dalam pernyataan pemanggilan fungsi. Buatlah program tersebut dengan nama file:
call_by_value_XXX.c.
c. Pemanggilan fungsi dilakukan oleh pernyataan pada baris ke-11. Variabel x dan y adalah local
variable dari fungsi exchange(). Kedua variabel tersebut hanya dikenali di dalam fungsi
exchange(). Ketika pernyataan pada baris ke-11 dieksekusi, salinan dari nilai variabel a dan b yang
digunakan dalam argumen dikirimkan ke fungsi void exchange(int x, int y). Nilai a
ditampung oleh variabel x dan nilai b ditampung oleh variabel y. Sehingga pernyataan-pernyataan
yang dieksekusi pada fungsi exchange(int x, int y) tidak mempengaruhi nilai a dan b pada
fungsi main(). Inilah esensi dari pemanggilan fungsi dengan nilai (call by value).
b. Kompilasi program. Keluaran program akan terlihat seperti gambar di bawah ini.
Terlihat bahwa setelah eksekusi pernyataan dalam fungsi exchange (int *x, int *y), nilai dari
variabel a dan b pada fungsi main() berubah.
c. Prototipe fungsi pada baris ke-4 berbeda dengan prototipe fungsi pada Program 2 (call by value).
Argumen yang digunakan pada pemanggilan fungsi dengan call by reference adalah pointer atau
referensi atau penunjuk ke alamat suatu variabel pada RAM. Pada program di atas pointer ke
variabel x dan y adalah *x dan *y.
d. Pemanggilan fungsi dilakukan pada baris ke-13. Simbol ampersand (&) dibaca: address of. Dengan
demikian, nilai yang dikirimkan dalam pemanggilan fungsi by reference adalah alamat dari
Program 4: Tugas
Buatlah program dengan nama MyArea_XXX.c.Program tersebut menghitung luas daerah bidang datar
tergantung pilihan dari pengguna. Program menggunakan beberapa fungsi, dengan spesifikasi sebagai
berikut:
a. Fungsi main (): Menampilkan pilihan menu ke layar dengan tampilan sebagai berikut:
Pengguna memilih dengan memasukkan angka 1, 2 atau 3. Fungsi main akan memanggil fungsi
sesuai dengan pilihan pengguna. Misalkan, pengguna memilih angka 1, maka fungsi main akan
memanggil fungsi segiempat (int p, int l) dan meminta user memasukkan dua bilangan
yang menyatakan panjang dan lebar. Jika user memilih angka selain 1, 2 dan 3, maka akan
muncul informasi “masukan anda salah” dan program berakhir.
b. Fungsi segiempat (int p, int l): Menerima input dua buah bilangan yang menyatakan
panjang dan lebar dari sebuah segi empat dan mengambalikan sebuah bilangan luas dari segi
empat tersebut.
c. Fungsi lingkaran(int r) : Menerima input satu buah bilangan yang menyatakan jari-jari
lingkaran dan mengambalikan sebuah bilangan luas dari lingkaran tersebut.
d. Fungsi segitiga(int a, int t) : Menerima input dua buah bilangan yang menyatakan
panjang alas dan tinggi dari sebuah segi tiga dan mengambalikan sebuah bilangan luas dari segi
tiga tersebut.