Langsung ke konten utama

Mengenal Fungsi Pada C++

Fungsi adalah sebuah blok pernyataan yang berisi sejumlah pernyataan yang dikemas dalam sebuah nama yang dapat dipanggil beberapa kali dibeberapa tempat dalam program.
Tujuan pembuatan fungsi :
  • Memudahkan dalam mengembangkan program, karena program dipecah menjadi programprogram yang lebih kecil.
  • Menghemat ukuran program, ini akan terasa kalau ada beberapa deretan instruksi yang sama digunakan pada beberapa tempat didalam program.
Deklarasi/prototipe fungsi
Deklarasi / prototipe sebuah fungsi berupa :
  • Nama fungsi
  • Tipe nilai balik fungsi
  • Jumlah dan tipe argumen

Format deklarasi untuk fungsi yang menghasilkan nilai balik :
         Tipe Nama_fungsi(daftar_parameter);
Format deklarasi untuk fungsi yang tidak menghasilkan nilai balik :
        void Nama_fungsi(daftar_parameter);


Definisi fungsi
Setiap fungsi yang dipanggil didalam program harus didefinisikan terlebih dahulu yang letaknya bisa dimana saja. Khusus untuk fungsi yang disediakan oleh sistem, definisi sebenarnya sudah ada dalam pustaka yang disebut file header.

Fungsi tanpa Nilai Balik
Adakalanya suatu fungsi tidak perlu memiliki nilai balik. Misalnya fungsi yang hanya dimasudkan untuk menampilkan suatu keterangan saja. Pada fungsi seperti ini, tipe nilai balik fungsi yang diperlukan adalah void.
Contoh :
void tampilkan_judul ()
{
cout << “PT. Maju Mundur” << endl;
cout << “Jl. Buntu No. 76” << endl;
cout << “Yogyakarta” << endl;
}
pada contoh fungsi diatas, tidak ada pernyataan return, mengingat fungsi tidak memiliki nilai balik. Namun penggunaan pernyataan return secara eksplisit juga diperkenankan. Dalam hal ini digunakan berbentuk :
return
Jadi contoh diatas dapat ditulis :
void tampilkan_judul ()
{
     cout << “PT. Maju Mundur” << endl;
     cout << “Jl. Buntu No. 76” << endl;
     cout << “Yogyakarta” << endl;
     return;
}
Contoh program :

  
/**  
* -------------------------------  
* Contoh Pembuatan Fungsi  
* -------------------------------  
**/
#include <iostream.h> 
#include <conio.h> 
//prototipe fungsi 
void garis(); 
void tampilkan_judul(); 
//fungsi utama 
void main() 
 { 
   clrscr(); 
   tampilkan_judul(); 
   garis(); 
   getch(); 
 } 
//definisi fungsi 
void garis() 
{ 
   cout<<"=========================="<<endl; 
} 
void tampilkan_judul () 
{ 
cout << "PT. Maju Mundur" << endl; 
cout << "Jl. Buntu No. 76" << endl; 
cout << "Yogyakarta" << endl; 
return; 
} 


Hasil eksekusi :
PT. Maju Mundur
Jl. Buntu No. 76
Yogyakarta
==========================

Argumen fungsi
Argumen fungsi adalah nilai bawaan yang akan disertakan saat pemanggilan fungsi.

Contoh :
/**  
* -------------------------------  
* Argumen Fungsi  
* -------------------------------  
**/
#include <iostream.h> 
#include <conio.h> 
void cetak(int jum); 
void main() 
{ 
  clrscr(); 
  cetak(10); 
  getch(); 
} 

void cetak(int jum) 
{ 
for(int i = 1; i <= jum; i++) 
   cout<<i<<". Teks ini tercetak 10 kali"<<endl; 
} 


Hasil eksekusi :

