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.

  • ๐Ÿงฉ Fungsi-fungsi tersebut meliputi: Fungsi mengelompokkan instruksi yang dapat digunakan kembali, sehingga program besar dipecah menjadi subprogram yang lebih kecil dan mudah dikelola, yang lebih sederhana untuk di-debug.
  • ๐Ÿ“š Dua jenis: Fungsi-fungsi pustaka seperti printf dan scanf sudah tersedia, sedangkan fungsi-fungsi yang didefinisikan pengguna ditulis oleh programmer.
  • ๐Ÿ“ Tiga bagian: Penggunaan suatu fungsi melibatkan deklarasi atau prototipenya, definisi atau isi fungsi tersebut, dan panggilan yang menjalankannya.
  • ๐ŸŽฏ Argumen: Nilai diteruskan berdasarkan posisi dan, secara default, berdasarkan nilai, sehingga variabel asli tetap tidak berubah di dalam fungsi yang dipanggil.
  • ๐ŸŒ Cakupan: Variabel lokal hanya ada di dalam fungsinya, sedangkan variabel global dan statis mempertahankan nilainya di seluruh program atau di antara pemanggilan fungsi.
  • ๐Ÿค– Bantuan AI: GitHub Copilot dan asisten AI menyusun fungsi C, menyarankan tipe pengembalian, dan menandai pengembalian yang hilang atau argumen yang tidak cocok.

Fungsi dalam Pemrograman C.

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.

Apa itu Fungsi di C

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:

  1. Fungsi perpustakaan
  2. 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,

  1. Deklarasi fungsi
  2. Definisi fungsi
  3. 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:

Lingkup Variabel

  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 dimana saja dalam program.
  3. Kami mencetak variabel global dalam fungsi utama.
  4. 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:

Fungsi Rekursif

  1. 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.
  2. 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 Rekursif

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.

Pertanyaan Umum Demo Slot

Pemanggilan berdasarkan nilai (call by value) menyalin argumen ke dalam fungsi, sehingga perubahan tetap bersifat lokal dan variabel asli tidak tersentuh. Pemanggilan berdasarkan referensi (call by reference) meneruskan alamat variabel melalui pointer, memungkinkan fungsi untuk memodifikasi data asli pemanggil secara langsung.

Parameter aktual adalah nilai atau variabel sebenarnya yang dilewatkan pemanggil selama pemanggilan fungsi. Parameter formal adalah placeholder yang disebutkan dalam definisi fungsi yang menerimanya. Keduanya dicocokkan berdasarkan posisi, pertama dengan pertama, kedua dengan kedua.

Fungsi AC hanya mengembalikan satu nilai secara langsung dengan return. Untuk mengirimkan beberapa hasil, bungkus hasil tersebut dalam sebuah struktur, isi sebuah array, atau berikan pointer sebagai argumen sehingga fungsi tersebut menulis setiap hasil ke dalam variabel pemanggilnya.

Fungsi memberikan kemampuan penggunaan kembali, sehingga satu blok kode dapat dijalankan berkali-kali, dan modularitas, yang membagi program besar menjadi bagian-bagian yang lebih kecil. Fungsi juga meningkatkan keterbacaan, menyederhanakan pengujian dan debugging, serta menyembunyikan detail kompleks di balik satu nama, sehingga menghemat waktu pengembangan.

Fungsi main() adalah titik masuk tempat setiap program C memulai eksekusi. Sistem operasi memanggilnya terlebih dahulu, dan nilai kembaliannya, biasanya 0, menandakan keberhasilan. Fungsi ini dapat menerima argumen baris perintah berupa argc dan argv.

Rekursi cocok untuk masalah dengan struktur yang berulang secara alami, seperti penelusuran pohon atau faktorial, menghasilkan kode yang lebih pendek dan jelas. Iterasi biasanya berjalan lebih cepat dan menggunakan lebih sedikit memori karena menghindari panggilan berulang. Pilih rekursi untuk kejelasan, iterasi untuk kinerja pada input besar.

Ya. Asisten pengkodean AI dapat menulis fungsi C dari perintah bahasa biasa, menyarankan parameter dan tipe pengembalian, serta menandai bug seperti pengembalian yang hilang atau argumen yang tidak cocok. Selalu kompilasi dan uji fungsi yang dihasilkan sebelum mengandalkannya.

Kopilot GitHub Program ini menulis fungsi-fungsi C, melengkapi isi fungsi dari nama fungsi atau komentar singkat, dan mengusulkan deklarasi, perulangan, dan panggilan rekursif. Program ini sering menambahkan prototipe yang sesuai di atas fungsi main(), meskipun Anda tetap perlu meninjau logikanya.

Ringkaslah postingan ini dengan: