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

Fungsi dalam Pemrograman C dengan Contoh:Rekursif &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 memodulasi 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 berbagai fungsi, 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

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

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

  1. Fungsi perpustakaan
  2. Fungsi yang ditentukan pengguna

Perbedaan antara fungsi perpustakaan dan fungsi yang ditentukan pengguna di C adalah bahwa 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 fungsi dan menggunakannya bersama dengan sintaks yang tepat. Printf, scanf adalah contoh fungsi library.

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

Fungsi yang ditentukan pengguna dalam C selalu ditulis oleh pengguna, tetapi kemudian dapat menjadi bagian dari perpustakaan '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, kita hanya menentukan nama fungsi yang akan kita gunakan dalam program kita seperti deklarasi variabel. Kita tidak dapat menggunakan suatu fungsi kecuali jika dideklarasikan dalam suatu program. Deklarasi fungsi juga disebut “Fungsi prototipe .”

Deklarasi fungsi (disebut prototipe) biasanya dilakukan di atas fungsi utama () 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 pangkat tiga dari variabel integer

#include <stdio.h>
/*Function declaration*/
int add(int a,b);
/*End of Function declaration*/
int main() {

Ingatlah bahwa suatu fungsi tidak selalu mengembalikan 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 tubuh fungsi. 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

Pemanggilan fungsi berarti memanggil suatu fungsi setiap kali diperlukan dalam suatu program. Setiap kali kita memanggil suatu fungsi, ia melakukan operasi yang dirancang untuknya. Panggilan fungsi adalah bagian opsional dari sebuah 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 fungsi digunakan untuk menerima nilai yang diperlukan oleh pemanggilan fungsi. Mereka dicocokkan berdasarkan posisi; argumen pertama diteruskan ke parameter pertama, yang kedua ke parameter kedua dan seterusnya.

Secara default, argumen diteruskan dengan nilai di mana salinan data diberikan ke fungsi yang dipanggil. Variabel yang benar-benar lulus 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 ke fungsi tambah tidak diubah karena hanya nilainya yang diteruskan ke parameter x.

Cakupan Variabel

Lingkup variabel berarti visibilitas variabel dalam kode program.

Dalam C, variabel yang dideklarasikan di dalam suatu fungsi adalah lokal untuk blok kode itu dan tidak dapat dirujuk ke luar fungsi. Namun, variabel yang dideklarasikan di luar semua fungsi bersifat global dan dapat diakses dari seluruh program. Konstanta 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 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 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 tes untuk mencetak nilai variabel global.

Di C, ketika argumen diteruskan 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 suatu program. Mereka harus diinisialisasi sebelum digunakan.

Variabel Statis

Variabel statis memiliki lingkup lokal. Namun, mereka tidak dihancurkan saat keluar dari fungsi. Oleh karena itu, variabel statis mempertahankan nilainya selamanya dan dapat diakses saat fungsi dimasukkan kembali. Variabel static diinisialisasi saat dideklarasikan dan membutuhkan 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

Perhatikan faktorial dari suatu bilangan yang dihitung sebagai berikut 6! =6* 5 * 4 * 3 * 2 * 1.

Perhitungan ini dilakukan secara berulang-ulang menghitung fakta * (fakta -1) sampai fakta sama dengan 1.

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

Misalnya:

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

  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 nomor sampai keluar, atau kondisi dasar tercapai. Jika kondisinya 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″ 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 sampai kasus dasar atau kondisi berhenti tercapai, dan setelah itu, kami 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 mengeksekusi suatu fungsi, penunjuk instruksi kembali ke pernyataan dari mana ia melompat ke definisi fungsi.

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

Dalam fungsi inline, panggilan fungsi langsung diganti dengan kode program yang 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 ketika komputasi besar terlibat.

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 menulis 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 penambahan dua angka. Seperti yang dapat kita lihat, kita telah mengembalikan penambahan pada dua angka dalam fungsi sebaris saja tanpa menulis baris tambahan. Selama pemanggilan fungsi, kami baru saja memberikan nilai yang harus kami tambahkan.

Ringkasan


Bahasa C

  1. Melewati Array ke Fungsi dalam Pemrograman C++
  2. Jenis Fungsi yang Ditentukan Pengguna dalam Pemrograman C
  3. C++ do… while loop dengan Contoh
  4. Operator C++ Overloading dengan Contoh
  5. Fungsi C++ dengan Contoh Program
  6. calloc() Fungsi di C Library dengan Program CONTOH
  7. Fungsi Python Lambda dengan CONTOH
  8. Python round() fungsi dengan CONTOH
  9. Python map() berfungsi dengan CONTOH
  10. Fungsi Verilog