1. Teks ini tercetak 10 kali
2. Teks ini tercetak 10 kali
3. Teks ini tercetak 10 kali
4. Teks ini tercetak 10 kali
5. Teks ini tercetak 10 kali
6. Teks ini tercetak 10 kali
7. Teks ini tercetak 10 kali
8. Teks ini tercetak 10 kali
9. Teks ini tercetak 10 kali
10. Teks ini tercetak 10 kali


Pada contoh diatas pada fungsi cetak mempunyai argumen fungsi bernama jum bertipe int. Pada pemanggilan fungsi cetak harus disertai dengan jumlah argumen yang akan diberikan pada saat fungsi dipanggil. cetak(10);
Contoh program yang mengandung fungsi untuk mencetak teks ditengah layar dan mencetak teks pada koordinat tertentu :
/**  
* -------------------------------  
* Contoh program mencetak teks
* ditengah layar   
* -------------------------------  
**/

#include <iostream.h> 
#include <conio.h> 
void hapus() 
{ 
  clrscr(); 
} 
void henti() 
{ 
  getch(); 
}
 
//prototipe fungsi mencetak pada koordinat tertentu 
void cetak(int klm, int brs, char *teks); 

//prototipe fungsi mencetak pada tengah layar 
void cetakc(int brs, char *teks); 

void main() 
{ 
  hapus(); 
  cetakc(1,"TULISAN INI TERCETAK DI TENGAH LAYAR"); 
  cetakc(2,"===================================="); 
  cetak(3,4,"Tulisan ini tercetak pada baris 4 kolom 3"); 
  henti(); 
} 
//definisi fungsi 
void cetak(int klm, int brs, char *teks) 
{ 
  gotoxy(klm,brs);cout<<teks; 
} 

void cetakc(int brs, char *teks) 
{ 
  gotoxy(40-strlen(teks)/2,brs);cout<<teks; 
} 


Hasil eksekusi :

TULISAN INI TERCETAK DI TENGAH LAYAR

====================================

Tulisan ini tercetak pada baris 4 kolom 3

Lingkup variabel
Lingkup variabel menentukan keberadaan suatu variabel tertentu dalam fungsi. Ada variabel yang hanya dikenal di suatu fungsi dan tidak dikenal pada fungsi lain. Namun ada juga variabel yang dapat diakses oleh semua fungsi.

Variabel Otomatis
Variabel yang didefinisikan di dalam suatu fungsi berlaku sebagai variabel lokal bagi fungsi. Artinya, variabel tersebut hanya dikenal didalam fungsi tempat variabel didefinisikan. Sifat dari variabel otomatis adalah :
  • Variabel akan diciptakan pada saat fungsi dipanggil dan variabel akan sirna pada saat fungsi berakhir.
  • Variabel hanya dikenal pada fungsi yang mendefinisikan.
Inisialisasi oleh pemrogram akan dikerjakan setiap kali fungsi dipanggil

Contoh program :

#include <iostream.h> 
#include <conio.h> 
void coba();      // Prototipe fungsi 
void main() 
{ 
int x = 22;             // Variabel lokal pada main() 
double y = 2.22; 
clrscr(); 
cout << "Pada fungsi main() : x = " << x 
<< " y = " << y << endl; 
coba();               // Panggil fungsi alpha 
cout << "Pada fungsi main() : x = " << x 
<< " y = " << y << endl; 
getch(); 
} 

// Definisi fungsi alpha() 

void coba() 
{ 

int x = 20;            // Variabel lokal pada coba() 
double y = 3.14; 
cout << "Pada fungsi coba() : x = " << x 
<< " y = " << y << endl; 
} 


Hasil ekseskusi :

Pada main() : x = 22 y = 2.22
Pada coba() : x = 20 y = 3.14
Pada main() : x = 22 y = 2.22

Variabel Eksternal

Variabel eksternal adalah variabel yang didefinisikan diluar fungsi manapun. Variabel ini dikenal juga sebagai variabel global, sebab variabel ini dikenal disemua fungsi. Contoh program :
#include <iostream.h> 
#include <conio.h> 
int nilai = 50;              // Variabel eksternal 
void tambah();               // Prototipe fungsi 
void main() 
{ 
  clrscr(); 
  cout << nilai << endl; 
  tambah(); 
  cout << nilai << endl; 
  tambah(); 
  cout << nilai << endl; 
  getch(); 
} 

