Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Bahasa C

Menguasai Fungsi dalam C: Contoh Praktis Rekursi & Teknik Inline

Apa itu Fungsi dalam 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 besar dibagi menjadi berbagai subprogram yang disebut fungsi

Menguasai Fungsi dalam C: Contoh Praktis Rekursi & Teknik Inline

Saat Anda membagi program besar menjadi berbagai fungsi, menjadi mudah untuk mengelola setiap fungis secara individu. Ketika terjadi kesalahan dalam program, Anda dapat dengan mudah menyelidiki fungsi yang salah dan memperbaiki hanya kesalahan tersebut. Anda dapat dengan mudah memanggil dan menggunakan fungsi setiap kali diperlukan yang secara otomatis menghemat waktu dan ruang.

Dalam tutorial ini, Anda akan mempelajari-

Fungsi Pustaka Vs. Fungsi yang Didefinisikan Pengguna

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

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

  1. Fungsi pustaka
  2. Fungsi yang didefinisikan pengguna

Perbedaan antara fungsi pustaka dan fungsi yang didefinisikan pengguna dalam C adalah kita tidak perlu menulis kode untuk fungsi pustaka. Ia sudah ada di dalam header file yang selalu kita sertakan di awal program. Anda cukup mengetik nama fungsi dan menggunakannya dengan sintaks yang tepat. Printf, scanf adalah contoh fungsi pustaka.

Sedangkan, fungsi yang didefinisikan pengguna adalah jenis fungsi di mana kita harus menulis tubuh fungsi dan memanggil fungsi setiap kali kita membutuhkan fungsi untuk melakukan beberapa operasi dalam program kita.

Fungsi yang didefinisikan pengguna dalam C selalu ditulis oleh pengguna, tetapi nanti dapat menjadi bagian dari pustaka 'C'. Ini adalah keuntungan utama dari pemrograman 'C'.

Fungsi pemrograman C dibagi menjadi tiga aktivitas yaitu,

  1. Deklarasi fungsi
  2. Definisi fungsi
  3. Pemanggilan fungsi

Deklarasi Fungsi

Deklarasi fungsi berarti menulis nama program. Ini adalah bagian wajib untuk menggunakan fungsi dalam kode. Dalam deklarasi fungsi, kita hanya menentukan nama fungsi yang akan kita gunakan dalam program kita seperti deklarasi variabel. Kita tidak dapat menggunakan fungsi kecuali dideklarasikan dalam program. Deklarasi fungsi juga disebut “Function prototype.”

Deklarasi fungsi (disebut prototype) biasanya dilakukan di atas fungsi main () dan mengambil bentuk umum:

return_data_type function_name (data_type arguments);

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() {

Ingatlah bahwa fungsi tidak selalu mengembalikan nilai. Dalam hal ini, kata kunci void digunakan.

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

Definisi Fungsi

Definisi fungsi berarti menulis tubuh fungsi. Tubuh fungsi terdiri dari pernyataan yang akan melakukan tugas tertentu. Tubuh fungsi terdiri dari satu atau sekelompok pernyataan. Ini juga merupakan bagian wajib dari fungsi.

int add(int a,int b) //function body { int c; c=a+b; return c; }

Pemanggilan Fungsi

Pemanggilan fungsi berarti memanggil fungsi setiap kali diperlukan dalam program. Setiap kali kita memanggil fungsi, ia melakukan operasi yang dirancang untuknya. Pemanggilan fungsi adalah bagian opsional dari program.

 result = add(4,5);

Berikut adalah 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; }

Output:

Addition:30

Argumen Fungsi

Argumen fungsi digunakan untuk menerima nilai yang diperlukan oleh pemanggilan fungsi. Mereka cocok berdasarkan posisi; argumen pertama diteruskan ke parameter pertama, yang kedua 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);}

Output program adalah:

5 + 10 = 15

Ingatlah bahwa nilai a dan b yang diteruskan ke fungsi add tidak berubah karena hanya nilainya yang diteruskan ke parameter x.

Cakupan Variabel

Cakupan variabel berarti visibilitas variabel dalam kode program.

Dalam C, variabel yang dideklarasikan di dalam fungsi bersifat lokal untuk blok kode tersebut 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 main 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 program:

