Setiap program C, sekecil apa pun, selalu memiliki kerangka yang sama: bagian instruksi ke preprocessor, satu atau lebih fungsi, dan di dalam fungsi terdapat blok kode berisi statement. Memahami kerangka ini adalah langkah pertama agar kita dapat membaca kode C yang ditulis orang lain tanpa kebingungan. Pada Chapter ini kita akan membedah anatomi program C paling sederhana, lalu menambahkan fungsi pendukung dan preprocessor directive untuk melihat bagaimana bagian-bagian tersebut saling melengkapi.

Anatomi Program C Paling Sederhana #

Program C terkecil yang masih berguna terdiri dari satu preprocessor directive dan satu fungsi main. Preprocessor directive adalah baris yang diawali tanda # dan diproses sebelum kompilasi sesungguhnya dimulai. Fungsi main adalah titik masuk (entry point) program: sistem operasi memanggil fungsi main ketika pengguna menjalankan executable hasil kompilasi.

Mari kita lihat bentuk paling sederhana dari program C yang dapat dijalankan:

c
#include <stdio.h>

int main(void) {
    printf("Halo Dunia!\n");
    return 0;
}

Output yang Dihasilkan:

text
Halo Dunia!

Mari kita telaah baris-baris kode di atas:

  1. Baris 1 (#include <stdio.h>): preprocessor directive yang meminta preprocessor menyisipkan isi file header stdio.h milik pustaka standar. Header ini berisi deklarasi fungsi input/output seperti printf.
  2. Baris 3 (int main(void)): mendefinisikan fungsi bernama main yang tidak menerima parameter (void) dan mengembalikan nilai bertipe int.
  3. Baris 4 (printf("Halo Dunia!\n");): memanggil fungsi printf dari pustaka standar untuk mencetak teks Halo Dunia! ke layar, diikuti karakter newline \n agar kursor pindah ke baris berikutnya.
  4. Baris 5 (return 0;): mengembalikan nilai 0 ke sistem operasi sebagai tanda program berakhir normal tanpa error.

Menambahkan Fungsi Pendukung #

Program nyata jarang hanya berisi satu fungsi main. Kita biasanya memecah logika menjadi beberapa fungsi pendek yang masing-masing melakukan satu tugas. Fungsi-fungsi pendukung tersebut didefinisikan di atas main sehingga compiler mengenalinya saat dipanggil di dalam main.

c
#include <stdio.h>

int tambah(int a, int b) {
    return a + b;
}

int main(void) {
    int hasil = tambah(7, 5);
    printf("Hasil: %d\n", hasil);
    return 0;
}

Output yang Dihasilkan:

text
Hasil: 12

Pada contoh di atas, fungsi tambah menerima dua parameter bertipe int dan mengembalikan hasil penjumlahannya. Fungsi main memanggil tambah(7, 5) dan menyimpan hasilnya ke variabel hasil. Penempatan fungsi tambah di atas main membuat compiler sudah mengenal tanda (signature) fungsi tersebut sebelum membaca pemanggilannya di dalam main.

Preprocessor Directive #define #

Selain #include, preprocessor directive yang sering kita jumpai pada bagian atas program adalah #define. Directive ini dipakai untuk membuat macro — pengganti teks sederhana yang akan disisipkan oleh preprocessor sebelum compiler membaca kode.

c
#include <stdio.h>

#define NAMA "Budi"
#define ULANG 3

int main(void) {
    for (int i = 0; i < ULANG; i++) {
        printf("Halo, %s! (ke-%d)\n", NAMA, i + 1);
    }
    return 0;
}

Output yang Dihasilkan:

text
Halo, Budi! (ke-1)
Halo, Budi! (ke-2)
Halo, Budi! (ke-3)

Sebelum compiler melihat kode, preprocessor mengganti setiap kemunculan NAMA menjadi string "Budi" dan ULANG menjadi angka 3. Setelah substitusi, compiler membaca kode seolah-olah kita menulis printf("Halo, %s! (ke-%d)\n", "Budi", i + 1);. Hal inilah yang membuat loop berjalan tepat tiga kali.

Kerangka Umum Program C #

Jika kita menarik benang merah dari ketiga contoh di atas, kerangka umum program C dapat digambarkan sebagai berikut:

  1. Bagian preprocessor directive (#include, #define, dll.) — biasanya diletakkan paling atas.
  2. Deklarasi atau definisi fungsi pendukung — boleh juga berupa prototype di file header.
  3. Definisi fungsi main — titik masuk yang wajib ada pada program yang dapat dijalankan.
  4. Di dalam tubuh main dan fungsi lain terdapat statement yang dibungkus oleh tanda kurung kurawal { } membentuk block.

Kerangka inilah yang akan kita lihat berulang pada setiap program C, baik yang berisi puluhan baris maupun ribuan baris. Sisa Chapter pada Section ini akan mengupas tuntas setiap bagian kerangka tersebut — mulai dari main, preprocessor directive, header file, hingga aturan penulisan.