Fungsi (Function) merupakan blok dari kode yang dirancang untuk melaksanakan tugas khusus. Pada intinya fungsi berguna untuk :

–       Mengurangi pengulangan penulisan program yang berulangan atau sama.

–       Program menjadi terstruktur, sehingga mudah dipahami dan dikembangkan.

Fungsi-fungsi yang sudah kita kenal sebelumnya adalah fungsi main(), yang bersifat mutlak, karena fungsi ini program akan dimulai, sebagai contoh yang lainnya fungsi printf() yang mempunyai tugas untuk menampilkan informasi atau data kelayar dan masih banyak lainnya.

Struktur Fungsi

Sebuah fungsi sederhana mempunyai bentuk penulisan sebagai berikut :

nama_fungsi(argumen)

{

… pernyataan / perintah;

… pernyataan / perintah;

… pernyataan / perintah;

}

Keterangan:

–       Nama fungsi, boleh dituliskan secara bebas dengan ketentuan, tidak menggunakan spasi dan nama-nama fungsi yang mempunyai arti sendiri.

–       Argumen, diletakan diantara tanda kurung “( )” yang terletak dibelakang nama fungsi. Argumen boleh diisi dengan suatu data atau dibiarkan kosong.

–       Pernyataan / perintah, diletakan diantara tanda kurung ‘{ }’.

Pada pemanggilan sebuah fungsi, cukup dengan menuliskan nama fungsinya.

Contoh-1                 /* pembuatan fungsi garis()  */

garis()

{

printf(“\n———————-\n”);

}

/* program utama */

main()

{

clrscr();

garis();

cout<<“AMIK BSI – Pondok Labu”<<endl;;

garis();

getche();

}

Prototipe Fungsi

Prototipe fungsi digunakan untuk menjelaskan kepada kompiler mengenai :

  • Tipe keluaran fungsi.
  • Jumlah parameter.
  • Tipe dari masing-masing parameter.

Salah satu keuntungan pemakai prototipe, kompiler akan melakukan konversi antara tipe parameter dalam definisi dan parameter saat pemanggilan fungsi tidak sama atau akan menunjukkan kesalahan jika jumlah parameter dalam definisi dan saat pemanggilan berbeda.

Contoh prototipe fungsi :

float total ( float a, float b);

keterangan:

float: Tipe keluaran fungsi

total: Nama-fungsi

float a : Tipe parameter pertama

float b :Tipe parameter kedua

menggunakan titik koma

Jika dalam penggunaan fungsi yang dideklarasikan dengan menggunakan prototipe, maka bentuk definisi harus diubah. Sebagai contoh pada pendefinisian berikut :

float total(a, b)

float a, y;

Bentuk pendefinisian diatas harus diubah menjadi bentuk modern pendefinisian fungsi :

                                               

            float total(float a, float b)

keterangan:

float: Tipe keluaran fungsi

total: Nama-fungsi

float a : Tipe parameter pertama

a : parameter a

float b :Tipe parameter kedua

b : parameter b

tidak menggunakan titik koma

Parameter Fungsi

Terdapat dua macam para parameter fungsi, yaitu :

  • Parameter formal adalah variabel yang ada pada daftar parameter dalam definisi fungsi.
  • Parameter Aktual adalah variabel yang dipakai dalam pemanggilan fungsi.

Bentuk penulisan Parameter Formal dan Parameter Aktual.

Ada dua cara untuk melewatkan parameter ke dalam fungsi, yaitu berupa :

  1. a.   Pemanggilan dengan nilai ( Call by Value )

Pemanggilan dengan nilai merupakan cara yang dipakai untuk seluruh fungsi buatan yang telah dibahas didepan. Pada pemanggilan dengan nilai, nilai dari parameter aktual akan ditulis keparameter formal. Dengan cara ini nilai parameter aktual tidak bisa berubah, walaupun nilai parameter formal berubah.

Contoh-2                 /* ———————— */

/* Penggunaan Call By Value */

/* Program Pertukaran Nilai */

/* ———————— */

#include<conio.h>

#include<stdio.h>

#include<iostream.h>

tukar(int x, int y);

main()

{

int a, b;

a = 88;

b = 77;

clrscr();

cout<<“Nilai Sebelum Pemanggilan Fungsi”;

cout<<“\na = “<<a<<” b = “<<b;

tukar(a,b);

cout<<“\nNilai Setelah Pemanggilan Fungsi”;

cout<<“\na = “<<a<<” b = “<<b;

getch();

}

tukar(int x, int y)

