Modul Program Di Dalam C Disebut Fungsi (Function)
Modul Program Di Dalam C Disebut Fungsi (Function)
Pendahuluan
Program komputer yang dibuat untuk menjawab permasalahan umumnya
berukuran besar. Seringkali dalam membuat program besar tersebut adalah memecah
program menjadi potonga-potongan program yang kecil yang dinamakan modul.
Teknik pemrograman seperti ini dinamakan teknik pemrograman modular. Beberapa
bahasa pemrogramn menamakan modul dengan sebutan rutin(routine), prosedure atau
fingsi.
Dasar Fungsi
Pada umumnya fungsi memerlukan masukan yang dinamakan argumen atau
parameter. Hasil akhir fungsi akan berupa sebuah nilai(nilai balik fungsi).
Penentu tipe fungsi untuk menentukan tipe keluaran fungsi yang dapat berupa salah
satu tipe data C++ yang berlaku, misal char atau int
Sebuah contoh program yang menggunakan fungsi:
Kasus 9.1
#include <iostream.h>
#include <conio.h>
void garis();
/*Prototipe fungsi
garis()*/
void main()
{
clrscr(); /*Hapus
layar*/
garis();
/*panggil fungsi
garis()*/
cout<< "Selamat Belajar Algoritma dan Pemrograman dengan
C++ \n";
cout<< "Yakinlah Anda Pasti Bisa \n";
garis();
cout<< "Program C++ memang sangat mudah \n";
garis();
}
Prototipe Fungsi
Sebuah fungsi tidak dapat dipanggil kecuali sudah dideklarasikan, deklarasi
fungsi dikenal dengna sebutan prototipe fungsi. Prototipe fungsi berupa:
Nama fungsi
Tipe nilai balik fungsi
Jumlah dan tipe agumen
Manfaat dari prototipe fungsi adalah untuk menjamin tipe argumen yang
dilewatkan paada pemanggilan fungsi benar-benar sesuai. Tanpa adanya prototipe
fungsi, amatlah mudah bagi pemrogram untuk melakukan kesalahan tanpa sengaja
dalam melewatkan argumen.
Kasus 9.2
Contoh lain misalkan Anda diminta membuat algoritma dan program untuk
menentukan bilangan terbesar dari 2 buah bilangan yang diketahui dengan
menggunakan fungsi. Anda terlebih dahuu harus mendeklarasikan fungsi untuk
menampung dan membandingkan 2 buah bilangan tersebut.
#include <iostream.h>
#include <conio.h>
int findmax(int n1, int n2); /*Prototipe fungsi
garis()*/
void printmax(int m);
void main()
{
int x, y, k;
clrscr(); /*Hapus layar*/
cout<<"Masukkan Bilangan Pertama:";
cin>>x;
cout<<"Masukkan Bilangan Kedua:";
cin>>y;
k = findmax(x,y);
printmax(k);
}
void printmax(int m)
{
cout<<"Bilangan terbesar
adalah:"<<m;
}
Contoh
Void tampilkan_judul()
{
cout<<”Universitas INDONUSA Esa Ungul”<<endl;
cout<<”Jalan Terusan Arjuna Tol Tomang”<<endl;
cout<<”Jakarta Barat”<<endl;
}
Pada contoh di atas, tidak ada pernyataan return, mengingat fungsi tidak memiliki
nilai balik. Namun penggunaan pernyataan return secara eksplisit juga bisa
diperkenankan.
Void tampilkan_judul()
{
cout<<”Universitas INDONUSA Esa Ungul”<<endl;
cout<<”Jalan Terusan Arjuna Tol Tomang”<<endl;
cout<<”Jakarta Barat”<<endl;
return;
}
Lingkup Variabel
Variabel yang didefinisikan di dalam suatu fungsi berlaku sebagai variabel lokal bagi
fungsi. Artinya variabel tersebut hanya dikenal di dalam fungsi tempat variabel
didefinisikan.
#include <iostream.h>
#include <conio.h>
void main()
{
int x= 30; //variabel lokal pada main()
double y= 5.5;//variabel lokal pada main()
clrscr(); //Hapus Layar
cout<<"Pada main() nilai x = " <<x<<"\n";
cout<<"Pada main() nilai y = " <<y <<"\n";
coba();
cout<<"Pada main() nilai x = " <<x<<"\n";
cout<<"Pada main() nilai y = " <<y<<"\n";
}
//Definisi fungsi
coba() void coba()
{
int x = 50;
double y = 11.5;
cout<<"Pada coba() nilai x = " <<x<<"\n";
cout<<"Pada coba() nilai y = "
<<y<<"\n";
}
Tampak bahwa perubahan x dan y pada coba() tidak mempengaruhi variabel dengan
nama yang sama pada main(). Ini membuktikan bahwa variabel-variabel tersebut
bersifat lokal bagi masing-masing fungsi yang mendefinisikannya.
Variabel Eksternal
Variabel eksternal merupakan kebalikan variabel otomatis. Variabel eksternal
adalah ariabel yang didefinisikan di luar fungsi manapun. Variabel ini dikenal juga
sebagai variabel global sebab variabel ini dikenal di semua fungsi.
void main()
{
clrscr();
cout<<a<<endl;
kali();
cout<<a<<endl;
kali();
cout<<a<<endl;
}
//Definisi
Fungsi void
kali()
{
a =
a*2;
}
Hasil
program di atas
adalah:
Tampak bahwa meskipun di dalam fungsi main() dan kali() tidak mendefinisikan
variabel a, ternyata variabel ini dikenal di dalam kedua fungsi tersebut. Nilai dari
variabel a dapat diubah dari dalam fungsi kali().
Penggunaan variabel eksternal diusahakan sesedikit mungkin atau sedapat mungkin
tidak usah digunakan. Tidka lain adalah karena ini mudah sekali berubah oleh
pernyataanpenugasan yang letaknya bisa di mana saja. Ini bisa menimbulkan efek
samping yang suli untuk melacaknya, terutama untuk program besar.
Variabel Statis
Baik variabel eksternal maupun otomatis dapat berkedudukan sebagai variabel
statis. Suatu variabel statis mempunyai sifat:
1. Jika variabel lokal berdiri sebagai variabel statis, maka:
- variabel tetap hanya dapat diakses pada fungsi yang mendefinisikannya
- Variabel tidak hilang saat diekskusi fungsi berakhir. Nilainya akan
tetap dipertahankan, sehingga akan dikenali pada pemanggilan fungsi
untuk tahap berikutnya.
- Inisialisasi oleh pemrogram akan dilakukan sekali saja selama program
dijalankan. Jika tidak ada inisialisasi secara eksplisit, variabel diisi
dengan nol.
2. Jika variabel eksternaldijadikan sebagai variabel statis variabel ini dapat
diakses oleh semua file yang didefinisikan pada file yang sama dengan
variabel eksternal tersebut.
void main()
{
int baru = 50;
clrscr();
panggil();
panggil();
panggil();
cout<<"Pada
main() nilai
baru
="<<baru<<endl
;
}
//Pada fungsi berikut variabel baru didefinisikan sebagai
variabel statis
//Definisi Fungsi
void panggil()
{
static int baru= 100;
baru = baru *2;
cout<<"Pada panggil()
nilai baru
="<<baru<<endl;
}
void main()
{
clrscr();
cetak(1);
}
//Definisi Fungsi
void cetak(int jum)
{
for (int
i=0;i<jum;i++)
cout<<"Ak
u Pasti
Bisa"<<en
dl;
cout<<"Hidup
Informatika"<<
endl;
}
Hasil program di
Kasus 9.5 Sebuah contoh lain mengenai pemberian bilai awal terhadap argumen
fungsi:
#include <iostream.h>
#include <conio.h>
void main()
{
clrscr();
cetak('A', 5); //Tampilkan A sebanyak 5 kali
cetak('B'); //Tampilkan B sebanyak 10
kali cetak(); //Tampilan * sebanyak
10 kali
}
//Definisi Fungsi
void cetak(char x, int jum)
{
for (int i=0;i<jum;i++)
cout<<x;
cout<<endl;
}
Referensi
Pada C++ referensi digunakan untuk memberikan nama alias dari variabel.
Bentuk peneklarasiannya:
Int & ref = nama-variabel;
Tanda & mengawali nama referensi.
Setelah pendeklarasian seperti di atas, ref menjadi nama alias dari nama_variabel.
Pengubahan nilai terhadap nama-variabel dapat dilakukan melalui nama_variabel itu
sendiri ataupun nelalui referensi ref, sebagaimana contoh berikut ini:
#include <iostream.h>
#include <conio.h>
void main()
{
int asal;
int &palsu = asal; //Deklarasi referensi
clrscr();
palsu = 55;
cout<<"\nBilangan asal :"<<asal<<endl;
cout<<"Bilangan
palsu :"<<palsu<<endl;
int asal;
int &palsu = asal; //Deklarasi referensi
clrscr();
Tampak penggunaan operator ++ pada asal dan palsu akan mengubah nilai keduanya,
hal ini terjadi karena variabel asal dan palsu menunjuk pada alamat memori yang
sama.
Kasus 9.7 Berikut ini program untuk menampilkan alamat memori suatu variabel:
#include <iostream.h>
#include <conio.h>
void main()
{
int asal;
int &palsu = asal; //Deklarasi referensi
clrscr();