28.06.2015 Views

SUB PROGRAM (FUNGSI)

SUB PROGRAM (FUNGSI)

SUB PROGRAM (FUNGSI)

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

MATERI V<br />

<strong>SUB</strong> <strong>PROGRAM</strong> (<strong>FUNGSI</strong>)<br />

Materi Praktikum Pemograman Bahasa C++ dengan menggunakan Fungsi<br />

Durasi 180 menit<br />

TIU/TIK<br />

1. Pendahuluan<br />

2. Pemahaman Prosedur dan Fungsi<br />

3. Parameter Fungsi<br />

4. Fungsi Rekursif<br />

5. Fungsi Call By<br />

6. Fungsi Overloading<br />

Referensi<br />

1. Diktat dan Literatur<br />

2. Schildt, C++: The Complete Reference Third Edition, McGraw-Hill, 1998<br />

MTSI04


I. PENDAHULUAN<br />

Pada awal perkenalan bahasa C++ telah dibahas singkat seputar algoritma. Dasarnya, algoritma adalah suatu pemetaan<br />

yang membantu kita dalam merancang program. Hal ini dikarenakan sifat dari program adalah suatu proses tertentu<br />

yang memiliki susunan instruksi yang pasti. Masalah yang seringkali timbul adalah dalam suatu program dibutuhkan<br />

proses yang harus terjadi berulang-ulang. Mungkin proses perulangan menggunakan for atau while dapat mengatasi<br />

masalah ini. Namun kita akan membutuhkan hal lain apabila proses yang berulang itu adalah suatu program yang<br />

skalanya dapat dikatakan relatif kompleks.<br />

Fungsi/Prosedur merupakan suatu bagian dari program yang dimaksudkan untuk mengerjakan suatu tugas/perintah<br />

tertentu dan letaknya terpisah dari program utama. Dalam kesempatan ini kita akan membahas dengan fokus<br />

terhadap dua hal, yaitu prosedur dan fungsi. Pada dasarnya prosedur merupakan fungsi juga, namun prosedur tidak<br />

memberikan nilai balik seperti halnya fungsi.<br />

Format dari penulisan fungsi ini adalah :<br />

tipe_data namaFungsi [daftar_parameter]<br />

{<br />

}<br />

…instruksi-instruksi dalam fungsi…<br />

return (nilai_balik_fungsi);<br />

Selain format penulisan yang perlu diketahui, dalam pembentukan program yang melibatkan banyak fungsi kita perlu<br />

memahami struktur umum yang terjadi dalam program tersebut, yaitu :<br />

a. Prototype (prosedur / fungsi pendukung)<br />

tipe_data namaFungsi [daftar_parameter]<br />

Pada bagian ini, prosedur/fungsi pendukung yang akan digunakan pada fungsi utama dideklarasikan. Karena sifatnya<br />

yang berupa prototype, kita hanya perlu mendeklarasikan tipe data, nama fungsi, dan daftar parameter.<br />

b. Prosedur / Fungsi Utama<br />

main ()<br />

{<br />

}<br />

…instruksi-instruksi dalam fungsi…<br />

…prosedur/fungsi pendukung digunakan…<br />

return [nilai_balik_fungsi];<br />

Bagian ini adalah dimana fungsi utama dijalankan. Ciri khas yang membedakan fungsi utama ini dengan yang lainnya<br />

adalah fungsi ini dinamakan “main”. Hal ini menunjukkan bahwa instruksi-instruksi yang berada di dalam fungsi ini<br />

adalah instruksi yang akan dijalankan pertama kali. Instruksi-instruksi pada fungsi lain hanyalah bersifat pendukung.<br />

Bagian


c. Prosedur / Fungsi Pendukung<br />

tipe_data namaFungsi [daftar_parameter]<br />

{<br />

}<br />

…instruksi-instruksi dalam fungsi…<br />

return [nilai_balik_fungsi];<br />

Bagian ketiga ini adalah tempat prosedur/fungsi pendukung dijelaskan. Nama daripada fungsi ini telah<br />

dideklarasikan pada bagian prototype. Kemudian, instruksi yang ada di dalam fungsi pendukung dijelaskan rinci<br />

disini.<br />

II. PEMAHAMAN PROSEDUR DAN <strong>FUNGSI</strong><br />

Sebelum melangkah lebih jauh, mari kita pahami lebih dalam mengenai fungsi dalam bahasa C++. Andaikan kita<br />

menemukan soal fungsi seperti ini :<br />

F (x) = 2x + 3<br />

Fungsi dalam bahasa C++ prinsipnya sama dengan fungsi dalam matematika. Kita akan mempunyai suatu instruksi<br />

