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