Fungsi dalam Pemrograman C dengan Contoh: Rekursif, Inline

Daftar Isi:

Anonim

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 dengan mudah dimodifikasi 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 fungsi

Saat Anda membagi program besar menjadi berbagai fungsi, akan menjadi mudah untuk mengelola setiap fungsi satu per satu. Setiap kali terjadi kesalahan dalam 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.

Dalam tutorial ini, Anda akan belajar-

  • Perpustakaan Vs. Fungsi yang Ditentukan Pengguna
  • Deklarasi Fungsi
  • Definisi fungsi
  • Panggilan fungsi
  • Argumen Fungsi
  • Ruang Lingkup Variabel
  • Variabel Statis
  • Fungsi Rekursif
  • Fungsi Inline

Perpustakaan Vs. Fungsi yang Ditentukan Pengguna

Setiap program 'C' memiliki setidaknya satu fungsi yang merupakan fungsi utama, tetapi suatu program dapat memiliki sejumlah fungsi. Fungsi main () di C adalah titik awal sebuah program.

Dalam pemrograman 'C', fungsi dibagi menjadi dua jenis:

  1. Fungsi perpustakaan
  2. Fungsi yang ditentukan pengguna

Perbedaan antara library dan fungsi yang ditentukan pengguna di C adalah kita tidak perlu menulis kode untuk fungsi library. Itu sudah ada di dalam file header yang selalu kami sertakan di awal program. Anda hanya perlu mengetik nama fungsi dan menggunakannya bersama dengan sintaks yang tepat. Printf, scanf adalah contoh dari fungsi perpustakaan.

Sedangkan, fungsi yang ditentukan pengguna adalah jenis fungsi di mana kita harus menulis tubuh dari suatu fungsi dan memanggil fungsi tersebut setiap kali kita memerlukan fungsi tersebut untuk melakukan beberapa operasi dalam program kita.

Fungsi yang ditentukan pengguna di C selalu ditulis oleh pengguna, tetapi nanti bisa menjadi bagian dari pustaka 'C'. Ini adalah keuntungan utama dari pemrograman 'C'.

Fungsi pemrograman C dibagi menjadi tiga aktivitas seperti,

  1. Deklarasi fungsi
  2. Definisi fungsi
  3. Panggilan fungsi

Deklarasi Fungsi