(proses dengan operator matematika), suatu variabel input ( x ), dan suatu nilai balik ( F(x) ). Dengan kata lain,<br />

fungsi matematika di atas dapat diterjemahkan menjadi berikut :<br />

int jumlah (int x)<br />

{<br />

int y;<br />

y = 2*x+3;<br />

return (y);<br />

}<br />

<strong>SUB</strong><strong>PROGRAM</strong> : PROSEDUR<br />

Untuk lebih mudah memahaminya, perhatikan contoh berikut :<br />

INPUT DATA #1:<br />

#include <br />

#include <br />

using namespace std;<br />

main()<br />

{<br />

cout


Selanjutnya, perhatikan contoh prosedur dengan bantuan prosedur pendukung :<br />

INPUT DATA #2:<br />

#include <br />

#include <br />

using namespace std;<br />

void buatBintang();<br />

//prototype prosedur<br />

main()<br />

{<br />

cout


OUTPUT DATA #3:<br />

Hasilnya adalah 15<br />

KETERANGAN<br />

Fungsi pendukung dipanggil pada fungsi utama dengan cara memanggil nama fungsinya. Kita dapat melihat proses:<br />

y = kali (5,3);<br />

Proses tersebut memanggil fungsi kali. Berikutnya nilai 5 disimpan ke variabel a dan nilai 3 disimpan ke variabel b.<br />

Dengan mengikuti instruksi dari fungsi kali, nilai a dan b dikalikan dan hasilnya disimpan pada variabel x. Nilai dari x ini<br />

kemudian dikembalikan dan disimpan ke dalam variabel y.<br />

Apabila kita akan membuat program yang jauh lebih rumit, maka fungsi ini akan sangat terasa manfaatnya.<br />

III. PARAMETER <strong>FUNGSI</strong><br />

Secara garis besar, paramater data yang sering digunakan untuk fungsi adalah Parameter Data Biasa dan Parameter<br />

Data Array.<br />

Bentuk dari Parameter Data Biasa adalah bentuk parameter yang bertipe skalar, misalnya int, float, double, char,<br />

dan lain sebagainya. Berikut adalah contoh Fungsi Data Terbesar dengan menggunakan parameter data biasa :<br />

INPUT DATA #4:<br />

#include <br />

#include <br />

using namespace std;<br />

int terbesar(int, int, int); // prototype fungsi<br />

main ()<br />

{<br />

}<br />

int a, b, c;<br />

cout > a;<br />

cout > b;<br />

cout > c;<br />

cout maks) maks = z;<br />

return maks;<br />

OUTPUT DATA #4:<br />

Tulis angka bulat pertama : 20<br />

Tulis angka bulat pertama : 45<br />

Tulis angka bulat pertama : 33<br />

Nilai terbesar adalah: 45<br />

Bagian III. PARAMETER <strong>FUNGSI</strong>


Untuk menggunakan Parameter Data Array, terdapat penulisan khusus untuk melakukannya. Berikut adalah<br />

contohnya :<br />

INPUT DATA #5:<br />

#include <br />

#include <br />

using namespace std;<br />

void cetakArray(int data[ ]);<br />

//prototype fungsi cetakArray<br />

main()<br />

{<br />

}<br />

int angka[ ] = {4,2,5,8};<br />

cetakArray (angka);<br />

getch();<br />

return 0;<br />

//memasukkan data ke dalam Array<br />

//fungsi cetakArray dengan mengirimkan per angka<br />

void cetakArray(int data[ ])<br />

//prosedur(tanpa nilai balik)<br />

{<br />

for (int i=0; i


OUTPUT DATA #6:<br />

0! = 1<br />

1! = 1<br />

2! = 2<br />

3! = 6<br />

4! = 24<br />

5! = 120<br />

6! = 720<br />

7! = 5040<br />

8! = 40320<br />

9! = 362880<br />

10! = 3628800<br />

KETERANGAN<br />

Perhatikan instruksi dari fungsi pendukung faktorial. Jika nilai angka masih diatas 1, maka kondisi if tidak terpenuhi.<br />

Hasilnya, proses akan berlanjut dengan memanggil fungsi faktorial (angka-1). Proses inilah yang dinamakan rekursif.<br />

Fungsi yang memanggil dirinya sendiri hingga akhirnya tercapai suatu kondisi yang dapat mengakhirinya.<br />

V. <strong>FUNGSI</strong> CALL BY<br />

Dalam menggunakan fungsi, kita membutuhkan data parameter berupa variabel. Variabel tersebut dapat dieksekusi<br />

dengan menggunakan call by value atau call by reference. Untuk mudah memahaminya, perhatikan contoh berikut :<br />

INPUT DATA #7:<br />

#include <br />

#include <br />

using namespace std;<br />

int kuadratByValue(int);<br />

int kuadratByReference(int &);<br />

int main()<br />

{<br />

int x = 3, z = 5;<br />

cout


KETERANGAN<br />

Perhatikan baik-baik program di atas. Perbedaan terletak pada saat nilai variabel kembai dicetak setelah melewati<br />

proses pemanggilan fungsi. Pada kasus call by value, nilai x adalah 3, sama dengan saat fungsi kuadratByValue belum<br />

dipanggil. Sedangkan pada kasus call by reference, nilai z berubah menjadi 25 ketika mencetak kembali.<br />

Call by Value : Hanya nilai dalam variabelnya diambil kemudian diproses lebih lanjut. Akan tetapi nilai yang terdapat<br />

pada variabel asal tidak terganggu (tidak mengalami perubahan). Singkat kata, kita hanya meng-copy nilai yang ada<br />

dalam variabel x.<br />

Call by Reference : Nilai beserta variabelnya ikut diproses bersamaan dengan pemanggilan fungsi. Hasilnya, nilai<br />

dalam variabel z akan ikut berubah mengikuti hasil dari fungsi call by reference. Untuk menggunakan pemanggilan ini,<br />

kita harus menyertakan tanda (&) sebelum nama variabelnya.<br />

Mari kita lihat bersama program berikut ini :<br />

INPUT DATA #8:<br />

#include <br />

#include <br />

using namespace std;<br />

VI. <strong>FUNGSI</strong> OVERLOADING<br />

void buatGaris(int tot);<br />

void buatGaris(int tot, char karakter);<br />

void buatGaris(char karakter, int tot);<br />

//prototype prosedur<br />

int main()<br />

{<br />

buatGaris(8);<br />

cout


KETERANGAN<br />

Fungsi Overloading ditunjukkan pada program di atas. Kita dapat melihat terdapat 3 buah fungsi (dalam hal ini<br />

berupa prosedur) yang memiliki nama fungsi yang serupa yaitu, buatGaris. Meskipun begitu, setiap fungsi memiliki<br />

data parameter yang berlainan dan proses instruksi yang berlainan pula.<br />

VII. HASIL CAPAIAN<br />

1. Mahasiswa mengetahui dan memahami pengertian subprogram, baik dalam bentuk prosedur maupun fungsi<br />

2. Mahasiswa mampu membuat program sederhana yang menerapkan pemakaian subprogram<br />

3. Mahasiswa mampu membuat program yang melibatkan proses-proses tertentu, seperti call by, overloading<br />

dan rekursif<br />

Bagian VII. HASIL CAPAIAN


VIII. ANALISA DAN TUGAS<br />

Suatu perusahaan sedang menghitung (rekap) hasil penjualan yang terjadi dalam kurun waktu satu tahun. Jumlah<br />

penjualan dihitung untuk setiap bulannya kemudian dilakukan perhitungan total dan rata-rata penjualan untuk tahun<br />

tersebut.<br />

Tugas Anda adalah membuat program tersebut beserta algoritmanya dengan ketentuan :<br />

1. KRITERIA UTAMA yang harus terdapat dalam program tersebut adalah :<br />

a. Program dapat menyimpan nama perusahaan, tahun penjualan, dan nilai penjualan untuk setiap bulannya.<br />

b. Nilai penjualan untuk setiap bulan dapat ditampilkan dalam bentuk angka dan grafik sederhana.<br />

c. Program dapat menghitung total penjualan dan rata-rata penjualan dalam satu tahun.<br />

d. Program dapat menyimpulkan apakah status penjualan untuk tahun tersebut bersifat UNTUNG, BALIK<br />

MODAL, atau RUGI.<br />

2. KRITERIA TAMBAHAN yang dapat Anda tambahkan adalah :<br />

a. Program memiliki sistem error-handling. Misalkan dapat mengantisipasi apabila input yang dimasukkan salah.<br />

b. Program memiliki sistem yang mudah untuk digunakan (user-friendly).<br />

Program HARUS mencakup :<br />

- Proses input/output (dengan perintah cin/cout)<br />

- Penggunaan percabangan (if-conditional)<br />

- Penggunaan proses perulangan (looping)<br />

- Penggunaan array<br />

- Penggunaan fungsi (minimal 2 (dua) buah fungsi/prosedur)<br />

CATATAN : Terlampir contoh hasil program.<br />

Tugas dikumpulkan kepada asisten.<br />

(format file *.cpp. Berikan Nama dan NIM anda pada bagian atas program).<br />

Bagian VIII. ANALISA DAN TUGAS

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!