Episode ini menguasai seluruh operator C: aritmatika, bitwise, logika, perbandingan, dan ternary. Kalian juga akan mempraktikkan statement kondisi if, if-else, switch, ketiga jenis loop, serta break, continue, dan return sebagai alat kontrol alur.

Sintaks saja tidak membuat program berguna. Kekuatan sebuah program ada pada kemampuannya memproses data dan mengambil keputusan. Episode 4 membahas dua fondasi tersebut: operator yang mengolah nilai, dan kontrol alur yang mengarahkan urutan eksekusi.
C menawarkan operator yang lebih kaya daripada kebanyakan bahasa modern, terutama operator bitwise yang bekerja langsung pada level bit. Operator-operator ini penting untuk flag, enkripsi, dan pemrograman sistem. Kontrol alur mencakup percabangan dengan if dan switch, serta pengulangan dengan for, while, dan do-while.
Di akhir episode ini, kalian akan bisa menulis program yang membaca keputusan, mengulang proses, dan menghentikan loop dengan tepat — inti dari hampir semua algoritma.
Operator aritmatika bekerja seperti di matematika: penjumlahan +, pengurangan -, perkalian *, pembagian /, dan modulo %. Ada dua hal yang sering mengejutkan pemula: pembagian dua bilangan bulat menghasilkan bilangan bulat dengan sisa dibuang, dan % bekerja hanya pada bilangan bulat.
cat > aritmatika.c <<'EOF'
#include <stdio.h>
int main(void) {
int a = 17, b = 5;
printf("a / b = %d\n", a / b);
printf("a %% b = %d\n", a % b);
printf("a + b = %d\n", a + b);
return 0;
}
EOF
gcc -Wall -Wextra aritmatika.c -o aritmatika && ./aritmatikaPerhatikan 17 / 5 menghasilkan 3, bukan 3.4, karena kedua operand bertipe int. Untuk pembagian pecahan, minimal satu operand harus bertipe float atau double.
Operator bitwise bekerja pada representasi biner bilangan bulat: & AND, | OR, ^ XOR, ~ NOT, << geser kiri, dan >> geser kanan. Operator ini dipakai untuk memanipulasi flag dan mask:
cat > bitwise.c <<'EOF'
#include <stdio.h>
int main(void) {
unsigned char flag = 0;
flag |= 1 << 2;
printf("flag = %u\n", flag);
if (flag & (1 << 2)) {
printf("bit 2 aktif\n");
}
return 0;
}
EOF
gcc -Wall -Wextra bitwise.c -o bitwise && ./bitwisePola flag |= 1 << 2 menyalakan bit ke-2, dan flag & (1 << 2) memeriksa apakah bit itu aktif. Geser kiri << mengalikan nilai dengan pangkat dua, sedangkan geser kanan >> membaginya.
Operator perbandingan menghasilkan nilai benar atau salah: == sama dengan, != tidak sama, <, >, <=, dan >=. Operator logika menggabungkan beberapa kondisi: && AND, || OR, dan ! negasi. Ingat perbedaan antara = untuk penugasan dan == untuk perbandingan — menukar keduanya adalah error klasik yang tidak selalu ditangkap compiler.
Operator ternary ?: adalah if-else singkat yang menghasilkan nilai. Bentuknya kondisi ? nilai_benar : nilai_salah:
int usia = 20;
const char *status = usia >= 18 ? "dewasa" : "anak-anak";Ekspresi usia >= 18 ? "dewasa" : "anak-anak" membaca: jika usia 18 ke atas, status berisi dewasa, jika tidak berisi anak-anak. Ternary baik untuk penugasan singkat, tetapi hindari menyusunnya bertingkat karena susah dibaca.
Statement if menjalankan blok hanya jika kondisi bernilai benar. Pasangkan dengan else untuk cabang alternatif, dan else if untuk rangkaian kondisi berurutan. Kondisi dapat disusun dari operator perbandingan dan logika.
Ketika membandingkan satu variabel dengan banyak nilai konstanta, switch lebih bersih daripada rangkaian if-else. Setiap cabang diakhiri break agar eksekusi tidak jatuh ke cabang berikutnya:
#include <stdio.h>
int main(void) {
int nilai = 3;
switch (nilai) {
case 1:
printf("satu\n");
break;
case 2:
printf("dua\n");
break;
default:
printf("lainnya\n");
break;
}
return 0;
}Blok switch (nilai) membandingkan nilai dengan setiap case. default menangani semua nilai yang tidak cocok. Melewatkan break menyebabkan perilaku jatuh ke bawah yang kadang disengaja, tetapi sering kali justru bug.
for: cocok ketika jumlah iterasi sudah diketahui sejak awal.while: cocok ketika loop berjalan selama kondisi masih benar, misalnya membaca hingga akhir file.do-while: menjalankan badan minimal satu kali, cocok untuk menu yang harus selalu tampil sekali.for (int i = 0; i < 5; i++) {
printf("for %d\n", i);
}
int j = 0;
while (j < 5) {
printf("while %d\n", j);
j++;
}
int k = 0;
do {
printf("do-while %d\n", k);
k++;
} while (k < 5);Ketiga bentuk di atas mencetak angka 0 sampai 4. Perhatikan variabel loop bisa dideklarasikan langsung di dalam for sejak standar C99.
break menghentikan loop atau switch paling dalam. continue melompat ke iterasi berikutnya tanpa keluar dari loop. return mengakhiri fungsi sepenuhnya, sekaligus membawa nilai balik. Pola kontrol ini penting untuk algoritma pencarian: break saat nilai ditemukan, continue untuk melewati nilai yang tidak relevan, dan return untuk keluar lebih awal dari fungsi.
Warning
Loop while dan do-while berisiko infinite loop jika kondisi tidak pernah berubah. Pastikan selalu ada langkah yang mengubah variabel kondisi di dalam badan loop, misalnya increment.
Inti yang harus dibawa pulang:
= penugasan dan == perbandingan.?: adalah if-else singkat untuk penugasan sederhana.Di episode 5 selanjutnya kita akan membahas function dan modular programming — definisi fungsi, prototipe, dan scope variabel, parameter passing by value, header file dan translation unit, hingga recursion, inline function, dan function pointer sederhana.