{

int z;

z = x;

x = y;

y = z;

cout<<“\n\nNilai di dalam Fungsi Tukar()”;

cout<<“\nx = “<<x<<” y = “<<y;

cout<<endl;

}

b. Pemanggilan dengan Referensi (Call by Reference)

Pemanggilan dengan reference merupakan upaya untuk melewatkan alamat dari suatu variabel kedalam fungsi. Cara ini dapat dipakai untuk mengubah isi suatu variabel diluar fungsi dengan melaksanakan pengubahan dilakukan didalam fungsi.

Contoh-3                 /* —————————- */

/* Penggunaan Call By Reference */

/* Program Pertukaran Nilai     */

/* —————————- */

#include<conio.h>

#include<stdio.h>

#include<iostream.h>

tukar(int *x, int *y);

main()

{

int a, b;

a = 88;

b = 77;

clrscr();

cout<<“Nilai Sebelum Pemanggilan Fungsi”;

cout<<“\na = “<<a<<” b = “<<b;

tukar(&a,&b);

cout<<endl;

cout<<“\nNilai Setelah Pemanggilan Fungsi”;

cout<<“\na = “<<a<<” b = “<<b;

getch();

}

tukar(int *x, int *y)

{

int z;

z = *x;

*x = *y;

*y = z;

cout<<endl;

cout<<“\nNilai di Akhir Fungsi Tukar()”;

cout<<“\nx = “<<*x<<” y = “<<*y;

}

Pernyataan return().

Digunakan untuk mengirimkan nilai atau nilai dari suatu fungsi kepada fungsi yang lain yang memanggilnya. Pernyataan return() diikuti oleh argumen yang berupa nilai yang akan dikirimkan. Contoh pemakaian pernyataan return() dapat dilihat pada contoh berikut ;

Contoh-4                 /* ————————– */

/* Penggunaan Fungsi return() */

/* ————————– */

#include<conio.h>

#include<stdio.h>

#include<iostream.h>

tambah(int c);   //prototype fungsi tambah

main()

{

int a, b = 5;

clrscr();

a = tambah(b);

cout<<“Nilai Setelah Pemanggilan Fungsi adalah “<<a;

getch();

}

tambah(int c)   //fungsi tambah

{

return(c+=2);

}

Pengiriman Data Ke Fungsi

  1. a.     Pengiriman Data Konstanta Ke Fungsi.

Mengirimkan suatu nilai data konstanta ke suatu fungsi yang lain dapat dilakukan dengan cara yang mudah, dapat dilihat dari program berikut :

Contoh-5                 /* ———————— */

/* Pengriman data Konstanta */

/* ———————— */

#include<conio.h>

#include<stdio.h>

#include<iostream.h>

luas(float sisi);

main()

{

float luas_bs;

clrscr();

luas_bs = luas(4.25);

cout<<“\nLuas Bujur Sangkar = “<<luas_bs;

getch();

}

luas(float sisi)

{

return(sisi*sisi);

}

Keterangan :

Dalam struktur program diatas dilihat bahwa, pernyataan luas_bs(4.25), akan dikirimkan kepada fungsi luas(), untuk diolah lebih lanjut, yang nilai tersebut akan ditampung pada variabel sisi.

  1. b.    Pengiriman Data Variabel Ke Fungsi

 

Bentuk pengiriman data Variabel, sama seperti halnya pengiriman suatu nilai data konstanta ke suatu fungsi, hanya saja nilai yang dikirimkan tersebut senantiasa dapat berubah-ubah. Bentuk pengiriman tersebut dapat dilihat dari program berikut :

 

Contoh-6                 /* ———————— */

/* Pengriman data Konstanta */

/* ———————— */

#include<conio.h>

#include<stdio.h>

#include<iostream.h>

luas(float sisi);

main()

{

float luas_bs, sisi_bs;

clrscr();

cout<<“\nMenghitung Luas Bujur Sangkar”<<endl;

cout<<“\nMasukan Nilai Sisi Bujur Sangkar : “;

cin>>sisi_bs;

luas_bs = luas(sisi_bs);

cout<<“\nLuas Bujur Sangkar = “<<luas_bs<<” Cm”;

getch();

}

luas(float sisi)

{

return(sisi*sisi);

}

Storage Class Variabel

Storage Class Variabel atau Penggolongan berdasarkan kelas penyimpanan suatu variabel dalam fungsi berupa :

  • Variabel Lokal.
  • Variabel Eksternal / Global.
  • Variabel Statis.

Variabel Lokal

