Keputusan nyata jarang hanya dua jalur. Nilai ujian masuk kategori A, B, C, D, atau E; umur pengguna masuk kategori anak, remaja, dewasa, atau lanjut usia; dan setiap kategori punya batasnya sendiri. Menyusun semua itu dengan if bersarang akan menghasilkan piramida kurung kurawal yang dalam dan sulit dibaca. Rantai else if meratakannya menjadi daftar pemeriksaan berurutan yang berbaris rapi pada satu kolom. Pada Chapter ini kita membangun rantai tersebut, memahami aturan pentingnya — evaluasi berhenti di kondisi pertama yang benar — lalu melihat mengapa urutan kondisi bisa mengubah hasil secara total.
Bentuk Rantai else if #
Secara teknis, else if bukan kata kunci baru; ia hanyalah else yang bloknya berisi satu if lain — persis pola bersarang dari Chapter sebelumnya, tetapi ditulis tanpa kurung kurawal sehingga tampak seperti satu rantai. Karena itu pula aturannya sama: compiler menguji kondisi dari atas ke bawah, dan begitu ada yang bernilai true, bloknya dijalankan lalu SELURUH sisa rantai dilewati. Mari kita klasifikasikan nilai ujian:
#include <iostream>
int main() {
int nilai = 82;
if (nilai >= 90) {
std::cout << "Predikat: A\n";
} else if (nilai >= 80) {
std::cout << "Predikat: B\n";
} else if (nilai >= 70) {
std::cout << "Predikat: C\n";
} else if (nilai >= 60) {
std::cout << "Predikat: D\n";
} else {
std::cout << "Predikat: E\n";
}
return 0;
}Output yang Dihasilkan:
Predikat: BMari kita telusuri evaluasinya langkah demi langkah:
- Baris 7 (
nilai >= 90): 82 tidak mencapai 90, kondisifalse, blok dilewati. - Baris 9 (
nilai >= 80): 82 memenuhi batas ini, kondisitrue, pesan “Predikat: B” tercetak. - Baris 11-13: meskipun
82 >= 70juga benar, kondisi ini TIDAK pernah diuji — rantai sudah berakhir di cabang pertama yang menang. - Baris 16-17 (
else): cabang penampung terakhir hanya tercapai bila semua kondisi di atasnya gagal.
Aturan “berhenti di yang pertama benar” inilah yang membuat rantai ini efisien: paling banyak satu blok yang dijalankan. Ia juga menjadi jaminan logika — karena kondisi sebelumnya sudah terbukti salah, kita tidak perlu menulis nilai >= 80 && nilai < 90; cukup nilai >= 80. Sintaks resmi if yang mencakup rantai ini bisa dicek di cppreference
.
Urutan Kondisi Menentukan Hasil #
Konsekuensi dari evaluasi berurutan: urutan yang salah menghasilkan klasifikasi yang salah, walau setiap kondisi sendiri benar. Lihat versi yang menyusun batas paling longgar di awal:
#include <iostream>
int main() {
int nilai = 95;
// URUTAN SALAH: kondisi paling longgar diuji lebih dulu
if (nilai >= 60) {
std::cout << "Predikat: D\n";
} else if (nilai >= 90) {
std::cout << "Predikat: A\n";
}
return 0;
}Output yang Dihasilkan:
Predikat: DNilai 95 seharusnya mendapat predikat A, tetapi program menyatakan D. Kesalahannya bukan pada kondisi — 95 >= 60 memang benar — melainkan pada urutan: kondisi longgar menang lebih dulu, dan cabang nilai >= 90 tidak pernah sampai diuji. Karena cabang pertama menang, cabang A menjadi kode mati yang tidak akan pernah tercapai untuk nilai berapa pun.
Kesalahan serupa mudah tersembunyi saat batas saling tumpang tindih, misalnya satu cabang memakai >= 80 dan cabang lain > 80. Gambarlah garis batasnya di kertas sebelum menulis kode, dan pastikan setiap nilai masuk ke tepat satu cabang.
Mengubah Kategori, Menambah Cabang #
Rantai else if mudah dikembangkan: menambah kategori berarti menyelipkan satu cabang di posisi urutan yang benar. Cabang else terakhir berperan sebagai penampung semua sisanya — pengaman bila data masuk di luar dugaan, misalnya nilai negatif hasil input yang belum divalidasi. Bila Anda perlu menjamin data benar-benar berada dalam rentang, letakkan validasi di cabang terakhir itu atau sebelum rantai dimulai; pola memvalidasi input secara berulang akan kita praktikkan dengan do-while pada Chapter do-while Loop.
Satu variasi lain yang layak dikenal: cabang mana pun boleh berisi blok multi-baris dengan kurung kurawal, bukan sekadar satu cout. Kita dapat mencetak laporan, menaikkan counter, bahkan memanggil fungsi — struktur rantainya tetap sama.
Dengan if, if-else, dan else if, kotak peralatan percabangan kita nyaris lengkap. Tinggal satu pola yang sering muncul di kode produksi: memilih aksi berdasarkan nilai tetap dari satu variabel. Chapter berikutnya mengenalkan switch beserta label case, kata break, dan perilaku fallthrough yang terkenal menggoda sekaligus berbahaya.