Wednesday, April 9, 2014

Fungsi Buatan dan Fungsi Rekursif Dalam C++

Fungsi Buatan

Fungsi buatan merupakan sekumpulan pernyataan yang berdiri sendiri dan terbuat untuk melaksanakan tugas-tugas tertentu. Fungsi buatan adalah fungsi – fungsi yang dibuat oleh seseorang pemrogram untuk melaksanakan tugas tertentu. Diantara fungsi-fungsi ini, terdapat satu buah fungsi yang memenggang peranan terpenting, yaitu main( ). Fungsi ini sifatnya khusus sekali, karene merupakan fungsi yang pertama sekali dicari oleh compiler pada saat program dieksekusi. Jika tidak ada, compiler akan memberikan pesan kesalahan bahwa program tidak memiliki main ( ). Selain itu main() adalah sebuah kata kunci yang memiliki arti khusus, tidak boleh diubah dengan nama lain, dan harus dituliskan dengan huruf kecil.

Contoh program
#include <iostream>
using namespace std;
long faktorial(int n)
{
    int i;
    long f = 1;
    for (i=2;i<=n;i++)
        f *=i;
    return f;
}
int main()
{
    long f;
    int bil;
    cout<<"Menghitung faktorial.\n";
    cout<<"Berikan sebuah bilangan bulat: ";
    cin>>bil;
    f = faktorial(bil);
    cout<<bil<<"! = "<<f;
    return 0;

}



Fungsi Rekursif

Fugsi rekursif adalah fungsi yang untuk melaksanakan suatu tugas tertentu, kembali memanggil dirinya sendiri. Fungsi rekursif menangani variable dan argumennya melalui tumpukan (stack), sehingga sebuah fungsi rekursif akan memerlukan waktu dan memori yang lebih banyak. Karena itu, dalam hal efisiensi pemakaian waktu dan memori, pemrograman lebih cenderung untuk menggunakan fungsi iterative.

            Agar sebuah fungsi tidak melakukan pengulangan pemanggilan secara terus-menerus, maka harus diberi beberapa syarat. Syarat-syarat rekursif :
1.      Harus ada kasus penghentian (termination case)
2.      Setiap struktur pemanggilan harus lebih sederhana daripada struktur sebelumnya
Contoh program:
#include <iostream>
using namespace std;
int main()
{
    int m, n;
    long pangkat(int, int);
    cout<<"Berikan bilangan dan eksponen: ";
    cin>>m>>n;
    cout<<m<<" pangkat p"<<n<<" = "<<pangkat(m, n);
    return 0;
}
long pangkat (int m, int n)
{
    long p;
    if (n==0)
        p = 1;
    else
        p = m * pangkat(m, n-1);
    return p;
}



No comments:

Post a Comment