Popular Post

Posted by : Anak Jadul Ingin Pintar 28/12/11

Sebelum digunakan (dipanggil), suatu fungsi harus dideklarasikan dan didefinisikan terlebih dahulu. Bentuk
umum pendeklarasian fungsi adalah :
tipe_fungsi nama_fungsi(parameter_fungsi);
Sedangkan bentuk umum pendefinisian fungsi adalah :
Tipe_fungsi nama_fungsi(parameter_fungsi)
{
statement
statement
………...
………...
}

􀀛 Hal-hal yang perlu diperhatikan dalam penggunaan fungsi :
♦ Kalau tipe fungsi tidak disebutkan, maka akan dianggap sebagai fungis dengan nilai  
   keluaran bertipe integer.
♦ Untuk fungsi yang memiliki keluaran bertipe bukan integer, maka diperlukan pendefinisian
   penentu tipe fungsi.
♦ Untuk fungsi yang tidak mempunyai nilai keluaran maka dimasukkan ke dalam tipe void
♦ Pernyataan yang diberikan untuk memberikan nilai akhir fungsi berupa pernyataan return.
♦ Suatu fungsi dapat menghasilkan nilai balik bagi fungsi pemanggilnya.

Contoh Program 1 :
#include <iostream.h>
#include <conio.h>
float tambah (float x, float y); /* prototype fungsi tambah(), ada titik koma */
void main ( )
{
float a, b, c;
clrscr ( );
cout << “A = “; cin >> a;
cout << “B = “; cin >> b;
c = tambah (a, b);  /* pemanggilan fungsi tambah() */
cout << “A + B = ” <<  c;
getch ( );
}
float tambah(float x, float y) /* Definisi fungsi , tanpa titik koma */
{
return (a+b); /* Nilai balik fungsi */
}

Contoh Program 2 :
/* Program menghitung nilai factorial */
#include <iostream.h>
#include <conio.h>
long int factorial (int N); /* prototype fungsi factorial() */
void main ( )
{
int N;
long int fak;
cout << “Berapa factorial ? “;
cin >> N;
fak = factorial (N); /* pemanggilan fungsi factorial() */
cout << N << ” factorial = ” << fak;
getch ( );
}
long int factorial (int N) /* definisi fungsi factorial */
{
int I;
long int F = 1;
if (N<=0)
return (0);
for (I=2; I<=N; I++)
F = F * I;
return (F);
}

􀀛 Parameter Formal dan Parameter Aktual
♦ Parameter Formal adalah variabel yang ada pada daftar parameter dalam definisi fungsi.
♦ Parameter Aktual adalah variabel (parameter) yang dipakai dalam pemanggilan fungsi.

Dalam contoh program pertambahan di atas parameter formal terdapat pada pendefinisisan fungsi :
float tambah(float x, float y)  //parameter formal
{
    return (a+b);
}
Sedangkan parameter aktual terdapat pada pemanggilan fungsi :
void main ( )
{
……………
…………..
c = tambah(a, b);  //parameter aktual
…………..
}

Cara Melewatkan Parameter
Cara melewatkan suatu parameter dalam Bahasa C++ ada dua cara yaitu :
♦ Pemanggilan Secara Nilai (Call by Value)
􀀵 Call by value akan menyalin nilai dari parameter aktual ke parameter formal.
􀀵 Yang dikirimkan ke fungsi adalah nilai dari datanya, bukan alamat memori letak dari datanya.
􀀵 Fungsi yang menerima kiriman nilai akan menyimpannya di alamat terpisah dari nilai aslinya
    yang digunakan oleh bagian program yang memanggil fungsi.
􀀵 Perubahan nilai di fungsi (parameter formal) tidak akan merubah nilai asli di bagian program
    yang memanggilnya.
􀀵 Pengiriman parameter secara nilai adalah pengiriman searah, yaitu dari bagian program yang
    memanggil fungsi ke fungsi yang dipanggil.