// Definisi fungsi 
void tambah () 
{ 
nilai ++ ;       // Variabel eksternal dinaikkan 
} 


Hasil eksekusi :

50
51
52

Contoh program :

#include <iostream.h> 
#include <conio.h> 
int nilai = 50;              // Variabel eksternal 
void tambah();               // Prototipe fungsi 

void main() 
{ 
  clrscr(); 
  cout << nilai << endl; 
  tambah(); 
  cout << nilai << endl; 
  tambah(); 
  cout << nilai << endl; 
  getch(); 
} 

// Definisi fungsi 

void tambah () 

{ 

extern nilai;
nilai ++ ; // Variabel eksternal dinaikkan
}

Variabel Statis
Variabel eksternal maupun otomatis dapat berkedudukan sebagai variabel statis. Suatu variabel statis mempunyai sifat :
  • Jika variabel lokal berdiri sebagai variabel statis, maka :
- Variabel tetap hanya dapat diakses pada fungsi yang mendefinisikannya
- Variabel tidak hilang saat eksekusi fungsi berakhir
- Inisialisasi oleh pemrogram akan dilakukan sekali saja selama program dijalankan.
  • Jika variabel eksternal dijadikan sebagai variabel statis,variabel ini dapat diakses oleh semua file yang didefinisikan pada file yang sama dengan variabel eksternal tersebut.

Contoh program :


/**
* -------------------------------  
* Variabel Statik  
* -------------------------------  
**/
#include <iostream.h> 
#include <conio.h> 
void saya_ingat();    // Prototipe fungsi 

void main() 
{ 
  int mana = 50; 
  clrscr(); 
  saya_ingat(); 
  saya_ingat(); 
  saya_ingat(); 
  cout << " main()        : mana = " << mana << endl; 
  getch(); 
} 
// Pada fungsi berikut 
// mana didefinisikan sebagai variabel statis 
void saya_ingat() 
{ 
  static int mana = 77;   // variabel statis 
  mana ++;                // Naikkan sebesar 1 
  cout << " Saya_ingat () : mana = " << mana << endl; 
} 


Hasil eksekusi :

Saya_ingat () : mana = 78
Saya_ingat () : mana = 79
Saya_ingat () : mana = 80
main() : mana = 50

Fungsi Dengan Nilai Balik
Adalah fungsi yang memberikan nilai balik ke pemanggil fungsi.
Contoh :
// Prototipe funsi
long kuadrat (long l);
-------------------------------------
// Definisi fungsi
long kuadrat(long l)
{
return(l * l);
}

Pernyataan return di dalam fungsi digunakan untuk memberikan nilai balik fungsi. Pada contoh diatas, fungsi kuadrat() memberikan nilai balik berupa nilai kuadrat dari argumen.
Contoh program :

#include <iostream.h> 
#include <iomanip.h> 
#include <conio.h> 
long kuadrat(long l);   // prototipe fungsi 

void main() 
{ 
  clrscr(); 
  for ( long bil = 200; bil < 2000; bil+= 200 ) 
    cout << setw(8) << bil 
  << setw(8) << kuadrat(bil) << endl; 
  getch(); 
} 
// Definisi fungsi 
long kuadrat(long l) 
{ 
  return( l * l ); 
} 


Hasil eksekusi :
200 40000
400 160000
600 360000
800 640000
1000 1000000
1200 1440000
1400 1960000
1600 2560000
1800 3240000

Contoh program yang mengandung fungsi tanpa nilai balik dan fungsi dengan nilai balik :
/**
* -------------------------------  
* Contoh Program tanpa nilai balil
* -------------------------------  
**/
#include <iostream.h> 
#include <conio.h> 
#include <string.h> 
void judul(); 
char tanya(); 
void isi(); 
char huruf(float rat); 
void cetak(int a, int b, char *tek) 
{ 
  gotoxy(b,a);cout<<tek; 
}
 
void cetakc(int a, char *teks) 
{ 
  gotoxy(40-((strlen(teks)/2)),a);cout<<teks; 
} 

void main() 
{ 
  judul(); 
  isi(); 
  getch(); 
} 
void judul() 
{ 
  cetakc(1,"DAFTAR NILAI"); 
  cetakc(2,"PRODI TEKNIK INFORMATIKA");
  cetak(4,4,"===================================================================="); 
  cetak(5,4,"|"); 
  cetak(5,7,"No"); 
  cetak(5,10,"|"); 
  cetak(5,14,"NIM"); 
  cetak(5,21,"|"); 
  cetak(5,27,"N A M A"); 
  cetak(5,44,"|"); 
  cetak(5,46,"UTS"); 
  cetak(5,50,"|"); 
  cetak(5,52,"UAS"); 
  cetak(5,56,"|"); 
  cetak(5,58,"TUGAS"); 
  cetak(5,64,"|"); 
  cetak(5,66,"NILAI HRF"); 
  cetak(5,76,"|"); 
  cetak(6,4,"===================================================================="); 
} 

void isi() 
{ 
  int nim,uts,uas,tugas,tot; char nama[15],maxnm[15],minnm[15]; 
  float rata, maxnil,minnil,ratkelas,totrat; 
  char jawab; 
  static int i = 1; 
  maxnil=0;minnil=100;totrat=0; 
  do 
  { 
    gotoxy(4,6+i);cout<<"|"; 
    gotoxy(7,6+i);cout<<i; 
    gotoxy(10,6+i);cout<<"|"; 
    gotoxy(12,6+i);cin>>nim; 
    gotoxy(21,6+i);cout<<"|"; 
    gotoxy(23,6+i);cin>>nama; 
    gotoxy(44,6+i);cout<<"|"; 
    gotoxy(46,6+i);cin>>uts; 
    gotoxy(50,6+i);cout<<"|"; 
    gotoxy(52,6+i);cin>>uas; 
    gotoxy(56,6+i);cout<<"|"; 
    gotoxy(58,6+i);cin>>tugas; 
    gotoxy(64,6+i);cout<<"|"; 
    tot=uts+uas+tugas; 
    rata=tot/3; 
    totrat=totrat+rata; 
    ratkelas=totrat/i; 
    if (rata>maxnil) 
     { 
       maxnil=rata; 
       strcpy(maxnm,nama); 
     } 
   if (rata<minnil) 
    { 
     minnil=rata; 
     strcpy(minnm,nama); 
    } 
  gotoxy(69,6+i);cout<<huruf(rata); 
  gotoxy(76,6+i);cout<<"|"; 
  jawab=tanya(); 
  if (jawab=='t') 
   { 
     gotoxy(4,7+i); 
     cout<<"=============================================================="; 
     gotoxy(4,8+i);cout<<"Jumlah data : "<<i; 
     gotoxy(4,9+i);cout<<"Rata kelas  : "<<ratkelas; 
     gotoxy(4,10+i);cout<<"Nilai tertinggi : "<<maxnil; 
     gotoxy(30,10+i);cout<<"Nama : "<<maxnm; 
     gotoxy(4,11+i);cout<<"Nilai terendah  : "<<minnil; 
     gotoxy(30,11+i);cout<<"Nama : "<<minnm; 
   } 
    i++; 
   }
  while(jawab!='t'); 
  } 
char tanya() 
{ 
  char jw; 
  cetak(3,20,"Input data lagi[Y/T]? : "); 
  cin>>jw; 
  gotoxy(20,3);clreol(); 
  return(jw); 
} 
char huruf(float rat) 
{ 
  if (rat>80) 
    return('A'); 
  else if (rat>70) 
    return('B'); 
  else if (rat>60) 
    return('C'); 
  else if (rat>50) 
    return('D'); 
  else 
    return('E'); 
  }


