Program yang berguna bisa mengambil keputusan dan mengulang tugas secara otomatis. Bayangkan sistem absensi — program harus memutuskan apakah karyawan hadir atau tidak, lalu mengulang proses untuk setiap karyawan. Di C++, ini dilakukan dengan percabangan dan perulangan. Mari kita pelajari keduanya.
Percabangan: if / else
if Dasar
#include <iostream>
using namespace std;
int main() {
int nilai = 75;
if (nilai >= 60) {
cout << "Lulus!" << endl;
}
return 0;
}
// Output: Lulus!
if / else
int nilai = 45;
if (nilai >= 60) {
cout << "Lulus" << endl;
} else {
cout << "Tidak lulus" << endl;
}
// Output: Tidak lulus
if / else if / else
int nilai = 82;
if (nilai >= 90) {
cout << "Grade: A" << endl;
} else if (nilai >= 80) {
cout << "Grade: B" << endl;
} else if (nilai >= 70) {
cout << "Grade: C" << endl;
} else if (nilai >= 60) {
cout << "Grade: D" << endl;
} else {
cout << "Grade: E (Tidak Lulus)" << endl;
}
// Output: Grade: B
Operator Ternary (Kondisi Singkat)
Untuk kondisi sederhana, kamu bisa menggunakan operator ternary ? ::
int umur = 20;
string status = (umur >= 18) ? "Dewasa" : "Anak-anak";
cout << status << endl;
// Output: Dewasa
Percabangan: switch
switch cocok digunakan saat kamu membandingkan satu variabel dengan banyak nilai:
int hari = 3;
switch (hari) {
case 1:
cout << "Senin" << endl;
break;
case 2:
cout << "Selasa" << endl;
break;
case 3:
cout << "Rabu" << endl;
break;
case 4:
cout << "Kamis" << endl;
break;
case 5:
cout << "Jumat" << endl;
break;
case 6:
case 7:
cout << "Akhir pekan" << endl;
break;
default:
cout << "Hari tidak valid" << endl;
}
// Output: Rabu
Jangan lupa
break! Tanpabreak, program akan terus mengeksekusi case berikutnya (fall-through). Terkadang ini disengaja (seperti case 6 dan 7 di atas), tapi biasanya adalah bug.
Perulangan: for
Gunakan for saat kamu tahu berapa kali perulangan akan terjadi:
// Syntax: for (inisialisasi; kondisi; update)
for (int i = 1; i <= 5; i++) {
cout << i << " ";
}
cout << endl;
// Output: 1 2 3 4 5
// Menghitung mundur
for (int i = 5; i >= 1; i--) {
cout << i << " ";
}
cout << endl;
// Output: 5 4 3 2 1
// Melompat dengan step 2
for (int i = 0; i <= 10; i += 2) {
cout << i << " ";
}
cout << endl;
// Output: 0 2 4 6 8 10
Loop dengan Array
int nilai[] = {85, 92, 78, 95, 88};
int jumlah = 5;
int total = 0;
for (int i = 0; i < jumlah; i++) {
total += nilai[i];
}
double rata_rata = (double)total / jumlah;
cout << "Rata-rata: " << rata_rata << endl;
// Output: Rata-rata: 87.6
Range-based for (C++11)
C++ modern memiliki sintaks yang lebih bersih untuk iterasi:
int angka[] = {1, 2, 3, 4, 5};
for (int n : angka) {
cout << n << " ";
}
cout << endl;
// Output: 1 2 3 4 5
Perulangan: while
Gunakan while saat kamu tidak tahu pasti berapa kali perulangan akan terjadi:
int angka = 1;
while (angka <= 5) {
cout << angka << " ";
angka++;
}
cout << endl;
// Output: 1 2 3 4 5
Contoh lebih nyata — menebak angka:
#include <iostream>
using namespace std;
int main() {
int rahasia = 7;
int tebakan = 0;
while (tebakan != rahasia) {
cout << "Tebak angka (1-10): ";
cin >> tebakan;
if (tebakan < rahasia) {
cout << "Terlalu kecil!" << endl;
} else if (tebakan > rahasia) {
cout << "Terlalu besar!" << endl;
}
}
cout << "Benar! Angkanya adalah " << rahasia << endl;
return 0;
}
Perulangan: do-while
do-while menjamin kode di dalam blok dieksekusi minimal sekali, baru kemudian cek kondisi:
int pilihan;
do {
cout << "=== Menu ===" << endl;
cout << "1. Lihat data" << endl;
cout << "2. Tambah data" << endl;
cout << "3. Keluar" << endl;
cout << "Pilihan: ";
cin >> pilihan;
} while (pilihan != 3);
cout << "Terima kasih, sampai jumpa!" << endl;
break dan continue
break — Keluar dari Loop
for (int i = 1; i <= 10; i++) {
if (i == 6) {
break; // keluar dari loop saat i = 6
}
cout << i << " ";
}
cout << endl;
// Output: 1 2 3 4 5
continue — Lewati Iterasi Ini
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0) {
continue; // lewati angka genap
}
cout << i << " ";
}
cout << endl;
// Output: 1 3 5 7 9
Loop Bersarang (Nested Loop)
// Mencetak tabel perkalian 3x3
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
cout << i * j << "\t";
}
cout << endl;
}
// Output:
// 1 2 3
// 2 4 6
// 3 6 9
Pertanyaan yang Sering Diajukan
Kapan menggunakan for vs while?
Gunakan for saat kamu tahu berapa kali perulangan (iterasi dengan counter). Gunakan while saat kondisi berhentinya tergantung input pengguna atau kondisi yang berubah secara dinamis. Secara teknis, keduanya bisa saling menggantikan, tapi konvensi ini membuat kode lebih mudah dibaca.
Apa yang terjadi jika lupa break di switch?
Program akan terus mengeksekusi case berikutnya secara berurutan (fall-through) sampai menemukan break atau mencapai akhir switch. Ini kadang disengaja, tapi lebih sering menjadi bug. Selalu tambahkan break di setiap case kecuali kamu memang ingin fall-through.
Bagaimana cara membuat infinite loop dan kapan itu berguna?
while (true) { ... } atau for (;;) { ... } membuat loop yang tidak pernah berhenti sendiri — harus dihentikan dengan break dari dalam. Ini berguna untuk server yang harus terus berjalan, game loop, atau program yang menunggu input pengguna secara terus-menerus.
Apa perbedaan while dan do-while?
while mengecek kondisi terlebih dahulu, jadi jika kondisi langsung false, kode tidak akan pernah dieksekusi. do-while mengeksekusi kode minimal sekali lalu mengecek kondisi. Gunakan do-while untuk menu atau validasi input yang harus ditampilkan/ditanya setidaknya sekali.
Kesimpulan
Berikut ringkasan struktur kontrol di C++:
| Struktur | Kapan Digunakan |
|---|---|
if/else | Pengambilan keputusan berdasarkan kondisi |
switch | Memilih dari banyak nilai tetap |
for | Iterasi dengan jumlah yang diketahui |
while | Iterasi sampai kondisi terpenuhi |
do-while | Seperti while, tapi minimal sekali dieksekusi |
break | Keluar paksa dari loop atau switch |
continue | Lewati iterasi saat ini, lanjut ke berikutnya |
Artikel sebelumnya: Operator dan Ekspresi di C++ — cara melakukan perhitungan di C++.
Langkah selanjutnya: Fungsi di C++ — cara membuat fungsi untuk mengorganisir dan mengulang kode.