􀀵 Pengiriman suatu nilai dapat dilakukan untuk suatu ungkapan, tidak hanya untuk sebuah
    variabel, elemen array atau konstanta saja.



Contoh Program :
#include <iostream.h>
#include <conio.h>
void tukar (int x, int y); /* pendeklarasian fungsi */
void main ( )
{
int a,b;
clrscr ( );
a = 15;
b = 10;
cout << “Nilai sebelum pemanggilan fungsi \n”;
cout << “a =  “ << a << “, b =  ” << b; // a dan b sebelum pemanggilan fungsi
tukar (a,b); /* pemanggilan fungsi tukar() */
cout << ”Nilai setelah pemanggilan fungsi \n”;
cout << “a =  “ << a << “, b =  ” << b; // a dan b setelah pemanggilan fungsi
getch ( );
}
void tukar(int x, int y) /* Pendefinisian fungsi tukar() */
{
int z; /* variabel sementara */
z = x;
x = y;
y = z;
cout << “Nilai di akhir fungsi tukar() \n”;
cout << “x =  “ << x << “, y =  ” << y;
}
♦ Pemanggilan Secara Referensi (Call by Reference)
􀀵 Pemanggilan secara Referensi merupakan upaya untuk melewatkan alamat dari suatu variabel
    ke dalam fungsi.
􀀵 Yang dikirimkan ke fungsi adalah alamat letak dari nilai datanya, bukan nilai datanya.
􀀵 Fungsi yang menerima kiriman alamat ini makan menggunakan alamat yang sama untuk
    mendapatkan nilai datanya.
􀀵 Perubahan nilai di fungsi akan merubah nilai asli di bagian program yang memanggil fungsi.
􀀵 Pengiriman parameter secara referensi adalah pengiriman dua arah, yaitu dari fungsi pemanggil
    ke fungsi yang dipanggil dan juga sebaliknya.
􀀵 Pengiriman secara acuan tidak dapat bdilakukan untuk suatu ungkapan.
#include <iostream.h>
#include <conio.h>
void tukar (int &x, int &y); /* pendeklarasian fungsi */
void main ( )
{
int a,b;
clrscr ( );
a = 15;
b = 10;
cout << “Nilai sebelum pemanggilan fungsi \n”;
cout << “a =  “ << a << “, b =  ” << b; // a dan b sebelum pemanggilan fungsi
tukar (a,b); /* pemanggilan fungsi tukar() */
cout << ”Nilai setelah pemanggilan fungsi \n”;
cout << “a =  “ << a << “, b =  ” << b; // a dan b setelah pemanggilan fungsi
getch ( );
}
void tukar(int &x, int &y) /* Pendefinisian fungsi tukar() */
{
int z; /* variabel sementara */
z = x;
x = y;
y = z;
cout << “Nilai di akhir fungsi tukar() \n”;
cout << “x =  “ << x << “, y =  ” << y;
}

􀀛 Penggolongan Variabel berdasarkan Kelas Penyimpanan (Storage Class)
♦ Variabel lokal
   Variabel lokal adalah variabel yang dideklarasikan di dalam fungsi.
    Sifat-sifat variabel lokal :
􀀵 Secara otomatis akan diciptakan ketika fungsi dipanggil dan akan lenyap ketika proses eksekusi
    terhadap fungsi berakhir.
􀀵 Hanya dikenal oleh fungsi tempat variabel dideklarasikan
􀀵 Tidak ada inisialisasi secara otomatis (saat variabel diciptakan nilainya random).
􀀵 Dideklarasikan dengan menambahkan kata “auto” (opsional).

♦  Variabel global (eksternal)
    Variabel global (eksternal) adalah variabel yang dideklarasikan di luar fungsi.
    Sifat-sifat variabel global :
􀀵 Dikenal (dapat diakses) oleh semua fungsi.
􀀵 Jika tidak diberi nilai awal secara otomatis berisi nilai nol.
􀀵 Dideklarasikan dengan menambahkan kata “extern” (opsional).

