C tidak hanya mengeksekusi kode secara linear. Itu membuat pilihan. At the heart of every decision a C program makes lies the Boolean expression. Whether you are using an if statement or a while loop, the logic boils down to one thing: is this condition true or false?
Mari kita lihat contoh dasarnya.
Di sini, program meminta masukan. Ini menyimpan nomor itu dalam variabel b. Kemudian ia memeriksa suatu kondisi. Ekspresi Boolean yang dimaksud adalah (b < 0). C mengevaluasi ini. Jika hasilnya benar, program akan mencetak "Nilainya negatif". Jika salah, program tidak melakukan apa pun. Itu tetap diam.
Aturannya sederhana. Jika ekspresi bernilai True, C akan mengeksekusi satu baris segera setelah if. Or, if you use braces {}, it executes the entire block inside. If the expression is False, C skips that line or block entirely.
Namun jarang sekali suatu program hanya membahas satu hasil saja. Anda sering kali juga perlu menangani angka nol atau positif.
Struktur ini menggunakan else if dan else untuk mencakup kasus lainnya. Ini menguji nol berikutnya. Jika gagal, maka diasumsikan nilainya positif.
Terkadang, keputusan menjadi rumit. You might need to check multiple conditions at once.
Pernyataan ini dibaca seperti bahasa alami. Jika x sama dengan y DAN j lebih besar dari k, maka setel z ke 1. Jika tidak, setel q ke 10. Anda akan menggunakan pernyataan seperti ini sepanjang karier C Anda. Sebagian besar keputusan akan sederhana. Kadang-kadang, mereka menjadi rumit.
Perhatikan baik-baik sintaksisnya. Kesalahan umum bagi pemula adalah membingungkan tugas dengan perbandingan.
C menggunakan == untuk menguji kesetaraan.
C menggunakan = untuk menetapkan nilai ke variabel.
Mencampurnya menyebabkan bug yang sulit ditemukan. Seseorang menetapkan suatu nilai. Yang lain memeriksa suatu kondisi. Mereka tidak bisa dipertukarkan.
C juga bergantung pada operator tertentu untuk operasi logis. Simbol && mewakili operasi Boolean AND. Ini memastikan kedua sisi kondisi harus benar.
Berikut ini referensi singkat untuk semua operator Boolean di C:
- == : kesetaraan
- != : ketimpangan
- < : kurang dari
- > : lebih besar dari
- <= : kurang dari atau sama dengan
- >= : lebih besar dari

Logika perulangan di C: while, do- while, dan for
Menggunakan perulangan sementara sangatlah mudah. Ini mencerminkan kesederhanaan pernyataan if standar. Pertimbangkan cuplikan ini:
sementara (a < b) { printf("%d\n", a); a = a + 1; }
Struktur ini mengeksekusi dua baris di dalam kurung kurawal berulang kali. Ini berhenti hanya ketika a lebih besar dari atau sama dengan b. Logikanya linier. Periksa kondisi. Jalankan tubuh. Mengulang.
C juga menawarkan konstruksi lakukan-sementara. Berbeda dengan perulangan while standar, perulangan ini memeriksa kondisi setelah eksekusi pertama. Ini menjamin blok kode berjalan setidaknya sekali.
Catatan: Contoh di atas menggunakan pernyataan if di dalam fungsinya. Do-sementara yang sebenarnya akan membungkus badan dan memeriksa kondisi di akhir.
Perulangan for sebagai singkatan
for loop pada dasarnya adalah pernyataan sementara yang dikompresi. Ini menggabungkan inisialisasi, pengujian, dan penambahan menjadi satu baris.
Lihatlah loop while standar ini:
x=1;
sementara (x<10) {
bla bla bla
x++; // x++ identik dengan x=x+1
}
Anda dapat menulis ulang ini sebagai perulangan for:
untuk(x=1; x<10; x++) { bla bla bla }
Komponennya jelas. x=1 diinisialisasi. x<10 pengujian. x++ kenaikan. Perulangan for hanya memadatkannya. Anda tidak terbatas pada variabel sederhana. Anda dapat memasukkan logika kompleks ke dalam slot tersebut.
Ambil contoh ini:
sebuah=1;
b=6;
sementara (a < b) {
a++;
printf("%d\n",a);
}
Ini menjadi:
untuk (a=1,b=6; a < b; a++,printf("%d\n",a));
Ini berhasil. Ini juga membingungkan. Operator koma mengizinkan beberapa pernyataan di bagian inisialisasi dan kenaikan. Itu tidak berfungsi di bagian tes. Banyak pengembang C menyukai kekompakan ini. Yang lain menganggapnya tidak dapat dibaca. Mereka memecahnya. Kedua pendekatan tersebut valid. Pilih berdasarkan siapa yang akan menjaga kode tersebut nantinya.
Bahaya = vs. == di C
Operator == menyebabkan sakit kepala. Pengembang sering kali salah mengetikkan satu = dalam ekspresi Boolean. Kompiler menerima keduanya. Perilakunya sangat berbeda.
Di C, ekspresi Boolean dievaluasi menjadi bilangan bulat. Nol itu Salah. Semua bilangan bulat bukan nol bernilai Benar. Ini berarti bilangan bulat apa pun bisa ada di dalam konteks Boolean.
Pertimbangkan kode C legal ini:
if (a) { printf("Bukan nol"); }
Jika a bukan 0, blok akan berjalan.
Sekarang lihat jika (a=b). Ini tidak membandingkan nilai. Ini menetapkan b ke a, lalu menguji nilai baru a. Jika b adalah 0, kondisinya adalah False. Jika b adalah hal lain, itu Benar. Variabel a berubah. Ini mungkin bukan yang Anda inginkan. Anda mungkin bermaksud == untuk perbandingan.
Fitur ini bukannya tidak berguna. Ini memiliki kasus penggunaan yang valid. Tapi itu adalah jebakan. Hati-hati dengan penggunaan = dan == Anda. Satu karakter mengubah logika dari perbandingan menjadi penugasan.


