Operator Resolusi Lingkup
Pada C++ terdapat operator dua buah tanda titik dua ( :: ). Operator ini disebut operator resolusi lingkup (scope resolution). Kegunaanya untuk mengakses variabel yang didefinisikan diluar suatu fungsi.
Contoh program :
/**
* -------------------------------  
* Contoh Resulusi Lingkup
* -------------------------------  
**/
#include <iostream.h>
#include <conio.h> 
int x = 50;            // Variabel eksternal 

void main() 
{ 
  double x;              // Definisi variabel lokal 
  clrscr(); 
  x = 5.678901234;   // Variabel lokal yang diberi nilai 
  cout << x << " " << ::x << endl; 
  ::x = 77;            // Variabel eksternal yang diberi nilai 
  cout << x << " " << ::x << endl; 
  getch(); 
} 

Hasil eksekusi :
5.6789 50
5.6789 77
Referensi
Referensi digunakan untuk memberikan nama alias dari variabel. Bentuk pendeklarasiannya : int &ref = nama_variable ;
Tanda & mengawali nama referensi.
Setelah pendeklarasian seperti diatas, ref menjadi nama alias dari nama_variabel. Penggubahan nilai terhadap nama_variabel dapat dilakukan melalui nama_variabel itu sendiri atau melalui referensi ref, sebagaimana dapat dilihat pada contoh dibawah ini.
Contoh program :
/**
* -------------------------------  
* Contoh Refrensi
* -------------------------------  
**/
#include <iostream.h> 
#include <conio.h> 
void main() 
{ 
 int i ; 
  int &r = i;     // Deklarasi referensi 
  clrscr(); 
  i =10; 
  cout << "i = " << i << endl; 
  cout << "r = " << r << endl; 
  r = 55; 
  cout << "i = " << i << endl; 
  cout << "r = " << r << endl; 
  getch(); 
} 

Hasil eksekusi :
i = 10
r = 1
i = 10
r = 55
Tampak bahwa pengubahan nilai terhadap i maupun r memberikan efek sama.
Operator juga bekerja pada suatu variabel maupun referensinya dengan efek yang sama. Contoh :
#include <iostream.h> 
#include <conio.h> 
void main() 
{ 
  int i  = 55; 
  int &r = i;     // Referensi 
  clrscr(); 
  cout << "i = " << i << " r = " <<  r  <<endl; 
  i ++ ; 
  cout << "i = " << i << " r = " << r << endl; 
  r ++ ; 
  cout << "i = " << i << " r = " << r << endl; 
  getch(); 
}

Hasil eksekusi :
i = 55 r = 55
i = 56 r = 56
i = 57 r = 57
Operator ++ pada i maupun r akan mengubah nilai keduanya, karena i dan r menyiratkan memori yang sama.
Dalam fungsi pengiriman argumen dapat bersifat berdasar nilai dan berdasar referensi. Pengiriman argumen berdasarkan nilai yaitu argumen yang dikirimkan dimaksudkan tidak untuk diubah
sekembalinya dari pemanggilan fungsi. Sedangkan pengiriman argumen berdasar referensi yaitu argumen yang dikirimkan dimaksudkan untuk diubah sekembalinya dari pemanggilan fungsi.

#include <iostream.h> 
#include <conio.h> 
void tukar(int a, int b); 

void main() 
{ 
  int nil1,nil2; 
  cout<<"Nilai 1 : "; 
  cin>>nil1; 
  cout<<"Nilai 2 : "; 
  cin>>nil2; 
  cout<<"Nilai 1 sebelum tukar : "<<nil1<<endl; 
  cout<<"Nilai 2 sebelum tukar : "<<nil2<<endl; 
  tukar(nil1,nil2); 
  cout<<"Nilai 1 sesudah tukar : "<<nil1<<endl; 
  cout<<"Nilai 2 sesudah tukar : "<<nil2<<endl; 
  getch(); 
} 

