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:
#include <stdio.h>
int main(void) {
printf("Halo Dunia!\n");
return 0;
}Output yang Dihasilkan:
Halo Dunia!Mari kita telaah baris-baris kode di atas:
- Baris 1 (
#include <stdio.h>): preprocessor directive yang meminta preprocessor menyisipkan isi file headerstdio.hmilik pustaka standar. Header ini berisi deklarasi fungsi input/output sepertiprintf. - Baris 3 (
int main(void)): mendefinisikan fungsi bernamamainyang tidak menerima parameter (void) dan mengembalikan nilai bertipeint. - Baris 4 (
printf("Halo Dunia!\n");): memanggil fungsiprintfdari pustaka standar untuk mencetak teksHalo Dunia!ke layar, diikuti karakter newline\nagar kursor pindah ke baris berikutnya. - Baris 5 (
return 0;): mengembalikan nilai0ke 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.
#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:
Hasil: 12Pada 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.
#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:
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:
- Bagian preprocessor directive (
#include,#define, dll.) — biasanya diletakkan paling atas. - Deklarasi atau definisi fungsi pendukung — boleh juga berupa prototype di file header.
- Definisi fungsi
main— titik masuk yang wajib ada pada program yang dapat dijalankan. - Di dalam tubuh
maindan 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.