Anda di halaman 1dari 8

Praktikum Dasar Pemrograman

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

Batas Akhir : Akhir Sesi


Tempat Penyerahan : Ecourse
Tujuan : 1. Mahasiswa mampu membuat prototipe fungsi, mendefinisikan fungsi dan
menggunakan fungsi
2. Mahasiswa memahami perbedaan pemanggilan fungsi dengan call by
value dan call by reference.
Petunjuk Praktikum : Buatlah sebuah folder pada direktori kerja anda dengan nama
PrakDaspro_09_2, dan simpanlah semua pekerjaan anda pada praktikum
kali ini pada folder tersebut.

Daspro/Mg09/41TRPL_Sesi2 Hal. 1 dari 8


Konsep Dasar Fungsi
Sebuah persoalan kompleks dapat dipecah menjadi persoalan-persoalan yang lebih kecil dan
sederhana. Persoalan-persoalan yang kecil dan sederhana tersebut kemudian diselesaikan dan
ditulis solusinya dalam bentuk fungsi (function). Fungsi-fungsi tersebut kemudian dirangkai
menjadi solusi bagi persoalan awal yang kompleks. Jika dipandang dari sudut pandang ini, fungsi
dapat didefinisikan sebagai penyusun sebuah program. Perlu diingat bahwa program yang ditulis
sejatinya adalah solusi terhadap sebuah persoalan.

Gambar 1. Struktur dasar fungsi

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.

Daspro/Mg09/41TRPL_Sesi2 Hal. 2 dari 8


Function Parameter
Sebuah fungsi dapat didefiniskan untuk menerima masukan berupa parameter ketika dipanggil
oleh caller. Sebuah fungsi dapat menerima satu atau lebih parameter dan setiap parameter
diasosiasikan dengan sebuah tipe data. Gambar 2 adalah struktur pendefinisian fungsi disertai
dengan parameter.

Gambar 2. Struktur Dasar Fungsi dengan Parameter

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.

Daspro/Mg09/41TRPL_Sesi2 Hal. 3 dari 8


Gambar 3. contoh call by value dan call by reference

Langkah-langkah praktikum

Program 1: Prototipe, pendefinisian dan pemanggilan fungsi

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

Daspro/Mg09/41TRPL_Sesi2 Hal. 4 dari 8


b. Baris ke-5 merupakan deklarasi atau prototipe fungsi. Penjelasan prototipe fungsi diberikan sebagai
berikut:
- Tipe kembalian (return type) : float
- Nama fungsi : eksponen
- Argumen : int basis, int pangkat
c. Baris ke-25 sampai baris ke-32 adalah realisasi prototipe fungsi yang ada pada baris ke-5.
d. Baris ke-17 merupakan pemanggilan fungsi dengan pernyataan:

Variabel penampung return value = eksponen (basis, pangkat)

Daspro/Mg09/41TRPL_Sesi2 Hal. 5 dari 8


Program 2: Call by Value

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.

b. Jalankan program hingga keluaran akan tampak seperti ini:

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

Daspro/Mg09/41TRPL_Sesi2 Hal. 6 dari 8


Program 3: Call by Reference
a. Program pada halaman selanjutnya mengillustrasikan pemanggilan fungsi dengan referensi (call by
reference). Jangan khawatir jika anda sedikit bingung dengan program tersebut, sebab pada
dasarnya anda harus terlebih dahulu memahami pointer dalam pemrograman C. Tujuan program
ini hanya memberikan pemahaman bahwa selain teknik pemanggilan fungsi dengan call by value
ada cara lain, yakni call by reference. Pada call by reference atau call by ref, nilai yang dikirimkan
ke fungsi adalah alamat penyimpanan variabel yang digunakan sebagai argumen pada RAM
(Random Access Memory). Buat program tersebut dengan nama file call_by_ref_XXX.c.

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

Daspro/Mg09/41TRPL_Sesi2 Hal. 7 dari 8


variabel, bukan salinan dari nilai variabel seperti yang ada pada pemanggilan by value. Jika ada
operasi yang memanipulasi nilai pointer pada fungsi yang dipanggil, akan mengubah nilai variabel
yang digunakan sebagai argumen. Inilah esensi dari pemanggilan fungsi dengan reference (call by
reference).

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.

.:: Selamat Mencoba ::.

Daspro/Mg09/41TRPL_Sesi2 Hal. 8 dari 8

Anda mungkin juga menyukai