Assalamu'alaikum...
   
  
  
   
    Sebuah fungsi berisi sejumlah pernyataan yang dikemas dalam sebuah nama. Nama ini kemudian dapat di panggil di dalam program utama.
   
  
  
   
    Tujuan pembuatan fungsi :
   
  
  
   
    - Memudahkan dalam mengembangkan program. Program dapat dipecah menjadi beberapa modul.
   
  
  
   
    - Menghemat ukuran program. Hal ini dapat dirasakan ketika ada beberapa deretan pernyataan yang sama yang digunakan di beberapa tempat dalam program.
   
  
   
  
   
    Gambar 1 diagram pemanggilan fungsi
   
  
  
   
    Untuk memahami Gambar 1, berikut sebuah contoh program yang menggunakan fungsi :
   
  
  
   
    #include<iostream>
    
#include<iomanip>
using namespace std;
   
    
     
void garis(); //prototipe fungsi garis()
   
    
    
    
    
    
     
int main(){
     
garis(); //memanggil fungsi garis ()
     
cout<<setiosflags(ios::left); //membuat rata kiri
cout<<setw(15)<<"Nama Barang" //setw() memberikan ruang untuk karakter/nilai
<<setw(15)<<"Harga"
<<"Jumlah Barang"<<endl;
garis(); //memanggil fungsi garis ()
     
cout<<setw(15)<<"Insto"
<<setw(15)<<"20.000"
<<10<<endl;
cout<<setw(15)<<"Baygon"
<<setw(15)<<"10.000"
<<20<<endl;
cout<<setw(15)<<"Kipas Dinding"
<<setw(15)<<"150.000"
<<10<<endl;
cout<<setw(15)<<"Tikar"
<<setw(15)<<"50.000"
<<20<<endl;
     
garis(); //memanggil fungsi garis ()
}
   
   
   
void garis(){ //fungsi garis ()
for(int i=0;i<50;i++)
cout<<'=';
cout<<endl;
}
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
  
  #include<iomanip>
using namespace std;
void garis(); //prototipe fungsi garis()
int main(){
garis(); //memanggil fungsi garis ()
cout<<setiosflags(ios::left); //membuat rata kiri
cout<<setw(15)<<"Nama Barang" //setw() memberikan ruang untuk karakter/nilai
<<setw(15)<<"Harga"
<<"Jumlah Barang"<<endl;
garis(); //memanggil fungsi garis ()
cout<<setw(15)<<"Insto"
<<setw(15)<<"20.000"
<<10<<endl;
cout<<setw(15)<<"Baygon"
<<setw(15)<<"10.000"
<<20<<endl;
cout<<setw(15)<<"Kipas Dinding"
<<setw(15)<<"150.000"
<<10<<endl;
cout<<setw(15)<<"Tikar"
<<setw(15)<<"50.000"
<<20<<endl;
garis(); //memanggil fungsi garis ()
}
void garis(){ //fungsi garis ()
for(int i=0;i<50;i++)
cout<<'=';
cout<<endl;
}
   
    Hasil eksekusi program :
   
  
   
  
   
    Gambar 2 output program fungsi
   
  
  
   
    Pada contoh program diatas, fungsi garis() digunakan untuk menampilkan karakter sama dengan (=) sebanyak 50. Fungsi tersebut dipanggil sebanyak tiga kali di dalam fungsi
    
     main().
    
   
  
  
   
    
     FUNGSI
    
   
  
  
   
    
     1. Prototipe fungsi
    
   
  
  
   
    Sebuah fungsi tidak dapat dipanggil kecuali sudah dideklarasikan. Deklarasi fungsi disebut juga sebagai prototipe fungsi. Prototipe ini berupa :
   
  
  - tipe nilai balik fungsi
- nama fungsi
- jumlah dan tipe argumen
- akhiri dengan ;
   
    Beberapa contoh prototipe fungsi :
   
  
  - int fungsi();
- int fungsi (int angka)
- float fungsi(float);
- void garis();
   
    dan masih banyak lagi.
   
  
  
   
    
     2. Definisi fungsi
    
   
   
   
   
   
   
   
  
  
   
    Setiap fungsi yang dipanggil didalam program harus didefinisikan. Letaknya bisa dimana saja. Contoh definisi fungsi :
   
   
   
   
   
  
  
   
    void garis(){
   
   
for(int i=0;i<50;i++)
cout<<'=';
cout<<endl;
}
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
  
  for(int i=0;i<50;i++)
cout<<'=';
cout<<endl;
}
   
    
     3. Fungsi dengan nilai balik (return) dan tanpa nilai balik
    
   
  
  
   
    Seperti contoh
    
     void garis()
    
    merupakan fungsi yang
    
     tidak memiliki nilai balik
    
    . Fungsi tersebut hanya untuk menampilkan keterangan saja. Pada fungsi tersebut terlihat bahwa tipe nilai balik yang digunakan adalah
    
     void
    
    .
   
  
  
   
    Fungsi dengan
    
     nilai balik
    
    yaitu fungsi yang menggunakan tipe nilai baliknya yaitu :
    
     int, long, float, double
    
    (semua tipe data selain void)
    
     .
    
    Fungsi ini dilengkapi dengan pernyataan
    
     return.
    
   
  
  
   
    
     int luas
     
      (int p, int l){
     
    
   
   
return ( p * l );
}
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
  
  return ( p * l );
}
   
    Pernyataan
    
     return
    
    pada fungsi digunakan untuk memberikan nilai balik fungsi. Pada contoh diatas, fungsi
    
     luas()
    
    memberikan nilai balik berupa
    
     nilai dari panjang * lebar
    
    dalam bentuk bilangan
    
     int
    
    (integer).
   
  
  
   
    Contoh program :
   
  
  
   
    #include<iostream>
   
   
using namespace std;
   
    
     
int luas(int p, int l);
   
    
     
int main()
{
int p, l;
cout<<"Program luas persegi"<<endl;
cout<<"Panjang : ";cin>>p;
cout<<"Lebar : ";cin>>l;
cout<<"Luas persegi : "<< luas ( p , l );
}
   
    
     
int luas (int p, int l)
{
cout<<"ini fungsi luas()"<<endl;
return (p*l);
cout<<"akhir ? ";
}
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
  
  using namespace std;
int luas(int p, int l);
int main()
{
int p, l;
cout<<"Program luas persegi"<<endl;
cout<<"Panjang : ";cin>>p;
cout<<"Lebar : ";cin>>l;
cout<<"Luas persegi : "<< luas ( p , l );
}
int luas (int p, int l)
{
cout<<"ini fungsi luas()"<<endl;
return (p*l);
cout<<"akhir ? ";
}
   
    Hasil eksekusi program :
   
  
  
   
    Terlihat bahwa string "ini fungsi luas()" ditampilkan terlebih dahulu baru kemudian "Luas persegi : 60". Setelah pernyataan
    
     return
    
    , pernyataan berikutnnya tidak dikerjakan.
   
  
  
   
    
     Lingkup Variabel
    
   
  
  
   
    Memahami tentang lingkup variabel dalam fungsi sangatlah pentiing. Lingkup variabel menetukan keberadaan suatu variabel didalm fungsi. Ada variabel yang hanya bisa dikenal di suatu fungsi ada juga yang bisa diakses oleh semua fungsi.
   
  
  
   
    
     Variabel Lokal
    
   
  
  
   
    Variabel jenis ini hanya dikenal di dalam fungsi dimana variabel didefinisiakan.
   
  
  
   
    Sifat variabel lokal :
   
  
  - variabel hanya diciptakan ketika fungsi dipanggil
- pada saat fungsi berakhir, variabel ini menjadi sirna
- hanya dapat diakses pada fungsi yang mendefinisikannya
   
    
     Variabel Global
    
   
  
  
   
    Variabel global merupakan kebalikan dari variabel lokal. Variabel ini di definisikan diluar fungsi manapun, sehingga dapat diakses oleh semua fungsi.
   
  
  
   
    Seandainya dalam suatu program terdapat variabel global, suatu fungsi bisa saja mendefinisikan variabel dengan nama yang sama (tipe bisa sama atau berlainan). Pada keadaan seperti itu maka variabel yang didefinisiakan secara lokal tidak ada kaitannya dengan variabel global.
   
  
  
   
    Contoh program variabel lokal dan global :
   
   
   
   
   
  
  
    
     #include<iostream>
    
    
using namespace std;
    
     
      
int awal = 10; //variabel global
    
     
      
void beda( );
    
     
      
int main( )
{
    
    
     
      
void beda ( )
{
int awal = 8; //variabel lokal
cout<<"Awal pada fungsi beda = "<<awal<<endl;
awal++;
     
    
    
}
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
   
  using namespace std;
int awal = 10; //variabel global
void beda( );
int main( )
{
     
      
       
        
         cout<<"Awal = "<<awal<<endl;
        
       
      
     
    
    
     
      
       
        awal++;       //kenaikan variabel awal yang global
       
      
     
    
    
     
      
       beda();
      
     
    
    
     
      
      
      
       cout<<"Awal sekarang = "<<awal<<endl;
      
     
    
    
     
      beda();
     
     
     
     
     
     
     
     
     
     
     
     
     
    
    
     }
    
    void beda ( )
{
int awal = 8; //variabel lokal
cout<<"Awal pada fungsi beda = "<<awal<<endl;
awal++;
}
Hasil eksekusi :
Dari hasil eksekusi terlihat jelas bahwa variabel lokal tidak mempengaruhi nilai variabel global.
   
    
     Variabel Statis
    
   
  
  
   
    Baik variabel lokal atau global bisa berkedudukan sebagai variabel statis. Variabel statis mempunyai sifat :
   
  
  
   
    - Jika variabel lokal berdiri sebagai variabel statis :
   
  
  - Variabel hanya dapat diakses pada fungsi yang didefinisikan
- variabel tidak hilang ketika eksekusi fungsi berakhir. Nilainya akan tetap dipertahankan, sehingga akan dikenali pada pemanggilan fungsi berikutnya.
- Inisialisasi oleh pemrogram akan dilakukan sekali saja selama program dijalankan. Jika tidak ada inisialisasi eksplisit maka variabel diisi nol.
   
    - Jika variabel global dijadikan variabel statis :
   
  
  - Dapat diakses oleh semua file yang didefinisikan pada file yang sama dengan variabel global tersebut.
   
    Variabel statis di dapat dengan menambahkan kata
    
     static
    
    di depan tipe variabel.
   
  
  Contoh program :
    
     
      #include<iostream>
     
    
    
using namespace std;
    
     
      
       
        
         
         
         
        
       
      
      
       
        
         
          
void beda( );
      
       
        
         
          
int main( )
      
       
        
         
          
void beda ( )
      
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
   
   
   
   using namespace std;
       
        
         int awal = 10; //variabel global
        
       
      
      void beda( );
int main( )
       
        
         {
        
       
      
      
       
        
         
          
           
            cout<<"Awal = "<<awal<<endl;
           
          
         
        
       
      
      
       
        
         
          
           awal++;       //kenaikan variabel awal yang global
          
         
        
       
      
      
       
        
         
          beda();
         
        
       
      
      
       
        
         
         
         
          cout<<"Awal sekarang = "<<awal<<endl;
         
        
       
      
      
       
        
         
          beda();
         
        
       
      
      
       
        
         }
        
       
      
      void beda ( )
       
        
         {
        
       
      
      
       
        
         
          static int awal = 8; //variabel lokal
         
        
       
      
      
       
        
         cout<<"Awal pada fungsi beda = "<<awal<<endl;
        
       
       
awal++;
      awal++;
       
        
         }
        
       
      
     
    
     Hasil eksekusi :
    
   
   
    
     Lihat terjadi perubahan nilai awal pada fungsi
     
      beda()
     
     . Nilai terakhir dari variabel awal pada fungsi
     
      beda()
     
     disimpan sehingga bukan 8 lagi. Perhatikan perbedaan dengan contoh program sebelumnya (tanpa menambahkan
     
      static
     
     ) sengaja saya samakan programnya agar terlihat jelas perbedaannya.
    
   
   
    
     Pada fungsi juga bisa diberikan nilai bawaan.
    
   
   
    
     Contoh program :
    
   
   
    
     
      #include<iostream>
      
using namespace std;
    
     
      
       
int penjumlahan(int angka_1, int angka_2);
    
     
      
      
      
     
    
    
    
     
      
       
       
       
      
     
    
    
    
     
      
       
int main( )
{
int angka_1,angka_2;
cout<<"Angka 1 awal : ";cin>>angka_1;
    
     
      
       
       
       
      
     
    
    
     
      
       
       
       cout<<angka_1 <<" + "<< angka_2 <<" = "<<penjumlahan(angka_1,angka_2)<<endl;
       
        //1
       
       
cout<<angka_1 <<" - "<< angka_2 <<" = "<<pengurangan(angka_1,angka_2)<<endl; //2
    
       
       
       
       
       
      
      
       cout<<"Angka 1 akhir : "<<angka_1<<endl;
       
cout<<"angka 2 akhir : "<<angka_2<<endl;
       
}
    
     
      
       
int penjumlahan (int angka_1, int angka_2)
{
return angka_1 + angka_2;
}
int pengurangan (int i, int j)
{
return i - j;
}
int perkalian(int angka_1, int angka_2)
{
angka_2 = 5; //perubahan angka_ 2 menjadi 5
return angka_1 * angka_2;
}
  using namespace std;
int penjumlahan(int angka_1, int angka_2);
     
      
       int pengurangan (int i, int j);
      
     
    
    
     
      
       int perkalian(int angka_1, int angka_2);
      
     
    
    
    
    int main( )
{
int angka_1,angka_2;
cout<<"Angka 1 awal : ";cin>>angka_1;
     
      
       cout<<"Angka 2 awal : ";cin>>angka_2;
      
     
    
    cout<<angka_1 <<" - "<< angka_2 <<" = "<<pengurangan(angka_1,angka_2)<<endl; //2
     
      
       
        
        
        cout<<angka_1 <<" * "<< angka_2 <<" = "<<perkalian( 3 , angka_2 )<<endl;
       
      
      
       
        //3
       
      
     
    
    
     
      cout<<"angka 2 akhir : "<<angka_2<<endl;
}
int penjumlahan (int angka_1, int angka_2)
{
return angka_1 + angka_2;
}
int pengurangan (int i, int j)
{
return i - j;
}
int perkalian(int angka_1, int angka_2)
{
angka_2 = 5; //perubahan angka_ 2 menjadi 5
return angka_1 * angka_2;
}
Hasil eksekusi program :
 
  
   
    Gambar 3 output program fungsi dengan nilai bawaan
   
  
  1. penjumlahan(angka_1,angka_2), pada fungsi tersebut nilai yang dibawa yaitu 8 dan 8
2. pengurangan(angka_1,angka_2), angka_1 nilainya dilempar ke variabel i dan angka_2 ke variabel j sehingga i - j akan sama dengan angka_1 - angka_2
3 . perkalian( 3 , angka_2 ), pada fungsi ini nilai 3 dan angka_2 yang dilempar ke variabel angka_1 dan angka_2 pada fungsi perkalian() . Sehingga nilai balik dari angka_1 * angka_2 pada fungsi perkalian() memberikan nilai 3 * 5 = 15 . Kenapa bukan 3 * 8 ? karena angka_2 diberi nilai sama dengan 5 di dalam fungsi tersebut .
4. angka_1 dan angka_2 pada fungsi main() tidak terjadi perubahan apapun .
Nah segitu dulu mengenai fungsi pada C++.
Semoga bermanfaat. Terimakasih...