void tukar(int a, int b) 
{ 
  int tmp; 
  tmp = a; 
  a   = b; 
  b   = tmp; 
  cout<<"Nilai 1 dalam tukar : "<<a<<endl; 
  cout<<"Nilai 2 dalam tukar : "<<b<<endl; 
} 


Hasil eksekusi :
Nilai 1 : 10
Nilai 2 : 20
Nilai 1 sebelum tukar : 10
Nilai 2 sebelum tukar : 20
Nilai 1 dalam tukar : 20
Nilai 2 dalam tukar : 10
Nilai 1 sesudah tukar : 10
Nilai 2 sesudah tukar : 20

Pada contoh diatas fungsi tukar memiliki dua argumen fungsi yang pengirimannya berdasar nilai karena sekembali dari pemanggilan fungsi argumen yang dikirimkan nilainya tetap. Sehingga fungsi tukar diatas tidak menghasilkan nilai sesuai dengan yang diharapkan yaitu menukar kedua nilai yang dikirimkan. Untuk mengatasi permasalahan diatas maka argumen pada fungsi tukar dikirimkan secara referensi :

#include <iostream.h> 
#include <conio.h> 
void tukar(int &a, int &b); 

void main() 
{ 
  int nil1,nil2; 
  cout<<"Nilai 1 : "; 
  cin>>nil1; 
  cout<<"Nilai 2 : "; 
  cin>>nil2; 
  cout<<"Nilai 1 sebelum tukar : "<<nil1<<endl; 
  cout<<"Nilai 2 sebelum tukar : "<<nil2<<endl; 
  tukar(nil1,nil2); 
  cout<<"Nilai 1 sesudah tukar : "<<nil1<<endl; 
  cout<<"Nilai 2 sesudah tukar : "<<nil2<<endl; 
  getch(); 
} 

void tukar(int &a, int &b) 

{ 
  int tmp; 
  tmp = a; 
  a   = b; 
  b   = tmp; 
  cout<<"Nilai 1 dalam tukar : "<<a<<endl; 
  cout<<"Nilai 2 dalam tukar : "<<b<<endl; 
}


Hasil eksekusi :
Nilai 1 : 10
Nilai 2 : 20
Nilai 1 sebelum tukar : 10
Nilai 2 sebelum tukar : 20
Nilai 1 dalam tukar : 20
Nilai 2 dalam tukar : 10
Nilai 1 sesudah tukar : 20
Nilai 2 sesudah tukar : 10

Array sebagai argumen fungsi
Array dapat juga berkedudukan sebagai parameter dalam argumen fungsi :
/**
* -------------------------------  
* Contoh Array sebagai argumen fungsi
* -------------------------------  
**/