Contoh Program :
#include <iostream.h>
#include <conio.h>
void tampil(void);
int i = 25; /* variabel global */
void main ( )
{
clrscr ( );
cout << “Nilai variabel i dalam fungsi main() adalah ” << i;
tampil ( );
i = i * 4; /* nilai i yang dikali 4 adalah 25 (global) bukan 10 */
cout << “\n Nilai variabel i dalam fungsi main ( ) sekarang adalah “ <<  i;
getch ( );
}
void tampil(void)
{
int i = 10; /* variabel lokal */
cout << “Nilai variabel i dalam fungsi tampil() adalah” << i;
}

♦ Variabel Statis
   Variabel statis adalah variabel yang nilainya tetap dan bisa berupa variabel lokal (internal) dan
   variabel global (eksternal).
   Sifat-sifat variabel statis :
􀀵 Jika bersifat internal (lokal), maka variabel hanya dikenal oleh fungsi tempat variabel
    dideklarasikan.
􀀵 Jika bersifat eksternal (global), maka variabel dapat dipergunakan oleh semua fungsi yang
    terletak pada program yang sama.
􀀵 Nilai variabel statis tidak akan hilang walau eksekusi terhadap fungsi telah berakhir.
􀀵 Inisialisasi hanya perlu dilakukan sekali saja, yaitu pada saat fungsi dipanggil pertama kali.
􀀵 Jika tidak diberi nilai awal secara otomatis berisi nilai nol.
􀀵 Dideklarasikan dengan menambahkan kata “static”.

♦ Variabel Register
   Variabel Register adalah variabel yang nilainya disimpan dalam resister dan bukan
   dalam memori RAM.
   Sifat-sifat variabel register :
􀀵 Hanya dapat diterapkan pada variabel lokal yang bertipe int dan char.
􀀵 Digunakan untuk mengendalikan proses perulangan (looping).
􀀵 Proses perulangan akan lebih cepat karena variabel register memiliki kecepatan yang lebih  
    tinggi dibandingkan variabel biasa.
􀀵 Dideklarasikan dengan menambahkan kata “register”.

Contoh Program :
#include  <iostream.h>
#include <conio.h>
void main ( )
{
register int x; /* variabel register */
int jumlah;
clrscr ( );
for (i=1; i<=100; i++)
jumlah = jumlah + I;
printf(“1+2+3+…+100 = %i\n”, jumlah);
getch ( );
}
􀀛 Fungsi Rekursif
Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri.
Contoh Program :
#include <iostream.h>
#include <onio.h>
long int faktorial(int N); /* prototype fungsi faktorial */
void main()
{
int N;
cout << Berapa factorial ? “; cin >> N;
cout << “Faktorial dari ” << N << ” =  ” << faktorial(N);
getch ( );
}
long int faktorial(int N) /* definisi fungsi factorial */
{
if(N==0)
return(1);
else
return(N * faktorial(N - 1)); // fungsi faktorial() memanggil fungsi factorial()
}

LATIHAN 7
1. Buat fungsi untuk menentukan apakah suatu bilangan bulat bersifat ganjil atau genap. Jika genap
    maka fungsi menghasilkan nilai 1, dan 0 untuk selainnya.
2. Buatlah fungsi menjumlahkan bilangan 1,2,3, ….., n secara rekursif.
3. Buatlah Program untuk menghitung jarak maksimum (xmax) dan ketinggian maksimum (hmax)
    dari sebuah peluru yang ditembakkan dengan sudut elevasi A. Anggap g = 10 m/s2 (Gunakan
    fungsi sin() dan cos() )

Leave a Reply

Salam AJIP (Anak Jadul Ingin Pintar)

Subscribe to Posts | Subscribe to Comments

- Copyright © Anak Jadul Ingin Pintar - Powered by Universitas Esa Unggul