Langsung ke konten
KamusNgoding
Pemula Cpp 3 menit baca

Percabangan dan Perulangan di C++

#cpp #if-else #switch #for #while #do-while #break #continue #perulangan

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! Tanpa break, 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++:

StrukturKapan Digunakan
if/elsePengambilan keputusan berdasarkan kondisi
switchMemilih dari banyak nilai tetap
forIterasi dengan jumlah yang diketahui
whileIterasi sampai kondisi terpenuhi
do-whileSeperti while, tapi minimal sekali dieksekusi
breakKeluar paksa dari loop atau switch
continueLewati 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.

Artikel Terkait