Pengertian Function Prototype

Posted on   Februari 22, 2018   |   Last Modified   Februari 22, 2018
Function Prototype

Pernyataan Function Prototype

Function Prototype adalah sebuah pernyataan deklarasi function tanpa menggunakan badan atau definisi dari function dan di akhiri dengan semicolon ;. Function prototype berfungsi memberitahukan kepada kompiler bahwa function tersebut ada.

Contoh program bermasalah :

#include <iostream>

int main()
{
    std::cout<<welcomeBanner();
    return 0;
}

std::string  welcomeBanner(){
    return "www.belajarcpp.com";
}

Mungkin kalian berpikiran bahwa program di atas baik-baik saja. Dan memproduksi program yang dapat mengeluarkan keluaran berupa string :

www.belajarcpp.com

tapi faktanya bahwa contoh program di atas bahkan tidak bisa dikompilasi. Karena terdapat kesalahan yang kompiler tidak bisa atasi. Mungkin keluhan kesalahan pada beberapa kompiler akan berbeda-beda tapi intinya tetap sama yaitu bahwa kompiler tidak mengenal function dengan identitas welcomeBanner().

Kita harus mengerti bahwa kompiler membaca kode kita, baris-perbaris dari atas ke bawah. Alasan dari pesan error tersebut karena penulis menuliskan program, menggunakan function welcomeBanner() terlebih dahulu sebelum dibuat. Dan itulah alasan kenapa kompiler tidak mengenal function tersebut. hanya karena function belum terbuat.

Solusi dari permasalahan tersebut cukup mudah, yaitu memindahkan deklarasi dan definisi function sebelum function utama int main.

#include <iostream>

std::string  welcomeBanner(){
    return "www.belajarcpp.com";
}
int main()
{
    std::cout<<welcomeBanner();
    return 0;
}

Dengan cara menaruh semua function kustom kita sebelum function utama akan menyelesaikan permasalahan tersebut. tapi hal tersebut tidak akan selalu menjadi solusi.

Mungkin cara di atas adalah cara yang relative mudah saat membuat program yang tidak besar. Tapi hal tersebut mungkin akan menjadi masalah di kedepanya ketika program itu berkembang menjadi besar. Masalah tersebut adalah akan timbulnya kesulitan pada perawatan program terutama dalam perawatan function, kemungkinan kita akan susah untuk mamanggil (menggunakan) function kustom di dalam function kustom kita.

Asumsikan bahwa kita memiliki 2 function kustom dengan nama a dan b. dengan letak menurut urutan alphabet. Dalam kasus tersebut kita masih dimungkinkan untuk memanggil function kustom a dari function kustom b. karena function a didirikan sebelum di panggil.

Tapi bagaimana jika function a memanggil b. hal tersebut akan menghasilkan keluhan dari kompiler karena b digunakan dan belum dibuat. Meskipun kita membalikan tata letak function dengan urutan b terlebih dahulu. Hal itu sama saja kita membalikan masalah kita.

Dari hal tersebut, bagaimana jika kedua function tersebut saling memanggil, dalam khasus ini, kita tidak bisa memutuskan function mana yang harus didirikan dahulu, dan mungkin masalah ini tidak akan pernah berakhir.

Dari semua permasalahan di atas, hal itu dapat merupakan alasan kenapa fitur function prototype itu ada.

Function prototype adalah pernyataan dari deklarasi function, yang terdiri dari retun type, identitas, parameter dan tanpa badan dari function (definisi). Karena merupakan pernyataan maka mendirikan function prototype harus di akhiri dengan semicolon ;.

Bentuk umum penulisan

tipeReturn identitas(Parameter);

untuk mendirikan pernyataan tersebut wajib dilakukan sebelum function utama.

Pernyataan Function prototype berfungsi untuk memperkenalkan kepada kompiler bahwa function tersebut ada. Dan memperbolehkan semua pemanggilan jika di suatu baris selanjutnya ada baris yang mencoba memanggil function tersebut.

Tugas untuk kompiler hanyalah untuk memperbolehkan dan melanjutkan kompilasi untuk menemukan definisi dari pernyataan deklarasi function prototype.

Ketika kita sudah mendirikan function (prototype), kita diwajibkan membuat definisi function. Untuk bentuk dari function (definisi) sama sekali tidak ada perubahan meskipun terdapat function prototype (masih akan seperti mendirikan function seperti biasanya). Hal yang perlu kita perhatikan hanyalah kesamaan dari deklarasi pada function prototype dan deklarasi pada definisi function.

Contoh penulisan

//Function prototype
int myFunction(int x, int y);

//Definisi Function
int myFunction(int x,int y){
//..definisi..
}

Untuk tata letaknya definisi function kita dibebaskan meletakan dimanapun tapi harus tetap mengikuti peraturan yang ada, yaitu kita tidak boleh meletakanya sebelum function prototype dan pastinya harus berada pada file yang masih berhubungan.

Kebanyakan programmer melakukan definisi dari function dilakukan setelah function utama.

Contoh Program

#include <iostream>
using namespace std;

void cetakPesan();
int tambah(int a, int b);

int main () {
    cetakPesan();
    cout<<"tambah(5,6) = "<<tambah(5,6)<<endl;

    return 0;
}

void cetakPesan (){
    cout<<"Belajar C++"<<endl<<endl;
}

int tambah (int a, int b){
    return a+b;
}

Dalam C/C++ kita dimungkinkan mendirikan function prototype tidak menggunakan identitas pada parameter yang ada.

int tambah (int a, int b); //dimungkinkan
int tambah (int, int); //dimungkinkan

function prototype hanya bekerja untuk memperkenalkan deklarasi function bahwa function itu ada, kepada kompiler. kompiler kanya cukup tau mengenai tipe return, identitas function, dan urutan tipe data dari parameternya.

Anda bebeas memilih menurut selera anda, tapi jika penulis sendiri lebih suka menggunakan identitas pada parameter, dengan tujuan untuk mempermudah programmer memahami kode tersebut.


Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *