Fungsi-Fungsi Pemrograman C Contoh : Rekursif & Inline
โก Ringkasan Cerdas
Fungsi dalam pemrograman C adalah blok kode yang dapat digunakan kembali yang membagi program besar menjadi subprogram yang lebih kecil, sehingga lebih mudah dipahami, diuji, dan dimodifikasi. Setiap fungsi memiliki bagian deklarasi, definisi, dan pemanggilan.

Apa itu Fungsi di C?
Fungsi dalam pemrograman C Fungsi adalah blok kode yang dapat digunakan kembali yang membuat program lebih mudah dipahami, diuji, dan dapat dimodifikasi dengan mudah tanpa mengubah program pemanggil. Fungsi membagi kode dan memodularisasi program untuk hasil yang lebih baik dan efektif. Singkatnya, program yang lebih besar dibagi menjadi berbagai subprogram yang disebut sebagai fungsi.
Saat Anda membagi program besar menjadi beberapa fungsi, akan lebih mudah untuk mengelola setiap fungsi satu per satu. Setiap kali terjadi kesalahan pada program, Anda dapat dengan mudah menyelidiki fungsi yang salah dan hanya memperbaiki kesalahan tersebut. Anda dapat dengan mudah memanggil dan menggunakan fungsi kapan pun diperlukan yang secara otomatis menghemat waktu dan ruang.
Perpustakaan Vs. Fungsi yang Ditentukan Pengguna
Setiap program 'C' memiliki setidaknya satu fungsi yang merupakan fungsi utama, namun sebuah program dapat memiliki sejumlah fungsi. Fungsi main() pada C merupakan titik awal suatu program.
Dalam pemrograman 'C', fungsi dibagi menjadi dua jenis:
- Fungsi perpustakaan
- Fungsi yang ditentukan pengguna
Perbedaan antara fungsi perpustakaan dan fungsi yang ditentukan pengguna di C adalah kita tidak perlu menulis kode untuk fungsi perpustakaan. Itu sudah ada di dalam file header yang selalu kami sertakan di awal program. Anda hanya perlu mengetikkan nama suatu fungsi dan menggunakannya beserta sintaksis yang tepat. Printf, scanf adalah contoh fungsi perpustakaan.
Sedangkan fungsi yang ditentukan pengguna adalah jenis fungsi di mana kita harus menulis isi fungsi dan memanggil fungsi tersebut setiap kali kita memerlukan fungsi tersebut untuk melakukan beberapa operasi dalam program kita.
Fungsi yang ditentukan pengguna dalam C selalu ditulis oleh pengguna, tetapi nantinya dapat menjadi bagian dari pustaka 'C'. Ini merupakan keuntungan utama pemrograman 'C'.
Fungsi pemrograman C dibagi menjadi tiga aktivitas seperti,
- Deklarasi fungsi
- Definisi fungsi
- Panggilan fungsi
Deklarasi Fungsi
Deklarasi fungsi berarti menulis nama suatu fungsi dalam program. Ini merupakan bagian wajib untuk menggunakan fungsi dalam kode. Dalam deklarasi fungsi, kita hanya menentukan nama fungsi yang akan kita gunakan dalam program kita, seperti halnya deklarasi variabel. Kita tidak dapat menggunakan fungsi kecuali fungsi tersebut telah dideklarasikan dalam program. Deklarasi fungsi juga disebut "prototipe fungsi".
Deklarasi fungsi (disebut prototipe) biasanya dilakukan di atas fungsi main() dan mengambil bentuk umum:
return_data_type function_name (data_type arguments);
- return_data_type: adalah tipe data dari nilai fungsi yang dikembalikan ke pernyataan pemanggil.
- Nama_fungsi: diikuti oleh tanda kurung
- Nama argumen beserta deklarasi tipe datanya secara opsional ditempatkan di dalam tanda kurung.
Kami mempertimbangkan program berikut yang menunjukkan cara mendeklarasikan fungsi kubus untuk menghitung nilai kubus dari variabel integer
#include <stdio.h> /*Function declaration*/ int add(int a,b); /*End of Function declaration*/ int main() {
Perlu diingat bahwa suatu fungsi belum tentu mengembalikan suatu nilai. Dalam hal ini, kata kunci void digunakan.
Misalnya, deklarasi fungsi output_message menunjukkan bahwa fungsi tersebut tidak mengembalikan nilai: void output_message();
Definisi Fungsi
Definisi fungsi berarti hanya menulis isi suatu fungsi. Badan suatu fungsi terdiri dari pernyataan-pernyataan yang akan melakukan tugas tertentu. Badan fungsi terdiri dari satu atau satu blok pernyataan. Ini juga merupakan bagian wajib dari suatu fungsi.
int add(int a,int b) //function body { int c; c=a+b; return c; }
Panggilan fungsi
Pemanggilan fungsi berarti memanggil suatu fungsi kapan pun diperlukan dalam suatu program. Setiap kali kita memanggil suatu fungsi, fungsi tersebut akan menjalankan operasi yang telah dirancang untuk fungsi tersebut. Pemanggilan fungsi adalah bagian opsional dari suatu program.
result = add(4,5);
Berikut kode lengkapnya:
#include <stdio.h> int add(int a, int b); //function declaration int main() { int a=10,b=20; int c=add(10,20); //function call printf("Addition:%d\n",c); getch(); } int add(int a,int b) //function body { int c; c=a+b; return c; }
Keluaran:
Addition:30
Argumen Fungsi
Argumen suatu fungsi digunakan untuk menerima nilai yang diperlukan melalui pemanggilan fungsi. Mereka dicocokkan berdasarkan posisi; argumen pertama diteruskan ke parameter pertama, argumen kedua diteruskan ke parameter kedua, dan seterusnya.
Secara default, argumen diteruskan berdasarkan nilai, di mana salinan data diberikan ke fungsi yang dipanggil. Variabel yang sebenarnya diteruskan tidak akan berubah.
Kami mempertimbangkan program berikut yang menunjukkan parameter yang diteruskan berdasarkan nilai:
int add (int x, int y); int main() { int a, b, result; a = 5; b = 10; result = add(a, b); printf("%d + %d\ = %d\n", a, b, result); return 0;} int add (int x, int y) { x += y; return(x);}
Keluaran programnya adalah:
5 + 10 = 15
Perlu diingat bahwa nilai a dan b yang diteruskan ke fungsi penjumlahan tidak diubah karena hanya nilainya yang diteruskan ke parameter x.
Lingkup Variabel
Cakupan variabel berarti visibilitas variabel dalam kode program.
Dalam bahasa C, variabel yang dideklarasikan di dalam suatu fungsi bersifat lokal untuk blok kode tersebut dan tidak dapat diakses di luar fungsi. Namun, variabel yang dideklarasikan di luar semua fungsi bersifat global dan dapat diakses dari seluruh program. Konstanta yang dideklarasikan dengan #define di bagian atas program dapat diakses dari seluruh program. Kita akan mempertimbangkan program berikut yang mencetak nilai variabel global dari fungsi utama dan fungsi yang didefinisikan pengguna:
#include <stdio.h> int global = 1348; void test(); int main() { printf("from the main function : global =%d \n", global); test () ; return 0;} void test (){ printf("from user defined function : global =%d \n", global);}
Hasil:
from the main function : global =1348 from user defined function : global =1348
Kami membahas detail programnya:
- Kami mendeklarasikan variabel global integer dengan 1348 sebagai nilai awal.
- Kami mendeklarasikan dan mendefinisikan fungsi test() yang tidak mengambil argumen atau mengembalikan nilai. Fungsi ini hanya mencetak nilai variabel global untuk menunjukkan bahwa variabel global dapat diakses dimana saja dalam program.
- Kami mencetak variabel global dalam fungsi utama.
- Kami memanggil fungsi test untuk mencetak nilai variabel global.
Di C, ketika argumen diteruskan ke parameter fungsi, parameter tersebut bertindak sebagai variabel lokal yang akan dimusnahkan saat keluar dari fungsi.
Bila Anda menggunakan variabel global, gunakan dengan hati-hati karena dapat menyebabkan kesalahan dan dapat berubah di mana saja dalam program. Mereka harus diinisialisasi sebelum digunakan.
Variabel Statis
Variabel statis memiliki cakupan lokal. Namun, mereka tidak dimusnahkan saat keluar dari fungsinya. Oleh karena itu, variabel statis mempertahankan nilainya selamanya dan dapat diakses ketika fungsinya dimasukkan kembali. Variabel statis diinisialisasi ketika dideklarasikan dan memerlukan awalan statis.
Program berikut menggunakan variabel statis:
#include <stdio.h> void say_hi(); int main() { int i; for (i = 0; i < 5; i++) { say_hi();} return 0;} void say_hi() { static int calls_number = 1; printf("Hi number %d\n", calls_number); calls_number ++; }
Program ini menampilkan:
Hi number 1 Hi number 2 Hi number 3 Hi number 4 Hi number 5
Fungsi Rekursif
Perhatikan faktorial suatu bilangan yang dihitung sebagai berikut: 6! = 6 * 5 * 4 * 3 * 2 * 1.
Perhitungan ini dilakukan dengan cara menghitung fakta * (fakta -1) berulang kali hingga fakta sama dengan 1.
Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri dan menyertakan kondisi keluar untuk menyelesaikan panggilan rekursif. Dalam kasus penghitungan bilangan faktorial, kondisi keluar faktanya sama dengan 1. Rekursi bekerja dengan โmenumpukโ panggilan hingga kondisi keluar benar.
Sebagai contoh:
#include <stdio.h> int factorial(int number); int main() { int x = 6; printf("The factorial of %d is %d\n", x, factorial(x)); return 0;} int factorial(int number) { if (number == 1) return (1); /* exiting condition */ else return (number * factorial(number - 1)); }
Program ini menampilkan:
The factorial of 6 is 720
Di sini, kami membahas detail program:
- Kami mendeklarasikan fungsi faktorial rekursif yang mengambil parameter integer dan mengembalikan faktorial dari parameter ini. Fungsi ini akan memanggil dirinya sendiri dan mengurangi angkanya hingga keluar, atau kondisi dasar tercapai. Jika kondisinya benar, nilai yang dihasilkan sebelumnya akan dikalikan satu sama lain, dan nilai faktorial akhir akan dikembalikan.
- Kami mendeklarasikan dan menginisialisasi variabel integer dengan nilaiโ6โณ dan kemudian mencetak nilai faktorialnya dengan memanggil fungsi faktorial kami.
Perhatikan diagram berikut untuk lebih memahami mekanisme rekursif yang terdiri dari memanggil fungsi itu sendiri hingga kasus dasar atau berhenti.ping kondisi tercapai, dan setelah itu, kita mengumpulkan nilai-nilai sebelumnya:
Fungsi Sebaris
Fungsi dalam pemrograman C digunakan untuk menyimpan instruksi yang paling sering digunakan. Ini digunakan untuk memodulasi program.
Setiap kali suatu fungsi dipanggil, penunjuk instruksi melompat ke definisi fungsi. Setelah menjalankan suatu fungsi, penunjuk instruksi kembali ke pernyataan yang kemudian melompat ke definisi fungsi.
Setiap kali kita menggunakan fungsi, kita memerlukan fungsi tambahan petunjuk kepala untuk melompat ke definisi fungsi dan kembali ke pernyataan. Untuk menghilangkan kebutuhan kepala penunjuk seperti itu, kami menggunakan fungsi inline.
Dalam fungsi inline, pemanggilan fungsi langsung digantikan oleh kode program sebenarnya. Itu tidak melompat ke blok mana pun karena semua operasi dilakukan di dalam fungsi inline.
Fungsi inline sebagian besar digunakan untuk komputasi kecil. Mereka tidak cocok jika melibatkan komputasi besar.
Fungsi inline mirip dengan fungsi normal kecuali kata kunci inline diletakkan sebelum nama fungsi. Fungsi inline dibuat dengan sintaks berikut:
inline function_name ()
{
//function definition
}
Mari kita menulis sebuah program untuk mengimplementasikan fungsi inline.
inline int add(int a, int b) //inline function declaration { return(a+b); } int main() { int c=add(10,20); printf("Addition:%d\n",c); getch(); }
Keluaran:
Addition: 30
Program di atas menunjukkan penggunaan fungsi inline untuk penjumlahan dua angka. Seperti yang bisa kita lihat, kita telah mengembalikan penjumlahan pada dua angka dalam fungsi inline saja tanpa menulis baris tambahan apa pun. Selama pemanggilan fungsi, kita baru saja meneruskan nilai yang harus kita tambahkan.