Menguasai Fungsi dalam C: Contoh Praktis Rekursi & Teknik Inline

  1. Kami mendeklarasikan variabel global integer dengan nilai awal 1348.
  2. Kami mendeklarasikan dan mendefinisikan fungsi test() yang tidak mengambil argumen dan tidak 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 main.
  4. Kami memanggil fungsi test untuk mencetak nilai variabel global.

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

Saat Anda menggunakan variabel global, gunakanlah 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 dihancurkan saat keluar dari fungsi. Oleh karena itu, variabel statis mempertahankan nilainya selamanya dan dapat diakses saat fungsi dimasukkan ulang. Variabel statis diinisialisasi saat dideklarasikan dan memerlukan awalan static.

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 menampilkan :

Hi number 1 Hi number 2 Hi number 3 Hi number 4 Hi number 5 

Fungsi Rekursif

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

Perhitungan ini dilakukan dengan berulang kali menghitung fact * (fact -1) sampai fact sama dengan 1.

Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri dan mencakup kondisi keluar untuk menyelesaikan pemanggilan rekursif. Dalam kasus perhitungan faktorial, kondisi keluar adalah fact sama dengan 1. Rekursi bekerja dengan “stacking” pemanggilan sampai kondisi keluar terpenuhi.

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 menampilkan:

 The factorial of 6 is 720

Di sini, kami membahas detail program:

Menguasai Fungsi dalam C: Contoh Praktis Rekursi & Teknik Inline

  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 sampai kondisi keluar, atau kondisi dasar tercapai. Ketika kondisi benar, nilai yang dihasilkan sebelumnya akan dikalikan satu sama lain, dan nilai faktorial akhir dikembalikan.
  2. Kami mendeklarasikan dan menginisialisasi variabel integer dengan nilai”6″ lalu mencetak nilai faktorialnya dengan memanggil fungsi faktorial kami.

Pertimbangkan diagram berikut untuk lebih memahami mekanisme rekursi yang terdiri dari memanggil fungsi itu sendiri sampai kasus dasar atau kondisi berhenti tercapai, dan setelah itu, kita mengumpulkan nilai-nilai sebelumnya:

Menguasai Fungsi dalam C: Contoh Praktis Rekursi & Teknik Inline

Fungsi Inline

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

Setiap kali fungsi dipanggil, pointer instruksi melompat ke definisi fungsi. Setelah mengeksekusi fungsi, pointer instruksi kembali ke pernyataan tempat ia melompat ke definisi fungsi.

Setiap kali kita menggunakan fungsi, kita membutuhkan pointer tambahan untuk melompat ke definisi fungsi dan kembali ke pernyataan. Untuk menghilangkan kebutuhan akan pointer tambahan ini, kita menggunakan fungsi inline.

Dalam fungsi inline, pemanggilan fungsi langsung digantikan oleh kode program aktual. Ia tidak melompat ke blok apa pun karena semua operasi dilakukan di dalam fungsi inline.

Fungsi inline sebagian besar digunakan untuk komputasi kecil. Mereka tidak cocok saat komputasi besar terlibat.

Fungsi inline mirip dengan fungsi normal kecuali kata kunci inline ditempatkan sebelum nama fungsi. Fungsi inline 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(); }

Output:

Addition: 30

Program di atas menunjukkan penggunaan fungsi inline untuk penjumlahan dua angka. Seperti yang dapat kita lihat, kami telah mengembalikan penjumlahan dua angka dalam fungsi inline saja tanpa menulis baris tambahan. Selama pemanggilan fungsi kami hanya melewati nilai yang akan kita lakukan penjumlahan.

Ringkasan


Bahasa C

  1. Cara Meneruskan Array ke Fungsi dalam C++: Panduan Praktis
  2. Empat Pola Terbukti untuk Fungsi yang Dibuat Pengguna dalam C
  3. Perulangan do-while C++: Sintaks, Contoh Praktis, dan Perulangan Bersarang
  4. Pengoverloadan Operator C++ – Panduan Praktis dengan Contoh Kode
  5. Fungsi C++ Dijelaskan dengan Contoh Kode Praktis
  6. calloc() dalam C: Alokasi Memori Diinisialisasi Nol dan Contoh Praktis
  7. Menguasai Fungsi Lambda Python: Contoh Praktis & Praktik Terbaik
  8. Fungsi round() Python Dijelaskan dengan Contoh Praktis
  9. Menguasai Fungsi map() Python: Sintaks, Contoh, dan Praktik Terbaik
  10. Menguasai Fungsi Verilog untuk Desain RTL yang Efisien