Menu
CoddyTech

Fungsi Statis

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan C di Coddy. Pelajaran 4 dari 61.

Jika kamu memisahkan kode ke beberapa file, setiap fungsi yang didefinisikan dalam file sumber secara default dapat diakses oleh file lain. Namun, terkadang kamu memerlukan fungsi pembantu yang hanya digunakan secara internal: fungsi yang tidak boleh diakses atau bahkan diketahui oleh file lain.

Kata kunci static, jika diterapkan pada fungsi, membatasi visibilitasnya hanya pada file tempat fungsi tersebut didefinisikan. Ini membuat fungsi private yang tidak dapat dipanggil dari file sumber lain, bahkan jika seseorang mencoba mendeklarasikannya.

// math_utils.c
#include "math_utils.h"

// Fungsi pembantu privat, hanya terlihat di file ini
static int square(int x) {
    return x * x;
}

// Fungsi publik, bisa dipanggil dari main.c
int sum_of_squares(int a, int b) {
    return square(a) + square(b);
}

Dalam contoh ini, sum_of_squares dideklarasikan di header dan bisa digunakan di mana saja. Namun, square ditandai sebagai static, jadi fungsi ini hanya ada di dalam math_utils.c. Jika main.c mencoba memanggil square() secara langsung, linker akan menghasilkan error: fungsi ini memang tidak ada di luar filenya.

Ini adalah cara C menerapkan enkapsulasi di tingkat file. Fungsi static memungkinkan kamu menyembunyikan detail implementasi, menjaga antarmuka publik tetap bersih sambil menggunakan logika bantuan apa pun yang kamu perlukan secara internal.

challenge icon

Tantangan

Mudah

Mari buat kalkulator jarak yang menggunakan fungsi pembantu privat untuk menghitung kuadrat suatu bilangan: detail yang seharusnya tersembunyi dari bagian lain programmu.

Kamu akan membuat tiga file:

  • distance.h: File header yang mendeklarasikan satu fungsi publik distance_squared yang menerima empat bilangan bulat (x1, y1, x2, y2) yang mewakili dua titik dan mengembalikan bilangan bulat. Sertakan pelindung header menggunakan simbol DISTANCE_H.
  • distance.c: File sumber yang berisi implementasi. Buat fungsi pembantu static bernama square yang menerima bilangan bulat dan mengembalikan kuadratnya. Fungsi pembantu ini hanya boleh terlihat di dalam distance.c. Lalu implementasikan distance_squared menggunakan fungsi pembantu statismu untuk menghitung (x2-x1)² + (y2-y1)².
  • main.c: File utama yang menyertakan header dan menggunakan fungsi publik. Fungsi pembantu square tidak boleh diakses di sini: hanya distance_squared yang tersedia.

Fungsi distance_squared menghitung jarak Euclidean kuadrat antara dua titik. Dengan membuat fungsi square bersifat static, kamu menyembunyikan detail implementasi ini dari kode mana pun di luar distance.c.

Kamu akan menerima empat input bilangan bulat: x1, y1, x2, dan y2.

Cetak jarak kuadrat dengan format ini:

Squared distance: {result}

Misalnya, untuk titik (0, 0) dan (3, 4), output-nya adalah:

Squared distance: 25

Coba sendiri

#include <stdio.h>
#include "distance.h"

int main() {
    int x1, y1, x2, y2;
    scanf("%d", &x1);
    scanf("%d", &y1);
    scanf("%d", &x2);
    scanf("%d", &y2);
    
    // TODO: Panggil distance_squared dengan koordinat input
    // dan cetak hasilnya dalam format: "Squared distance: {result}"
    
    return 0;
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler C online