Fungsi-Fungsi Pemrograman C Contoh : Rekursif & Inline
Apa itu Fungsi di C?
Fungsi dalam pemrograman C adalah blok kode yang dapat digunakan kembali yang membuat program lebih mudah dipahami, diuji, dan dapat dimodifikasi dengan mudah tanpa mengubah pemanggil program. Fungsi membagi kode dan memodulasi program untuk hasil yang lebih baik dan efektif. Singkatnya, suatu program yang lebih besar dibagi menjadi berbagai subprogram yang disebut 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 program. Ini adalah bagian wajib untuk menggunakan fungsi dalam kode. Dalam deklarasi fungsi, kita tinggal menentukan nama fungsi yang akan kita gunakan dalam program kita seperti deklarasi variabel. Kita tidak dapat menggunakan suatu fungsi kecuali fungsi tersebut dideklarasikan dalam suatu program. Deklarasi fungsi juga disebut “Fungsi prototipe. "
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 fungsi nilai yang dikembalikan ke pernyataan pemanggil.
- nama_fungsi: diikuti dengan tanda kurung
- kasus nama dengan 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);
Ini 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.
Di C, variabel yang dideklarasikan di dalam suatu fungsi bersifat lokal terhadap blok kode tersebut dan tidak dapat dirujuk ke luar fungsi. Namun, variabel yang dideklarasikan di luar semua fungsi bersifat global dan dapat diakses dari keseluruhan program. Konstanta dinyatakan dengan a #menetapkan di bagian atas program dapat diakses dari keseluruhan program. Kami mempertimbangkan program berikut yang mencetak nilai variabel global dari fungsi utama dan fungsi yang ditentukan 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 rincian program:
- 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 bagan berikut untuk lebih memahami mekanisme rekursif yang terdiri dari pemanggilan fungsi itu sendiri hingga kasus dasar atau kondisi penghentian tercapai, dan setelah itu, kita kumpulkan 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.
Kesimpulan
- Fungsi adalah program mini atau subprogram.
- Fungsi digunakan untuk memodulasi program.
- Perpustakaan dan ditentukan pengguna adalah dua jenis fungsi.
- Suatu fungsi terdiri dari deklarasi, isi fungsi, dan bagian pemanggilan fungsi.
- Deklarasi fungsi dan isi adalah wajib.
- Pemanggilan fungsi dapat bersifat opsional dalam suatu program.
- Program C memiliki setidaknya satu fungsi; itu adalah fungsi utama ().
- Setiap fungsi memiliki nama, tipe data nilai kembalian atau kekosongan, parameter.
- Setiap fungsi harus didefinisikan dan dideklarasikan dalam program C Anda.
- Ingatlah itu biasa saja variabel dalam fungsi C dihancurkan segera setelah kita keluar dari pemanggilan fungsi.
- Argumen yang diteruskan ke suatu fungsi tidak akan diubah karena argumen tersebut diteruskan berdasarkan nilai, tidak ada berdasarkan alamat.
- Cakupan variabel disebut sebagai visibilitas variabel dalam suatu program
- Ada variabel global dan lokal di dalamnya pemrograman C