Deklarasi fungsi berarti menulis nama program. Ini adalah bagian wajib untuk menggunakan fungsi dalam kode. Dalam deklarasi fungsi, kami hanya menentukan nama fungsi yang akan kami gunakan dalam program kami seperti deklarasi variabel. Kita tidak dapat menggunakan fungsi kecuali jika 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);
  • The return_data_type : adalah tipe data dari fungsi nilai kembali kembali ke pernyataan yang menyerukan.
  • The function_name : diikuti dengan tanda kurung
  • Nama argumen 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 /*Function declaration*/int add(int a,b);/*End of Function declaration*/int main() {

Ingatlah bahwa suatu fungsi tidak selalu mengembalikan nilai. Dalam kasus ini, kata kunci kosong digunakan.

Misalnya, deklarasi fungsi output_message menunjukkan bahwa fungsi tersebut tidak mengembalikan nilai: void output_message ();

Definisi Fungsi

Definisi fungsi berarti hanya menulis badan suatu fungsi. Sebuah tubuh fungsi terdiri dari 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

Panggilan fungsi berarti memanggil suatu fungsi setiap kali diperlukan dalam suatu program. Setiap kali kita memanggil suatu fungsi, fungsi tersebut melakukan operasi yang dirancang untuk itu. Panggilan fungsi adalah bagian opsional dalam sebuah program.

 result = add(4,5);

Ini, kode lengkapnya:

#include int add(int a, int b); //function declarationint main(){int a=10,b=20;int c=add(10,20); //function callprintf("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 fungsi digunakan untuk menerima nilai yang diperlukan oleh pemanggilan fungsi. Mereka dicocokkan dengan posisinya; argumen pertama diteruskan ke parameter pertama, parameter kedua ke parameter kedua dan seterusnya.

Secara default, argumen diteruskan oleh nilai di mana salinan data diberikan ke fungsi yang dipanggil. Variabel yang benar-benar diteruskan tidak akan berubah.

Kami mempertimbangkan program berikut yang menunjukkan parameter yang diteruskan oleh 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 program adalah:

5 + 10 = 15 

Perlu diingat bahwa nilai a dan b yang diteruskan untuk menambah fungsi tidak berubah karena hanya nilainya yang diteruskan ke parameter x.

Ruang Lingkup Variabel

Ruang lingkup variabel berarti visibilitas variabel dalam kode program.

Di C, variabel yang dideklarasikan di dalam suatu fungsi bersifat lokal ke blok kode itu dan tidak dapat dirujuk 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. Kami mempertimbangkan program berikut yang mencetak nilai variabel global dari fungsi utama dan yang ditentukan pengguna:

#include 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 =1348from user defined function : global =1348

Kami membahas detail program:

  1. Kami mendeklarasikan variabel global integer dengan 1348 sebagai nilai awal.
  2. 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 di mana saja dalam program.
  3. Kami mencetak variabel global dalam fungsi utama.
  4. Kami memanggil fungsi uji dalam orde untuk mencetak nilai variabel global.

Di C, ketika argumen dilewatkan ke parameter fungsi, parameter bertindak sebagai variabel lokal yang akan dihancurkan saat keluar dari fungsi.

Saat 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 hancur saat keluar dari fungsinya. Oleh karena itu, variabel statis mempertahankan nilainya selamanya dan dapat diakses saat fungsi dimasukkan kembali. Variabel statis diinisialisasi saat dideklarasikan dan membutuhkan awalan statis.

Program berikut menggunakan variabel statis:

#include 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 1Hi number 2Hi number 3Hi number 4Hi number 5

Fungsi Rekursif

Pertimbangkan faktorial sebuah bilangan yang dihitung sebagai berikut 6! = 6 * 5 * 4 * 3 * 2 * 1.

Perhitungan ini dilakukan berulang kali menghitung fakta * (fakta -1) hingga fakta sama dengan 1.

Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri dan menyertakan kondisi keluar untuk menyelesaikan panggilan rekursif. Dalam kasus kalkulasi bilangan faktorial, kondisi keluar adalah fakta sama dengan 1. Rekursi bekerja dengan "menumpuk" panggilan sampai kondisi keluar benar.

Sebagai contoh:

#include 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 */elsereturn (number * factorial(number - 1));} 

Program ini menampilkan:

 The factorial of 6 is 720 

Di sini, kami membahas detail program:

  1. Kami mendeklarasikan fungsi faktorial rekursif kami yang mengambil parameter integer dan mengembalikan faktorial dari parameter ini. Fungsi ini akan memanggil dirinya sendiri dan menurunkan angka hingga keluar, atau kondisi dasar tercapai. Jika kondisinya benar, nilai yang dihasilkan sebelumnya akan dikalikan satu sama lain, dan nilai faktorial akhir dikembalikan.
  2. Kita mendeklarasikan dan menginisialisasi variabel integer dengan nilai "6" dan kemudian mencetak nilai faktorialnya dengan memanggil fungsi faktorial kita.

Perhatikan bagan berikut untuk lebih memahami mekanisme rekursif yang terdiri dari memanggil fungsi itu sendiri hingga kasus dasar atau kondisi berhenti tercapai, dan setelah itu, kami mengumpulkan nilai-nilai sebelumnya:

Fungsi Inline

Fungsi dalam pemrograman C digunakan untuk menyimpan instruksi yang paling sering digunakan. Ini digunakan untuk memodularisasi program.

Setiap kali suatu fungsi dipanggil, penunjuk instruksi melompat ke definisi fungsi. Setelah menjalankan suatu fungsi, penunjuk instruksi kembali ke pernyataan dari mana ia melompat ke definisi fungsi.

Setiap kali kami menggunakan fungsi, kami memerlukan kepala penunjuk tambahan untuk melompat ke definisi fungsi dan kembali ke pernyataan. Untuk menghilangkan kebutuhan akan kepala penunjuk seperti itu, kami menggunakan fungsi sebaris.

Dalam fungsi inline, pemanggilan fungsi secara langsung diganti dengan kode program yang sebenarnya. Itu tidak melompat ke blok mana pun karena semua operasi dilakukan di dalam fungsi sebaris.

Fungsi sebaris sebagian besar digunakan untuk komputasi kecil. Mereka tidak cocok jika melibatkan komputasi besar.

Fungsi sebaris mirip dengan fungsi normal kecuali kata kunci sebaris ditempatkan sebelum nama fungsi. Fungsi sebaris dibuat dengan sintaks berikut:

inline function_name (){//function definition}

Mari kita tulis 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 mendemonstrasikan penggunaan fungsi sebaris untuk penjumlahan dua bilangan. Seperti yang bisa kita lihat, kita telah mengembalikan penambahan pada dua angka di dalam fungsi sebaris saja tanpa menulis baris tambahan. Selama pemanggilan fungsi kita baru saja menyampaikan nilai yang harus kita lakukan penambahan.

Ringkasan

  • Fungsi adalah program mini atau subprogram.
  • Fungsi digunakan untuk memodularisasi program.
  • Library dan user-defined adalah dua jenis fungsi.
  • Fungsi terdiri dari deklarasi, badan fungsi, dan bagian pemanggilan fungsi.
  • Deklarasi fungsi dan isi adalah wajib.
  • Panggilan fungsi dapat menjadi opsional dalam suatu program.
  • Program C memiliki setidaknya satu fungsi; itu adalah fungsi utama ().
  • Setiap fungsi memiliki nama, tipe data dari nilai kembali atau kekosongan, parameter.
  • Setiap fungsi harus didefinisikan dan dideklarasikan dalam program C.
  • Ingatlah bahwa variabel biasa dalam fungsi C dihancurkan segera setelah kita keluar dari pemanggilan fungsi.
  • Argumen yang diteruskan ke suatu fungsi tidak akan diubah karena argumen tersebut diteruskan oleh value none by address.
  • Cakupan variabel disebut sebagai visibilitas variabel dalam suatu program
  • Ada variabel global dan lokal dalam pemrograman C.