Universitas Gadjah Mada 1 BAB III FUNGSI DAN

advertisement
BAB III
FUNGSI DAN MODULASI DALAM PROGRAM
I.
DASAR TEORI
A. Fungsi
Bahasa pemprogaman C++ sangat mendukung konsep pemprogaman terstruktur
atau bahkan konsep pemprogaman berorentasi objek (object oriented progamming).
Pada konsep pemprogaman terstruktur, program dipecah-pecah menjadi beberapa
fungsi. Fungsi merupakan bagian atau pecahan program yang dirancang untuk
melaksanakan tugas spesifik tertentu. Suatu fungsi dapat dipanggil dan program
utama (fungsi main()) atau dan fungsi lain. Tujuan pemakaian suatu fungsi dalam
program adalah untuk memudahkan pengembangan program dan memperkecil
ukuran program. Konsep pemprogaman terstruktur dapat digambarkan oleh skema
pada gambar 3.1 berikut.
Gambar 3.1. Skema konsep pemprogaman terstruktur.
Skema diatas menunjukkan bahwa program terdiri dari fungsi utama atau fungsi
main() fungsi a(), fungsi b(), fungsi c(). fungsi c1(), fungsi c2() dan fungsi c3(). Fungsi
main() akan memanggil fungsi a(), fungsi b() dan fungsi c(). Sementara itu fungsi c()
sendiri akan memanggil fungsi d(), fungsi c2() dan fungsi c3().
Pada umumnya fungsi memerlukan masukan yang disebut sebagai argumen
atau parameter. Masukan ini selanjutnya diolah oleh fungsi tersebut. Hasil akhir
fungsi berupa sebuah nilai yang disebut sebagai nilai keluaran atau nilai balik fungsi.
OIeh karena itu fungsi sering digambarkan sebagai “ kotak hitam” (black box) seperti
gambar 3.2 dibawah. Penggambaran fungsi sebagai kotak hitam dapat berarti bahwa
bagian dalam fungsi bersifat pribadi bagi fungsi tersebut. Tak ada pernyataan dari
Universitas Gadjah Mada
1
luar fungsi yang dapat mengakses bagian dalam fungsi tersebut (selain melalui
parameter ekstemal).
Gambar 3.2 Gambaran fungsi sebagal kotak hitam
Fungsi dalam bahasa pemprogaman C++ memiliki bentuk umum sebagai berikut:
Simbol tipe diawat fungsi menunjukkan jenis tipe data nilai kembalian atau nilai
keluaran. Fungsi yang tidak memiliki nilai kembalian, simbol tipe-nya diideklarasikan
dengan kata kunci void, seperti fungsi utama atau fungsi main() yang tidak memiliki
nilai kembalian dideklarasikan sebagai : void main() . Simbol nama fungsi
menunjukkan nama fungsi yang didefinisikan. Simbol (tipe argument, tipe argumen2,
...) menunjukkan daftar argumen atau nilai masukan yang dibutuhkan oleh fungsi.
Tiap-tiap argumen memiliki tipe data sendiri-sendiri. Bagian terakhir adalah tubuh
fungsi yang dibatasi oleh kurung kurawa buka dan tutup {}. Simbol tubuh fungsi berisi
deretan penyataan dan perintah-perintah yang akan dijalankan oleh fungsi.
Universitas Gadjah Mada
2
Parameter fungsi yang masih berada pada saat pendefinisian fungsi disebut
parameter formal, misalnya parameter pada contoh 3.1 . Sedang parameter fungsi
yang dipakai pada saat pemanggilan fungsi dinamakan parameter aktual (contoh
3.3).
Fungsi-fungsi dalam program C/C++ biasanya didefinisikan atau dideklarasikan
sebelum fungsi main(). Akan tetapi fungsi-fungsi juga dapat didefinisikan atau
dideklarasikan setelah fungsi main() dengan terlebih dahulu mendeklarasikan
prototipe fungsi sebelum fungsi main().
Universitas Gadjah Mada
3
Selain fungsi-fungsi yang didefinisikan oleh pemakai atau programer, didalam
bahasa C++ juga telah didefinisikan fungsi-fungsi built-up . Fungsi fungsi ini dapat
dipanggil dengan terlebih dahulu mendeklarisikan file-judul yang terkait dengan
pustaka yang mengandung fungsi tersebut. Pendeklarasian file-judul dilakukan pada
permulaan program sebagai pengarah praprosesor (lihat Bab I). Tabel 3.1
menunjukkan daflar fungsi-fungsi pustaka path C/C++.
Universitas Gadjah Mada
4
Universitas Gadjah Mada
5
B. Modulasi Dalam Program
Modulasi program adalah proses pemecahan program menjadi beberapa
bagian pokok yang memudahkan pemodifikasian dan penyempurnaan program.
Selain dengan fungsi, bahasa pemprogaman C++ juga menyediakan fasilitas lain
untuk kepentingan pemodulasian progam, yakni Struktur dan Kelas
1. Struktur
Struktur atau struct digunakan untuk mendeklarasikan sekelompok data yang
memiliki tipe berlainan. Elemen-elemen atau anggota struktur menempati lokasi
memori yang berbeda. Bentuk umum pendeklarasian struktur adalah:
Bagian nama struktur menyatakan sembarang nama yang menjadi nama
struktur. Bagian tipe menyatakan tipe data salah satu anggota struktur, dapat
berupa larik atau struktur yang lain. Bagian anggota1 dan anggota2 menyatakan
nama-nama anggota struktur.
Universitas Gadjah Mada
6
Pemakaian struktur terkait dengan pendefinisian objek bertipe data struktur yang
telah dideklarasikan. Bentuk umum pendefinisian objek tersebut adalah:
Bagian nama_stauktur menyatakan nama struktur. Sedang bagian objek_strukfur
menyatakan nama objek yang bertipe data struktur yang didefinisikan.
Pendeklarasian struktur sekaligus pendefinisian objek bertipe data struktur dapat
juga dilaksanakan secara serempak dengan format sebagai benkut:
Universitas Gadjah Mada
7
Pengaksesan anggota struktur dapat berupa pemberian nilai (data) ke anggota
stmktur atau pengambilan niIai (data) dan anggota struktur. Pengaksesan nilai
anggota struktur dilakukan dengan menambahkan titik (. ) terhadap objek dan
struktur diikuti nama anggota struktur yang diakses. Bentuk umum pemberian
nilai ke anggota struktur adalah:
Bagian objek_struktur menyatakan nama objek yang bertipe data struktur yang
didefinisikan. Bagian anggota_struktur menyatakan anggota struktur yang
diakses. Bagian data menyatakan nilai data yang diisikan ke anggota struktur.
Bagian data ini dapat berupa konstanta, variabel atau anggota struktur yang lain.
Tipe data dan data harus sesuai dengan tipe data anggota struktur.
Bentuk umum pengambilan nilai dan anggota struktur adalah:
Bagian variabel menunjukkan variabel tempat menampung data atau nilai yang
telah diambil dan salah satu anggota struktur. Tipe data dari variabel harus
sesuai dengan tipe data anggota struktur.
Universitas Gadjah Mada
8
Objek yang memiliki struktur yang sama dapat saling dipertukarkan atau diisikan.
2. Kelas
Kelas atau class digunakan untuk mendeklarasikan sekelompok data yang
memiliki tipe dan fungsi berlainan. Berbeda dengan struktur yang hanya dapat
menampung anggota dengan tipe data berlainan, kelas lebih luas lagi dengan
kemampuan menampung anggota dengan tipe data dan fungsi berlainan
sekaligus. Fungsi-fungsi dalam kelas biasanya dipakai untuk mengakses dan
menggoperasikan anggota-anggota kelas.
Anggota-anggota dan fungsi dalam kelas memiliki berbagai tingkat spesifikasi
akses, yakni private, protected dan public. Anggota dan fungsi private suatu
kelas hanya dapat diakses fungsi kelas tersebut. Suatu usaha untuk mengakses
anggota dan fungsi private suatu kelas akan memunculkan pesan kesalahan
kompilasi. Anggota dan fungsi protected suatu kelas selain dapat diakses fungsi
kelas itu sendiri juga akan dapat diakses oleh kelas turunan (dibahas pada
kesempatan lain). Sedang anggota dan fungsi public selain dapat diakses oleh
fungsi didalam kelas itu sendiri dan fungsi kelas keturunannya, juga dapat
diakses oleh fungsi-fungsi luar. Jika tingkat spesifikasi akses tidak dicantumkan
maka secara otomatis yang berlaku adalah tingkat spesifikasi akses private.
Bentuk umum deklarasi kelas adalah :
Universitas Gadjah Mada
9
Bagian class menyatakan kata kunci untuk mendeklarasikan dan mendefinisikan
suatu kelas. Bagian nama_kelas menyatakan nama kelas yang diciptakan.
Bagian tipe menyatakan tipe data anggota kefas atau nilal kembalian fungsi
kelas. Bagian private, protected dan public yang diikuti dengan tanda :
menyatakan tingkat spesifikasi akses anggota dan fungsi kelas yang
dibawahnya.
Bagian
nama_kelas
(argumen1,
argumen2
)
menyatakan
konstruktor kelas, atau fungsi kelas yang pertama-tama akan dieksekusi ketika
kelas objek kelas didefinisikan. Sedang bagian ~nama_kelas() menyatakan
destruktor kelas, atau fungsi kelas yang paling akhir dieksekusi ketika objek
kelas didealokasi dari ruang memori. Konstruktor dan destruktor kelas sangat
bermanfaat dalam penerapan konsep menejemen memori dinamis dengan
menggunakan penunjuk.
Universitas Gadjah Mada
10
Bentuk lain pendeklarasian suatu kelas adalah dengan mendeklarasikan anggota
anggota kelas dahalu, kemudian diikuti dengan definisi fungsi-fungsi kelas diluar
kelas dengan didahului nama kelas diikuti tanda :: dan nama fungsi kelas.
d
Universitas Gadjah Mada
11
Pemakaian kelas terkait dengan pendefinisian objek bertipe data kelas yang
telah dideklarasikan. Bentuk umum pendefinisian objek tersebut adalah:
Bagian nama_kelas menyatakan nama kelas . Sedang bagian objek_kelas
menyatakan nama objek yang bertipe data kelas yang didefinisikan.
Pendeklarasian kelas sekaligus pendefinisian objek bertipe data kelas dapat
juga dilaksanakan secara serempak dengan format sebagai berikut:
Dimana objek_kelas menyatakan nama objek yang bertipe data kelas yang
didefinisikan.
Pengaksesan anggota atau fungsi kelas dapat berupa pemberian nilai (data)
ke anggota atau fungsi kelas serta pengambilan nilai (data) dan anggota atau
fungsi kelas. Pengaksesan niIai anggota atau fungsi kelas dilakukan dengan
menambahkan titik (.) terhadap objek dari kelas diikuti nama anggota atau nama
Universitas Gadjah Mada
12
fungsi kelas yang diakses jika diakses dan luar kelas. Pengaksesan ini
dilaksanakan dengan memperhatikan spesifikasi akses dan anggota atau fungsi
kelas terkait. Pengaksesan anggota kelas dari luar kelas, seyogyanya
dilaksanakan dengan menggunakan fungsi kelas terkait, karena untuk menjaga
aspek modulasi program. Bentuk umum pemberian nilai ke anggota atau fungsi
kelas adalah:
Atau
Contoh 3.17 :
Blk1.SetPanjang (20.2);
bIk1.balok (20.2, 3.2, 1.3);
Bentuk umum pengambilan nilai dan anggota atau fungsi kelas adalah
Atau
Bagian variabel menunjukkan variabel tempat menampung data atau nilai yang
telah diambil dari salah satu anggota atau fungsi kelas. Tipe data dari variabel
harus sesuai dengan tipe data anggota atau fungsi kelas.
II.
STUDI KASUS
 Studi kasus I
