ID (Indonesia) Translation

Fungsi Callback dalam C

Halo, para programer yang sedang berkembang! Hari ini, kita akan melihat dunia yang menarik dari fungsi callback dalam C. Sebagai guru ilmu komputer yang ramah di lingkungan sekitar Anda, saya sangat gembira untuk memandu Anda melalui konsep ini. Percayalah, sekali Anda menguasai callbacks, Anda akan merasa seperti Anda telah membuka superpower baru dalam pemrograman!

C - Callback Function

Apa itu Fungsi Callback?

Mari mulai dari dasar. Bayangkan Anda di pesta pizza (siapa yang tidak menyukai pizza?), dan Anda meminta teman Anda untuk menelpon Anda saat pizza tiba. Teman Anda secara esensial melakukan callback - mereka menelpon Anda kembali saat suatu peristiwa tertentu terjadi.

Dalam pemrograman C, fungsi callback bekerja sama seperti itu. Itu adalah fungsi yang kita kirim sebagai argumen ke fungsi lain. Fungsi lain itu kemudian "menelpon kembali" (menjalankan) fungsi yang dikirim saat suatu peristiwa terjadi atau tugas selesai.

Berikut adalah struktur sederhana dari fungsi callback:

void callback_function() {
// Tubuh fungsi
}

void main_function(void (*callback)()) {
// Beberapa kode
callback();  // Menjelaskan fungsi callback
// Kode lainnya
}

int main() {
main_function(callback_function);
return 0;
}

Dalam contoh ini, callback_function adalah callback kami. Kita kirimnya ke main_function, yang kemudian menjalankannya pada suatu titik saat eksekusinya.

Contoh Fungsi Callback dalam C

Mari lihat contoh yang lebih khusus. Kita akan membuat program sederhana yang menggunakan callback untuk mencetak pesan setelah perhitungan selesai.

#include <stdio.h>

// Fungsi callback kami
void print_result(int result) {
printf("Hasilnya adalah: %d\n", result);
}

// Fungsi yang melakukan perhitungan dan menjelaskan callback
void perform_operation(int a, int b, void (*callback)(int)) {
int sum = a + b;
callback(sum);  // Menjelaskan fungsi callback dengan hasil
}

int main() {
perform_operation(5, 3, print_result);
return 0;
}

Dalam contoh ini:

  1. Kita mendefinisikan fungsi callback print_result yang mengambil integer dan mencetaknya.
  2. Fungsi perform_operation kita mengambil dua integer dan pointer fungsi sebagai argumen.
  3. Dalam perform_operation, kita menghitung jumlah dan kemudian menjelaskan fungsi callback dengan ini.
  4. Di main, kita memanggil perform_operation dengan nomor kita dan callback print_result.

Saat Anda menjalankan program ini, itu akan mengeluarkan: "Hasilnya adalah: 8"

Fungsi Callback Dengan Argumen

Callbacks juga dapat mengambil beberapa argumen. Mari diperluas contoh sebelumnya untuk mencakup operasi lainnya:

#include <stdio.h>

// Fungsi callback dengan beberapa argumen
void print_operation(char operation, int a, int b, int result) {
printf("%d %c %d = %d\n", a, operation, b, result);
}

// Fungsi yang melakukan perhitungan dan menjelaskan callback
void perform_operation(int a, int b, char op, void (*callback)(char, int, int, int)) {
int result;
switch(op) {
case '+': result = a + b; break;
case '-': result = a - b; break;
case '*': result = a * b; break;
case '/': result = a / b; break;
default: printf("Operasi tidak valid\n"); return;
}
callback(op, a, b, result);
}

int main() {
perform_operation(5, 3, '+', print_operation);
perform_operation(10, 4, '-', print_operation);
perform_operation(7, 2, '*', print_operation);
perform_operation(20, 5, '/', print_operation);
return 0;
}

Program ini akan mengeluarkan:

5 + 3 = 8
10 - 4 = 6
7 * 2 = 14
20 / 5 = 4

Di sini, callback print_operation mengambil empat argumen: operasi, dua operan, dan hasil. Ini memungkinkan kita untuk membuat output yang lebih fleksibel dan informatif.

Jenis Callback dalam C

Dalam C, kita dapat mengklasifikasikan callbacks menjadi dua jenis utama:

  1. Callback Synchronous: Ini dieksekusi segera oleh fungsi yang mereka kirim ke. Contoh kami di atas adalah callbacks synchronous.

  2. Callback Asynchronous: Ini dijadwalkan untuk dieksekusi kemudian, biasanya digunakan dalam pemrograman event-driven atau saat berurusan dengan operasi I/O.

Mari lihat tabel yang menggabungkan jenis ini:

Jenis Deskripsi Kasus Penggunaan Contoh
Synchronous Dieksekusi segera Operasi sederhana, perhitungan Contoh operasi aritmetik kami
Asynchronous Dieksekusi kemudian Penanganan event, operasi I/O Callback baca/tulis file, penanganan event GUI

Berikut adalah contoh sederhana dari callback asynchronous menggunakan sinyal dalam C:

#include <stdio.h>
#include <signal.h>
#include <unistd.h>

void callback_function(int signum) {
printf("Menerima sinyal %d\n", signum);
}

int main() {
signal(SIGALRM, callback_function);
alarm(5);  // Set alarm for 5 seconds

printf("Menunggu alarm...\n");
pause();  // Tunggu sinyal

return 0;
}

Dalam contoh ini, callback_function diatur sebagai callback asynchronous yang akan dipanggil saat sinyal SIGALRM diterima. Fungsi alarm(5) mengatur timer selama 5 detik, setelah itu sinyal SIGALRM akan dikirim, memicu callback kami.

Dan begitulah, teman-teman! Kita telah berjalan melalui negeri fungsi callback dalam C. Ingat, callbacks adalah seperti teman yang dapat dipercaya di petualangan pemrograman Anda - mereka selalu ada saat Anda membutuhkan mereka, siap untuk bereaksi. Terus latihan, dan segera Anda akan menjadi ahli dalam menggunakan callbacks!

Credits: Image by storyset