Bahasa C termasuk salah satu bahasa yang sangat longgar terhadap format penulisan — compiler tidak peduli dengan indentasi, jumlah spasi, atau letak baris baru. Kelonggaran ini memberi kebebasan tetapi juga tanggung jawab: kode yang ditulis tanpa konvensi dapat compile dengan baik namun tetap sulit dibaca manusia. Pada Chapter ini kita akan mempelajari aturan penulisan yang wajib diikuti agar kode compile, lalu melangkah ke konvensi penulisan yang dianjurkan agar kode mudah dirawat.

Titik Koma sebagai Pengakhir Statement #

Berbeda dengan Python yang memakai baris baru sebagai pemisah statement, C mengakhiri setiap statement dengan tanda titik koma (;). Tanda inilah yang menjadi penanda akhir statement; compiler tidak peduli apakah statement tersebut ditulis dalam satu baris atau dipecah ke beberapa baris.

c
#include <stdio.h>

int main(void) {
    int a = 5;
    int b = 3;
    int total = a + b;  printf("total = %d\n", total);
    int kali = a * b;
    printf("kali  = %d\n", kali);
    return 0;
}

Output yang Dihasilkan:

text
total = 8
kali  = 15

Mari kita telaah baris-baris kode di atas:

  1. Baris 5 (int total = a + b; printf(...);): dua statement ditulis pada satu baris yang sama. Compiler menerimanya karena titik koma memisahkan kedua statement — compiler tidak peduli dengan spasi atau baris baru.
  2. Baris 6-7 (int kali = a * b; dan printf(...);): dua statement dipisah ke baris yang berbeda. Hasil kompilasi identik dengan baris 5; perbedaannya hanya keterbacaan untuk manusia.

Walaupun compiler menerima kedua gaya di atas, menulis dua statement dalam satu baris hanya dianjurkan bila kedua statement tersebut sangat berkaitan dan singkat — misalnya pertukaran variabel. Pada umumnya, satu statement per baris adalah konvensi terbaik.

Whitespace dan Pemecah Baris #

Whitespace — spasi, tab, dan newline — di luar string literal diabaikan oleh compiler. Akibatnya, sebuah ekspresi panjang dapat dipecah menjadi beberapa baris untuk meningkatkan keterbacaan tanpa mengubah makna kode.

c
#include <stdio.h>

int main(void) {
    int x = 10;
    int y = 20;
    int z = 30;

    int sum = x +
              y +
              z;

    printf("sum = %d\n", sum);
    return 0;
}

Output yang Dihasilkan:

text
sum = 60

Pada contoh di atas, ekspresi x + y + z dipecah menjadi tiga baris. Compiler membaca baris-baris tersebut sebagai satu ekspresi yang sama karena tidak ada titik koma di akhir baris pertama dan kedua. Baris baru di sini hanya memengaruhi tampilan, bukan makna.

Case Sensitivity #

C memperlakukan huruf besar dan huruf kecil sebagai karakter yang berbeda. Total, total, dan TOTAL dianggap tiga identifier berbeda. Konvensi yang banyak dipakai: variabel dan fungsi dalam snake_case, konstanta macro dalam UPPER_SNAKE_CASE. Pemisahan gaya ini membantu pembaca membedakan sekilas antara variabel biasa dan konstanta macro.

Indentasi dan Penempatan Kurung Kurawal #

Indentasi tidak memengaruhi kompilasi, tetapi sangat memengaruhi keterbacaan. Kode yang konsisten terindentasi mempermudah kita melihat blok mana yang berada di dalam blok lainnya.

c
#include <stdio.h>

int main(void) {
    int total = 0;
    for (int i = 1; i <= 5; i++) {
        total += i;
    }
    printf("Total 1..5 = %d\n", total);

    if (total > 10) {
        printf("Lebih dari 10\n");
    } else {
        printf("10 atau kurang\n");
    }
    return 0;
}

Output yang Dihasilkan:

text
Total 1..5 = 15
Lebih dari 10

Pada contoh di atas, indentasi empat spasi dipakai untuk menandai kedalaman block. Tubuh main diindentasi satu tingkat, tubuh for diindentasi dua tingkat, dan tubuh if-else kembali dua tingkat. Walaupun compiler tetap menerima kode tanpa indentasi, pembaca manusia akan kesulitan menentukan di mana blok for berakhir tanpa bantuan visual.

Aturan Lain yang Perlu Diingat #

Beberapa aturan lain yang ketat di C:

  • Titik koma di akhir deklarasi struct: deklarasi struct diakhiri titik koma setelah kurung kurawal tutup.
    c
    struct Point {
        int x;
        int y;
    };  /* titik koma wajib */
  • Koma di akhir deklarasi variabel: beberapa variabel bertipe sama dapat dideklarasikan dalam satu statement.
    c
    int a, b, c;
  • Tidak ada titik koma setelah preprocessor directive: baris #include dan #define tidak diakhiri titik koma.
    c
    #include <stdio.h>     /* benar, tanpa titik koma */
  • Baris continuation dengan tanda backslash di akhir baris dipakai di macro yang panjang.
    c
    #define LUAS(r)  \
        (PI * (r) * (r))

Menghafal aturan-aturan ini tidak perlu; kita akan terbiasa seiring menulis kode. Yang penting adalah ketika compiler mengeluarkan pesan galat seperti error: expected ';' before '...', kita tahu bahwa kesalahan biasanya bersifat kecil dan mudah diperbaiki.