Setiap programmer C memulai perjalanan dengan program yang sama: mencetak teks ke layar. Program “Halo, Dunia!” memang terlihat sederhana, tetapi di baliknya terdapat konsep penting seperti struktur file, fungsi main, header standar, dan konvensi keluaran. Pada Chapter ini kita akan menulis, mengompilasi, dan menjalankan program C pertama kita, lalu membedah setiap barisnya untuk memahami apa yang sebenarnya terjadi.
Struktur Dasar Program C #
Setiap program C yang bisa dijalankan minimal memiliki satu fungsi bernama main. Fungsi main adalah titik masuk yang dipanggil sistem operasi ketika executable dijalankan. Tanpa main, linker akan mengeluh tidak menemukan entry point.
Bentuk paling sederhana program C adalah:
#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>): direktif preprocessor yang menyertakan header Standard Input/Output. Header ini berisi deklarasi fungsiprintfyang kita pakai untuk mencetak teks. - Baris 3 (
int main(void)): deklarasi fungsimaindengan tipe kembalianint. Tandavoiddi parameter menyatakan fungsimaintidak menerima argumen dari caller (sistem operasi). - Baris 4 (
{): tanda kurung kurawal buka menandai awal tubuh fungsi. - Baris 5 (
printf("Halo, Dunia!\n");): memanggil fungsiprintfuntuk mencetak string literal"Halo, Dunia!\n"ke standard output. Karakter\nadalah escape sequence yang menghasilkan baris baru. - Baris 6 (
return 0;): mengembalikan nilai0ke sistem operasi; nilai0berarti program berakhir sukses. - Baris 7 (
}): tanda kurung kurawal tutup menandai akhir tubuh fungsi.
Kompilasi dan Eksekusi #
Simpan kode di atas ke file halo.c, lalu kompilasi dan jalankan:
gcc -std=c11 -Wall -Wextra -o halo halo.c
./haloOutput yang Dihasilkan:
Halo, Dunia!Perintah gcc mengubah file sumber halo.c menjadi executable halo. Prefiks ./ diperlukan saat menjalankan executable di direktori kerja saat ini karena shell Linux tidak mencari executable di direktori kerja saat ini secara default.
Menampilkan Variabel dengan Format Specifier #
Program pertama hanya mencetak teks tetap. Selanjutnya, kita akan mencetak nilai variabel. Fungsi printf mendukung format specifier yang mengganti placeholder dengan nilai variabel yang kita berikan.
#include <stdio.h>
int main(void) {
char nama[] = "Budi";
int umur = 17;
float tinggi = 168.5f;
printf("Nama : %s\n", nama);
printf("Umur : %d tahun\n", umur);
printf("Tinggi : %.1f cm\n", tinggi);
return 0;
}Output yang Dihasilkan:
Nama : Budi
Umur : 17 tahun
Tinggi : 168.5 cmMari kita telaah baris-baris kode di atas:
- Baris 4 (
char nama[] = "Budi";): array karakter otomatis diisi string literal"Budi"; compiler menentukan ukuran array menjadi 5 (4 karakter + terminator null). - Baris 5 (
int umur = 17;): variabel bertipeintdiisi nilai17. - Baris 6 (
float tinggi = 168.5f;): variabel bertipefloatdiisi168.5; akhiranfmenandakan literal bertipefloat, bukandouble. - Baris 8 (
%s): format specifier untuk mencetak string;printfmembaca argumennamasebagai pointer kechar. - Baris 9 (
%d): format specifier untukint. - Baris 10 (
%.1f): format specifier untukfloat/doubledengan satu digit di belakang koma.
Menggabungkan Beberapa printf #
Beberapa pemanggilan printf dapat dipecah agar kode lebih rapi. Kita juga bisa menyertakan beberapa argumen sekaligus dalam satu pemanggilan printf:
#include <stdio.h>
int main(void) {
printf("== Program Pertama ==\n");
printf("Bahasa : C\n");
printf("Standar: C11\n");
printf("Compiler: GCC %d.%d.%d\n",
__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__);
printf("=====================\n");
return 0;
}Output yang Dihasilkan:
== Program Pertama ==
Bahasa : C
Standar: C11
Compiler: GCC 14.2.0
=====================Mari kita telaah baris-baris kode di atas:
- Baris 4-6 (
printf(...)): tiga pemanggilan terpisah yang masing-masing mencetak satu baris teks tetap. - Baris 7-8 (
printf("...%d.%d.%d\n", __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__)): satu pemanggilanprintfdengan tiga format specifier%ddan tiga argumen yang bersesuaian; tiga makro GCC menyatakan versi compiler. - Baris 9 (
printf("=====================\n");): mencetak garis pemisah yang di dalamnya hanya ada karakter=. - Baris 10 (
return 0;): program berakhir sukses.
Latihan Mandiri #
Sebelum lanjut ke bab berikutnya, coba modifikasi program pertama dengan latihan-latihan berikut:
- Ganti teks
"Halo, Dunia!"menjadi"Halo, [nama kamu]!"dan kompilasi ulang. - Tambahkan dua variabel
int a = 5;danint b = 7;, lalu cetak hasila + bmemakaiprintf("Hasil: %d\n", a + b);. - Coba hilangkan tanda titik koma di akhir baris
printfpertama dan baca pesan kesalahan compiler.
- Latihan ketiga di atas sengaja memicu kesalahan agar kita terbiasa membaca pesan compiler. Pesan expected ‘;’ before ‘}’ token terlihat menakutkan bagi pemula, tetapi sebenarnya menunjuk lokasi yang sangat spesifik: compiler menemukan
}ketika mengharapkan akhir pernyataan dengan;. - Hindari kebiasaan menulis
void main()alih-alihint main(void). Tandavoiddi kembalianmainbukan standar ISO C yang sah dan dapat menyebabkan perilaku tak terdefinisi pada beberapa sistem operasi. Gunakan selaluint main(void)untuk program tanpa argumen command line.