Variabel Lokal adalah variabel yang dideklarasikan didalam fungsi dan hanya dikenal oleh fungsi yang bersangkutan.

Didalam literatur, variabel lokal disebut dengan Variabel Otomatis.

Contoh-7                 /* ————– */

/* Variabel Lokal */

/* ————– */

#include<conio.h>

#include<stdio.h>

#include<iostream.h>

lokal();

main()

{

int a = 15;

clrscr();

cout<<“Pemanggilan Variabel Lokal”<<endl;

cout<<“\nNilai didalam funsi main() = : “<<a;

lokal();

cout<<“\nNilai didalam funsi main() = : “<<a;

getch();

}

lokal()

{

int a = 10;

cout<<“\nNilai a didalam fungsi lokal() = “<<a;

}

Variabel Eksternal

Variabel Eksternal adalah variabel yang dideklarasikan diluar fungsi yang bersifat global dan dapat digunakan bersama-sama tanpa harus dideklarasikan berulang-ulang.

Contoh-8                 /* —————————— */

/* Variabel Eksternal atau Global */

/* —————————— */

#include<conio.h>

#include<stdio.h>

#include<iostream.h>

int a= 6;

void lokal();

void main()

{

clrscr();

cout<<“Pemanggilan Variabel Lokal”<<endl;

cout<<“\nNilai didalam funsi main() = : “<<a;

lokal();

cout<<“\nNilai Setelah penggilan fungsi = “<<a;

getch();

}

void lokal()

{

a+=10;

}

Variabel Statis

Variabel Statis dapat berupa variabel internal (didefinisikan pada  fungsi) meskipun variabel. Sifat variabel statis ini mempunyai sifat antar lain.

  • Jika variabel statis bersifat internal, maka variabel hanya dikenal oleh fungsi tempat variabel dideklarasikan.
  • Jika variabel statis bersifat eksternal, maka variabel dapat dipergunakan oleh semua fungsi yang terletak pada file yang sama ditempat variabel statis dideklarasikan.
  •  Jika tidak ada inisialisasi oleh pemrograman secara otomatis akan diberikan nilai awal nol.

Suatu variabel statis diperoleh dengan menambahkan kata-kunci static didepan penentu tipe data variabel.

Contoh-9                 /* ————————– */

/* Penggunaan Variabel Statis */

/* ————————– */

#include<conio.h>

#include<stdio.h>

#include<iostream.h>

fungsi();

main()

{

int k = 5;

clrscr();

fungsi();

fungsi();

cout<<“\nNilai K didalam fungsi main() = “<<k;

getch();

}

fungsi()

{

static int k;

k += 4;

cout<<“\nNilai K didalam fungsi() = “<<k;

}

inline Function

Fungsi inline ( inline function ) digunakan untuk mempercepat proses program, terutama program-program yang menggunakan sering menggunakan fungsi, terutama program-program yang menggunakan pernyataan perulangan proses seperti for, while dan do – while. Inline function dideklarasikan dengan menyisipkan kata kunci  inline didepan tipe data.

 

 

Contoh-10               /* ————————– */

/* Penggunaan inlide function */

/* ————————– */

#include<conio.h>

#include<stdio.h>

#include<iostream.h>

inline int hitung(int a, int b)

{

return(a * b);

}

main()

{

int k;

clrscr();

for(k = 1; k < 20; k++)

cout<< k <<“. “<<hitung(k, 2 * k) << endl;

getch();

}

Function Overloading

Function Overloading adalah mendefinisikan beberapa fungsi, sehingga memiliki nama yang sama. Dapat diartikan bahwa fungsi yang overload berarti menyediakan versi lain dari fungsi tersebut. Salah satu kelebihan dari C++ adalah Overloading.

Sebagai contoh membentuk fungsi yang sama dengna tipe yang berbeda-beda dan dibuatkan pula nama fungsi yang berbeda-beda pula.

Contoh-11               /* ——————————- */

/* Penggunaan function overloading */

/* ——————————- */

#include<conio.h>

#include<stdio.h>

#include<iostream.h>

int hitung(int b);

long hitung(long c);

float hitung(float d);

void main()

{

clrscr();

cout<<hitung(4)<<endl;

cout<<hitung(2)<<endl;

cout<<hitung(3)<<endl;

cout<<hitung(5)<<endl;

getch();

}

int hitung(int b)

{

return(b*b);

}

long hitung(long c)

{

return(c*c);

}

double hitung(double d)

{

return(d*d);

}

Posted in C++

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s