Function Dalam Bahasa C++
FUNCTION
Fungsi adalah sekumpulan pernyataan yang mengambil input, melakukan perhitungan tertentu dan menghasilkan output. Idenya adalah untuk menyatukan beberapa tugas yang biasa atau berulang kali dilakukan dan membuat fungsi sehingga alih-alih menulis kode yang sama berulang kali untuk input yang berbeda, kita dapat memanggil fungsi tersebut.
Bentuk umum dari sebuah fungsi
#include <iostream>
using namespace std;
int max(int x, int y)
{
if (x > y)
return x;
else
return y;
}
int main() {
int a = 10, b = 20;
// Calling above function to find max of 'a' and 'b'
int m = max(a, b);
cout << "m is " << m;
return 0;
}
Output :
m is 20
Mengapa kita membutuhkan fungsi?
- Fungsi membantu kami dalam mengurangi redundansi kode. Jika fungsionalitas dilakukan di banyak tempat dalam perangkat lunak, maka daripada menulis kode yang sama, lagi dan lagi, kami membuat fungsi dan memanggilnya di mana-mana. Ini juga membantu dalam pemeliharaan karena kami harus mengubah di satu tempat jika kami membuat perubahan fungsi di masa mendatang.
- Fungsi membuat kode menjadi modular. Pertimbangkan file besar yang memiliki banyak baris kode. Menjadi sangat mudah untuk membaca dan menggunakan kode jika kode tersebut dibagi menjadi beberapa fungsi.
- Fungsi menyediakan abstraksi. Misalnya, kita dapat menggunakan fungsi perpustakaan tanpa mengkhawatirkan kerja internalnya.
Deklarasi Fungsi
Deklarasi fungsi memberi tahu kompiler tentang jumlah parameter yang diambil fungsi, tipe data parameter, dan tipe pengembalian fungsi. Menempatkan nama parameter dalam deklarasi fungsi adalah opsional dalam deklarasi fungsi, tetapi perlu untuk memasukkannya ke dalam definisi. Di bawah ini adalah contoh deklarasi fungsi. (nama parameter tidak ada dalam deklarasi di bawah ini).
// Fungsi untuk mengambil dua integer sebagai parameter
// dan mengembalikan sebuah integer and returns an integer
int max(int, int);
// Fungsi untuk mengambil sebuah pointer integer dan variabel integer sebagai parameter
// Dan mengembalikan sebuah pointer dengan tipe integer
int *swap(int*,int);
// Fungsi untuk mengambil sebuah parameter character
// dan mengembalikan variabel reference
char *call(char b);
// Fungsi untuk mengambil sebuah character dan integer sebagai parameter
// dan mengembalikan sebuah integer
int fun(char, int);
Selalu disarankan untuk mendeklarasikan suatu fungsi sebelum digunakan (Lihat ini, ini dan ini untuk detailnya). Di bahasa C, kita dapat melakukan deklarasi dan definisi di tempat yang sama, seperti yang dilakukan pada contoh program di atas. Bahasa C juga memungkinkan untuk mendeklarasikan dan mendefinisikan fungsi secara terpisah, ini terutama diperlukan dalam kasus fungsi perpustakaan. Fungsi perpustakaan dideklarasikan dalam file header dan didefinisikan dalam file perpustakaan. Di bawah ini adalah contoh deklarasi.
Parameter Passing to Function
- Parameter yang diteruskan ke fungsi disebut parameter aktual. Misalnya, dalam program di atas 10 dan 20 adalah parameter aktual.
- Parameter yang diterima oleh fungsi disebut parameter formal. Misalnya, dalam program di atas x dan y adalah parameter formal.
Ada dua cara paling populer untuk passing parameter, yaitu :
- Pass by Value : Dalam metode passing parameter ini, nilai parameter aktual disalin ke parameter formal fungsi dan kedua jenis parameter disimpan di lokasi memori yang berbeda. Jadi setiap perubahan yang dilakukan di dalam fungsi tidak tercermin dalam parameter pemanggil yang sebenarnya.
- Pass by Reference : Keduanya, parameter aktual dan formal merujuk ke lokasi yang sama, jadi setiap perubahan yang dibuat di dalam fungsi sebenarnya tercermin dalam parameter pemanggil yang sebenarnya.
Parameter selalu dilewatkan oleh nilai dalam C. Misalnya, dalam kode di bawah ini, nilai x tidak dimodifikasi menggunakan fungsi fun().
#include <iostream>
using namespace std;
void fun(int x) {
x = 30;
}
int main() {
int x = 20;
fun(x);
cout << "x = " << x;
return 0;
}
Output :
x = 20
Namun, di C, kita dapat menggunakan pointer untuk mendapatkan efek referensi lewat. Sebagai contoh, perhatikan program di bawah ini. Fungsi fun() mengharapkan pointer ptr ke integer (atau alamat integer). Ini mengubah nilai di alamat ptr. Operator dereference * digunakan untuk mengakses nilai pada sebuah alamat. Dalam pernyataan ‘*ptr = 30’, nilai pada alamat ptr diubah menjadi 30. Operator alamat & digunakan untuk mendapatkan alamat variabel dari tipe data apa pun. Dalam pernyataan pemanggilan fungsi 'fun(&x)', alamat x dilewatkan sehingga x dapat dimodifikasi menggunakan alamatnya.
#include <iostream>
using namespace std;
void fun(int *ptr)
{
*ptr = 30;
}
int main() {
int x = 20;
fun(&x);
cout << "x = " << x;
return 0;
}
Output :
x = 30
Berikut ini adalah beberapa poin penting tentang fungsi dalam C
1) Setiap program C memiliki fungsi yang disebut main() yang dipanggil oleh sistem operasi ketika pengguna menjalankan program.
2) Setiap fungsi memiliki tipe pengembalian. Jika suatu fungsi tidak mengembalikan nilai apa pun, maka void digunakan sebagai tipe pengembalian. Selain itu, jika tipe kembalian dari fungsi tersebut batal, kita masih dapat menggunakan pernyataan kembali di badan definisi fungsi dengan tidak menentukan konstanta, variabel, dll. dengannya, dengan hanya menyebutkan pernyataan 'return;' yang akan melambangkan penghentian fungsi seperti yang ditunjukkan di bawah ini :
void function name(int a)
{
....... //Function Body
return; //Function execution would get terminated
}
3) Dalam C, fungsi dapat mengembalikan semua jenis kecuali array dan fungsi. Kita bisa mengatasi batasan ini dengan mengembalikan pointer ke array atau pointer ke fungsi.
4) Daftar parameter kosong di C berarti daftar parameter tidak ditentukan dan fungsi dapat dipanggil dengan parameter apa pun. Di C, mendeklarasikan fungsi seperti fun() bukanlah ide yang baik. Untuk mendeklarasikan sebuah fungsi yang hanya dapat dipanggil tanpa parameter apapun, kita harus menggunakan “void fun(void)”. Sebagai catatan tambahan, dalam C++, daftar kosong berarti suatu fungsi hanya dapat dipanggil tanpa parameter apa pun. Dalam C++, baik void fun() dan void fun(void) adalah sama.
5) Jika dalam program C, suatu fungsi dipanggil sebelum deklarasinya maka kompiler C secara otomatis mengasumsikan deklarasi fungsi itu dengan cara berikut :
int nama fungsi();
Dan dalam hal itu, jika tipe pengembalian fungsi itu berbeda dari INT, kompiler akan menampilkan kesalahan.
Main Function
Fungsi utama adalah fungsi khusus. Setiap program C++ harus mengandung fungsi bernama main. Ini berfungsi sebagai titik masuk untuk program. Komputer akan mulai menjalankan kode dari awal fungsi utama.
Jenis-jenis fungsi utama (main function) :
- Main function tanpa parameter
// Without Parameters
int main()
{
...
return 0;
}
- Main function dengan parameter
// With Parameters
int main(int argc, char * const argv[])
{
...
return 0;
}
Alasan memiliki opsi parameter untuk fungsi utama adalah untuk mengizinkan input dari baris perintah. Saat Anda menggunakan fungsi utama dengan parameter, ia menyimpan setiap grup karakter (dipisahkan dengan spasi) setelah nama program sebagai elemen dalam array bernama argv.
Karena fungsi utama memiliki tipe pengembalian int, programmer harus selalu memiliki pernyataan pengembalian dalam kode. Nomor yang dikembalikan digunakan untuk menginformasikan program pemanggil apa hasil eksekusi program itu. Mengembalikan 0 menandakan bahwa tidak ada masalah.