#include <iostream.h> 
#include <conio.h> 
const int brs = 10; 
const int klm = 10; 
void jumlah(int a[brs][klm],int b[brs][klm],int c[brs][klm], int jbr, int jkl); 
void main() 
{ 
  int mat_a[brs][klm], mat_b[brs][klm], mat_c[brs][klm]; 
  int br,kl; 
  clrscr(); 
  cout<<"Masukan jumlah Baris : "; 
  cin>>br; 
  cout<<"masukan Jumlah kolom : "; 
  cin>>kl; 
  for(int i=0;i<br;i++)   //input matrik A 
  { 
    for(int j=0;j<kl;j++) 
     { 
       cout<<" Matrik A["<<i<<"]["<<j<<"] = "; 
       cin>>mat_a[i][j]; 
     } 
  } 
  for(int i=0;i<br;i++)   //input matrik B 
  { 
    for(int j=0;j<kl;j++) 
     { 
       cout<<" Matrik B["<<i<<"]["<<j<<"] = "; 
       cin>>mat_b[i][j]; 
     } 
  } 
  jumlah(mat_a,mat_b,mat_c,br,kl); 
  clrscr(); 
  cout<<"Matrik A"<<endl;    //menampilkan matrik A 
  for(int i=0;i<br;i++) 
  { 
    for(int j=0;j<kl;j++) 
     { 
       cout<<mat_a[i][j]<<" "; 
     } 
    cout<<endl; 
  } 
  cout<<"\nMatrik B"<<endl;   //menampilkan matrik B 
  for(int i=0;i<br;i++) 
  { 
    for(int j=0;j<kl;j++) 
     { 
       cout<<mat_b[i][j]<<" "; 
     } 
    cout<<endl; 
  } 
  cout<<"\nMatrik C hasil penjumlahan"<<endl; 
  for(int i=0;i<br;i++)     //menampilkan matrik C 
  { 
  for(int j=0;j<kl;j++) 
  { 
    cout<<mat_c[i][j]<<" "; 
  } 
  cout<<endl; 
  } 
  getch(); 
} 
void jumlah(int a[brs][klm],int b[brs][klm],int c[brs][klm],int jbr, int jkl) 
{ 
  for(int i=0;i<jbr;i++) 
  { 
   for(int j=0;j<jkl;j++) 
    { 
     c[i][j]=a[i][j]+b[i][j]; 
    } 
  } 
} 


Inline Function
Inline function dengan cukup menyisipkan kata-kata inline didepan tipe nilai balik fungsi dalam pendefinisian fungsi. Contoh :
inline int jumlah (int x, int y)
{
return(x + y);
}
inline function disarankan dipakai pada fungsi yang sering dipanggil dan ukurannya kecil (terdiri satu atau dua pernyataan), terutama jika dilibatkan pada pernyataan pengulangan proses (while, for dan dowhile). Misalnya pada bentuk seperti berikut :
for (int i = 1; i < 100; i++)
cout << i << “.” << jumlah (i, 2 * i) << endl;

jika fungsi jumlah() tidak ditulis sebagai inline function, proses tersebut akan menjadi relatif lambat.
Contoh program :

/**  
* -------------------------------  
* Contoh Inline Function
* -------------------------------  
**/

#include <iostream.h> 
#include <conio.h> 
// Definisi fungsi sebagai inline 
inline int jumlah(int x, int y) 
{ 
  return(x + y ); 
} 

void main() 
{ 
  clrscr(); 
  for (int i = 1; i < 100; i ++ ) 
  cout << i << " . " << jumlah(i, 2 * i) << endl; 
  getch(); 
} 


Function Overloading

Function Overloading atau Overloading terhadap fungsi memungkinkan sebuah fungsi dapat menerima bermacam-macam tipe dan memberikan nilai balik yang bervariasi pula.
Contoh program :

/**  
* -------------------------------  
* Contoh Fungsi Overloading  
* -------------------------------  
**/
#include <iostream.h> 
#include <conio.h> 
// Prototipe fungsi 
int kuadrat (int i); 
long kuadrat(long l); 
double kuadrat(double d); 

void main() 
{ 
  cout << kuadrat(2) << endl; 
  cout << kuadrat(66666) << endl; 
  cout << kuadrat(1.2) << endl; 
  getch(); 
} 
// Definisi fungsi 
int kuadrat (int i) 
{ 
  return(i * i); 
} 

long kuadrat (long l) 
{ 
  return(l * l); 
} 

double kuadrat (double d) 
{ 
  return(d * d); 
} 

Hasil eksekusi :
4
149388260
1.44

Rekursi
Fungsi dalam C++ dapat dipakai secara rekursi, artinya suatu fungsi dapat memanggil fungsi yang merupakan dirinya sendiri. Penerapan rekursi diantaranya untuk menghitung nilai :
Xn
Dengan n merupakan bilangan bulat positif. Solusi dari persoalan ini berupa :
Jika n = 1 maka Xn = X
Selain itu : Xn = X * Xn – 1


Contoh program :
/**  
* -------------------------------  
* Contoh Rekursi  
* -------------------------------  
**/
#include <iostream.h> 
#include <conio.h> 
long int pangkat ( int x, int n); 
void main() 
{ 
  int x, y; 
  clrscr(); 
  cout << "Menghitung x ^ y "<< endl; 
  cout << "x = " ; 
  cin >> x ; 
  cout << "y = " ; 
  cin >> y ; 
  cout << x << " ^ " << y << " = " 
  << pangkat(x, y) << endl; 
  getch(); 
} 
long int pangkat(int x, int n) 
{ 
  if (n == 1 ) 
  return(x); 
  else 
  return(x * pangkat(x, n - 1)); 
} 

Hasil elsekusi :
Menghitung x ^ y
x = 3
y = 4
3 ^ 4 = 81

Komentar

Postingan populer dari blog ini

Kekuatan dan Kelemahan Tipe - Tipe Pokemon

Tipe - Tipe Pokemon Demam pokemon kian menginkat, buat kami yang gemar memainkannya mimin beri daftar kekuatan dan kelemahan tiap tipe pokemon agar membatu dalam battel di gym. tiap - tiap pokmon dikelompokan kedalam 18 tipe yang berbeda diantarnya  Normal, Fighting, Flying, Poison, Ground, Rock,Steel, Fire, Psychic, Ice,  Bug, Grass, Water, Electric, Ghost, Dragon, Fairy dan Drak Setiap Pokemon dapat memiliki satu atau dua Tipe sekaligus. Contoh, Pikachu merupakan Pokemon bertipe Electric, sedangkan Bulbasaur merupakan Pokemon dengan Tipe Grass sekaligus Poison. Ada total 151 Pokemon, 84 diantaranya hanya memiliki satu Tipe sedangkan 67 Pokemon memiliki dua Tipe. Pokemon yang tipenya sama, memiliki kekuatan dan kelemahan yang sama juga saat Battle. Misal, Pokemon Tipe Poison melawan Tipe Poison, damage yang akan diterima akan setara. Di sisi lain, Pokemon Tipe Water mampu melakukan attack dengan damage besar ke Pokemon Tipe Fire yang lemah terhadap ser...

Macam-Macam Topologi Jaringan Komputer

Klikartikel.com - Pengertian topologi jaringan komputer yaitu suatu teknik atau cara untuk menyambungkan komputer ke beberapa komputer sekaliguan menjadi suatu jaringan yang terkoneksi satu dengan yang lainya. Ada banyak jenis topologi jaringan komputer didunia ini namun yang paling sering digunakan ada 5 jenis jaringan yaitu topologi jaringan ring, topologi jaringan start, topologi jaringan bus, topologi jaringan mesh dan topologi jaringan tree. Berikut ini pembahasaan dari tipe - tipe topologi jaringan. 1. Topologi Ring Topologi ring yaitu teknik menyambungkan komputer dengan cara setiap komputer di hubungkan dengan komputer yang lain dan seterusnya sampai kembali ke komputer pertama yang nantinya akan membentuk seperti lingkaran sehingga topologi ini sering disebut dengan ring. Komputer 1 akan mengirim file atau berkomunikasi dengan komputer 4, maka data akan melewati komputer 2 dan komputer 3 sampai data diterima oleh komputer...

Crystal Report Error : Failed to load database infromation

Ketika menjalankan crystal report tiba - tiba terjadi error dengan pesan Failed to load database infromation, usut punya usut ternyata penyebabnya adalah windows 10. Gambar : Error Crystal Report Tapi tenang saja berikut ini saya akan bahas cara penyelesaianya Masuk ke file yourApp.exe.config. Cari code <?xml version="1.0" encoding="utf-8" ?> <configuration>     <startup>          <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />     </startup> </configuration> Ubah menjadi <?xml version="1.0"?> <configuration> <startup useLegacyV2RuntimeActivationPolicy="true"><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup> </configuration> Kemudian coba lagi jalankan print dengan crystal report.  Source http://stackoverflow.com/questions/15951142/appcrash-on-s...