Di sini akan diberi contoh fungsi untuk menghitung luas permukaan bola dan
volume bola jika diketahui jari-jari suatu bola.
/ /******************************************************************
/ / Program memakai fungsi penghitung gaya coulomb
/ /******************************************************************
Universitas Gadjah Mada
13
#include <iostream.h>
#include <iomanip.h>
float GayaCoulomb(float ql,float q2,float r)
{
return ((9e+9*ql*q2)/(r*r));;
}
void main()
{
float ql,q2,r,F;
cout<<” Menghitung gaya coulomb”<<endl;
cout<<” Masukkan q1
: ”; cin>>ql;
cout<<” Masukkan q2
: ”; cin>>q2;
cout<<” Masukkan jarak
: ”; cin>>r;
F=GayaCoulomb(q1,q2,r);
//memanggil
fungsi GayaCoulomb ();
cout<<” Besar gaya coulomb = ”<<setw(8)<<F<<endl;
}
 Studi kasus 2
Pada studi kasus kali ini akan diberi contoh tiga fungsi untuk menghitung gaya
Coulomb, potensial listrik dan medan listrik. Gaya Coulomb dihitung dengan
memasukkan nilai dua muatan dan jarak antar muatan. Potensial listrik dihitung
dengan memasukkan besar nilai muatan dan jarak suatu titik posisi dengan suatu
muatan. Sedang medan listrik dihitung dengan memasukkan nilai besar suatu
muatan dan jarak titik yang di tinjau nilai medannya dari muatan tersebut.
1. Program memakai fungsi penghitung Gaya Coulomb
//******************************************************************
// Program memakai fungsi penghitung gaya Coulumb
//******************************************************************
#include <iostream.h>
#include <conio.h>
#include <math.h>
#include <iomanip.h>
float GayaCoulomb(float q1,float q2,float r)
{
Universitas Gadjah Mada
14
return (9e+9*q1*q2)I(r*r));;
}
void main()
{
float q1, q2 r, F;
cout<<”
Menghitung Gaya Coulomb”<<endl;
cout<<”
Masukkan q1
: “;cin>>q1;
cout<<”
Masukkan q2
:“; cin>>q2;
cout<<”
Masukkan jarak
:“; cin>>r;
F = GayaCoulomb(q1,q2,r);
cout<<”
//memanggil fungsi GayaCoulomb();
Besar Gaya Coulomb= “<<setw(8)<<F<<endl;
getch();
}
2. Program memakai fungsi penghitung Potensial listrik
//************************************************************************
// Program memakai fungsi penghitung potensial listrik
//************************************************************************
#include <iostream.h>
#include <iomanip.h>
float Potensial(float q1,float r)
{
float V;
V=(9e+9*q1)/r;
return V;
}
void main()
{
float q1,r,V;
cout<<“Mengbilung Potensial Listrik”<<endl;
cout<<“Masukkan q1
:“;cin>>q1;
cout<<“Masukkan jarak :“;cin>>r;
V= Potensial(q1,r); //memanggil fungsi Potensial()
cout<<“Besar potensial = “<<setw(8)<<V<<“volt”<<endl:
}
3. Program memakai fungsi penghitung Medan listrik
//********************************************************************
Universitas Gadjah Mada
15
// Program memakai fungsi penghitung medan listrik
//********************************************************************
#include <iostream.h>
#include <iomanip.h>
float Medan(float Q,float r)
{
return (9e+9*Q)/(r*r);
}
Void main()
{
float Q,r,E;
cout<<“Menghitung kuat medan listrik”<<endl;
cout<<”Masukkan muatan Q
cout<<”Masukkan jarak
:“;cin>>Q;
:“;cin>>r;
E=Medan(Q.r);
//memanggil fungsi Medan()
cout<<”Besar Medan Listrik
=“<<setw(8)<<E<<endl;
}
 Studi Kasus 3
Pada studi kasus ini akan dibuat program untuk menghitung suatu fungsi
matematis yang memiliki bentuk rumusan :
Nilai y(t) dicari dengan memberi nilai t sebagai masukan.
//********************************************************************
// Program menghitung fungsi polinomial
//********************************************************************
#include<iostream.h>
#include<math.h>
#include<iomanip.h>
float Polinom(float t)
{
Float y;
Universitas Gadjah Mada
16
Y=(t*t*t+2.0*t*t-8.0*t-100.0*t)/sqrt(5.0*t*t-10.0);
return y;
{
Void main()
{
Float t,hasil;
cout<<“
Menghitung fungsi Polinominal”<<endl;
cout<<“
Masukkan nilai variable bebas
:“;cin>>t;
hasil=Polinom(t); //memanggil tiingsi Polinom()
cout<<“
Hasil yang diperoleh, y(t)
=“<<setw(8)<<hasil<<endl;
}
 Studi Kasus 4
Pada studi kasus kali ini diberikan contoh pemakaian struktur untuk
menghitung isi balok.
//********************************************************************
// Program balok dengan struktur
//********************************************************************
#include <iostream.h>
#include <math.h>
void main()
{
struct balok
{
float panjang;
float lebar;
float tinggi;
}
balok blk1,blk2;
//pengisian nilai pada balok pertama
cout<<” Masukkan data balok”<<endl;
cout<<“ Panjang balok : “;
cin>>blk1.panjang;
cout<<” Lebar balok : “;
cin>>blk1.Iebar;
Universitas Gadjah Mada
17
cout<<“ Tinggi balok : “;
cin>>blk1.tinggi;
blk2=blk1; //pengisian balok kedua oleh balok pertama
cout<<” Karakteristik Balok “<<endl;
cout<<”IsiBalok = “<<(blk2.panjang*blk2.1ebar*blk2.tinggi)<<“m^3”<<endl;
cout<<“Luas alas dan tutup balok ”<<(blk2.panjang*blk2.lebar)<<”m^2”<<endl;
}
 Studi Kasus 5
Pada studi kasus kali ini diberikan contoh pemakaian kelas untuk memodulasi
atau menyimpan informasi tentang balok.
#include <iostream.h>
#include <math.h>
class balok
{
private:
float panjang;
float lebar;
float tinggi;
float isi;
public:
balok (float pnj, float lbr, float tng)
{
panjang=pnj;
lebar=lbr;
tnggi=tng;
isi=pnj*Ibr*tng;
}
float AmbPaniang() {return panjang; }
float AmbLebar() {return lebar; }
float AmbTinggi() {retum tinggi ; }
float Ambisi() {return isi; }
};
void main()
{
float pnj,lbr,tng,isi,luas;
Universitas Gadjah Mada
18
balok balokku(20.1,2.3,4.0);
pnj= balokku.AmbPanjang();
lbr= balokku.AmbLebar();
tng balokku.AmbTinggi();
isi= balokku.Ambisi();
Iuas=pnj*lbr;
cout<<” Karakteristik balok ”<<endl;
cout<<” 1.Panjang Balok = “<<pnj<<” m”<<endl;
cout<<” 2.Lebar Balok = “<<lbr<<” m”<<endl;
cout<<” 3.Tinggi Balok = “<<tng<<” m”<<endl;
cout<<” 4.Isi Balok = “<<isi<<” m^3”<<endl;
cout<<” 5.Luas alas Balok = “<<luas<<” m^2”<<endl;
}
 Studi Kasus 6
Pada studi kasus kali ini diberikan contoh pemakaian kelas untuk memodulasi
suatu bilangan kompleks.
#include <iostreamh>
#include <conio.h>
class Kompleks
{
private :
double real;//nilai real
double imaj;//nilai imajimer
public :
//definisi fungsi anggota kelas kompleks.
Kompleks(double re,double im)
{
real = re; imaj = im;
}
void info()
{
cout<<“\n Bilangan kompleks: “<<endl;
cout<<“\n real : “<<real<<endl;
cout<<”\n imajiner: “<<imaj<<endl;
Universitas Gadjah Mada
19
}
};
void info()
{
clrscr();
Kompleks a(2.34,0.12);
a.info();
Kompleks b(.09,32);
b.info();
}
III.
LATIHAN
 Latihan 1
Tulislah suatu program dengan menggunakan fungsi untuk memangkatkan
suatu bilangan real dengan bilangan real lainnya. Fungsi ini menerima dua
parameter bertipe data float atau double dan memiliki nilai kembalian bertipe data
float atau double yang merupakan hasil pemangkatan dari kedua parameter
tersebut.
 Latihan 2
Tulislah suatu program dengan menggunakan fungsi untuk menyederhanakan
pecahan ⁄ menjadi a ⁄
di mana x dan y adalah bilangan bulat dan x > y.
Sebagai contoh , pecahan 1 ⁄ dapat disederhanakan menjadi 2 ⁄ .
 Latihan 3
Tulislah suatu program dengan menggunakan fungsi untuk mengkonversi suhu
dari :
-
Celcius ke Fahrenheit
-
Fahrenheit ke Celcius
-
Celcius ke Kelvin
-
Kelvin ke Fahrenheit
 Latihan 4
Universitas Gadjah Mada
20
Tulislah suatu program dengan menggunakan fungsi untuk mengkonversi
masukan sudut dalam derajat menjadi sudut dalam radian dan sebaliknya.
 Latihan 5
Tulislah suatu program dengan menggunakan fungsi untuk mengkonversi
masukan berupa koordinat polar (r, ) ke koordinat kartesian (x,y) dan sebaliknya.
 Latihan 6
Tulislah suatu program dengan menggunakan fungsi dan struktur untuk
menghitung panjang sisi a dan segitiga ABC pada gambar 3. dibawah ini, apabila
diberi masukan berupa nilai b, c,
.
 Latihan 7
Buatlah program dengan menggunakan fungsi untuk menghitung lama benda
yang jatuh bebas dari puncak gedung jika diketahui ketinggian gedung. Asumsikan
nilai percepatan gravitasinya.
 Latihan 8
Buatlah program dengan menggunakan fungsi untuk menghitung jarak peluru
yang ditembakkan dari suatu lokasi penembakan dengan sudut penembakan ( ) dan
kecepatan mula-mula ( ) diketahui. Rumus menghitung jarak adalah
 Latihan 9
Buatlah suatu program dengan menggunakan fungsi untuk menghitung
momen inersia, kecepatan sudut dan energi kinetik dari suatu tabung yang diputar
tetap sekitar sumbu tegaknya jika diketahui jari-jari dan tinggi tabung, serta besar
pergeseran sudut tabung selama waktu tertentu.
Universitas Gadjah Mada
21
 Latihan 10
Tulislah program dengan menggunakan struktur atau kelas untuk menjumlahkan,
mengurangkan, mengalikan dan membagi bilangan kompleks.
Universitas Gadjah Mada
22
Download