Belajar C++ - Kontrol Alur & Operator
Episode 4 of 24

Belajar C++ - Kontrol Alur & Operator

Episode ini membahas operator aritmatika, logika, bitwise, dan incremental, statement kondisional if, switch, dan ternary, semua jenis perulangan dari for hingga range-based for, serta penggunaan break dan continue untuk mengendalikan alur program.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

Program yang hanya menjalankan pernyataan berurutan dari atas ke bawah sangat terbatas. Untuk membangun logika yang nyata, kalian butuh alat pengambil keputusan: operator untuk memanipulasi nilai, statement kondisional untuk bercabang, dan perulangan untuk memproses data berulang.

Episode 4 mengajarkan seluruh bagian kontrol alur C++: operator aritmatika dan bitwise, if, switch, dan ternary, semua bentuk perulangan termasuk range-based for, serta break dan continue untuk mengendalikan alur di dalam perulangan.

Operator Aritmatika dan Incremental

Aritmatika Dasar

C++ menyediakan operator standar: +, -, *, /, dan % (modulo). Ingat bahwa membagi dua int menghasilkan int7 / 2 bernilai 3, bukan 3.5. Operator incremental ++ dan decremental -- menambah atau mengurangi nilai satu. Prefix ++x menambah dulu lalu memakai nilai, postfix x++ sebaliknya:

Operator aritmatika
cat > aritmatika.cpp <<'EOF'
#include <iostream>
 
int main() {
    int a = 10, b = 3;
    std::cout << (a + b) << " " << (a - b) << " "
              << (a * b) << " " << (a / b) << " "
              << (a % b) << "\n";
 
    int x = 5;
    int hasil = ++x;
    std::cout << "Prefix ++x: " << hasil << ", x=" << x << "\n";
}
EOF
g++ -std=c++20 aritmatika.cpp -o aritmatika
./aritmatika

Operator Logika dan Bitwise

Perbandingan dan Logika

Operator perbandingan ==, !=, <, >, <=, >= menghasilkan bool. Operator logika && (dan), || (atau), dan ! (negasi) menggabungkan kondisi. C++ memakai short-circuit evaluation: pada a && b, jika a salah, b tidak dievaluasi.

Bitwise

Operator bitwise bekerja langsung pada bit: & (AND), | (OR), ^ (XOR), ~ (NOT), << (shift kiri), dan >> (shift kanan). Shift kiri dikalikan dua untuk setiap bit, shift kanan membagi dua:

Manipulasi bit
cat > bitwise.cpp <<'EOF'
#include <iostream>
 
int main() {
    int flags = 0b1010;
    int mask = 0b0110;
 
    std::cout << "AND: " << (flags & mask) << "\n";
    std::cout << "OR:  " << (flags | mask) << "\n";
    std::cout << "XOR: " << (flags ^ mask) << "\n";
    std::cout << "Shift kiri: " << (1 << 3) << "\n";
    std::cout << "Shift kanan: " << (16 >> 2) << "\n";
}
EOF
g++ -std=c++20 bitwise.cpp -o bitwise
./bitwise

Literal 0b1010 menulis angka biner langsung. Bitwise sangat penting di sistem embedded, flags, dan optimasi rendah tingkat.

Statement Kondisional

if, switch, dan Ternary

Statement if menjalankan blok saat kondisi benar. Rantai if ... else if ... else memilih satu cabang dari banyak kemungkinan. switch cocok untuk membandingkan satu nilai terhadap banyak konstanta — setiap cabang diakhiri break. Operator ternary kondisi ? nilaiA : nilaiB adalah if satu baris yang mengembalikan nilai:

Kondisional switch dan ternary
cat > kondisi.cpp <<'EOF'
#include <iostream>
#include <string>
 
int main() {
    int hari = 3;
    switch (hari) {
        case 1: std::cout << "Senin\n"; break;
        case 2: std::cout << "Selasa\n"; break;
        case 3: std::cout << "Rabu\n"; break;
        default: std::cout << "Lainnya\n"; break;
    }
 
    int nilai = 75;
    std::string status = (nilai >= 60) ? "Lulus" : "Tidak";
    std::cout << status << "\n";
}
EOF
g++ -std=c++20 kondisi.cpp -o kondisi
./kondisi

Perulangan

for, while, dan do-while

Perulangan for memiliki inisialisasi, kondisi, dan increment dalam satu baris. while hanya memeriksa kondisi sebelum menjalankan blok, dan do-while menjamin blok dijalankan minimal sekali karena kondisi diperiksa di akhir:

Ketiga bentuk perulangan
cat > loop.cpp <<'EOF'
#include <iostream>
 
int main() {
    for (int i = 0; i < 3; ++i) {
        std::cout << "for: " << i << "\n";
    }
 
    int n = 0;
    while (n < 3) {
        std::cout << "while: " << n << "\n";
        ++n;
    }
 
    int m = 5;
    do {
        std::cout << "do-while: " << m << "\n";
        --m;
    } while (m > 0);
}
EOF
g++ -std=c++20 loop.cpp -o loop
./loop

Range-based for

Sejak C++11, perulangan atas kontainer jauh lebih ringkas dengan range-based for — tanpa indeks atau iterator manual:

Range-based for
cat > range.cpp <<'EOF'
#include <iostream>
#include <vector>
 
int main() {
    std::vector<int> angka{10, 20, 30};
 
    for (int x : angka) {
        std::cout << x << "\n";
    }
 
    for (const auto& x : angka) {
        std::cout << x * 2 << " ";
    }
    std::cout << "\n";
}
EOF
g++ -std=c++20 range.cpp -o range
./range

Bentuk for (int x : angka) menyalin setiap elemen, sedangkan for (const auto& x : angka) membaca tanpa menyalin — lebih efisien untuk tipe besar. Range-based for adalah standar di semua kode C++ modern.

Break, Continue, dan Pola Kontrol Alur

Mengendalikan Perulangan

break menghentikan perulangan sepenuhnya, sedangkan continue melompat ke iterasi berikutnya tanpa menjalankan sisa blok. Kombinasinya memungkinkan pola yang bersih seperti mencari nilai pertama yang memenuhi syarat.

continue melompati angka genap, dan break menghentikan perulangan saat i melebihi 7. Gunakan keduanya secara hemat — perulangan dengan banyak lompatan sulit dibaca. Pertimbangkan memindahkan logika ke fungsi kecil.

Penutup

Inti yang harus dibawa pulang:

  • Operator aritmatika, perbandingan, logika, dan bitwise punya presedensi berbeda.
  • if ... else if ... else, switch, dan ternary untuk bercabang.
  • for, while, dan do-while untuk perulangan klasik.
  • Range-based for adalah cara utama mengiterasi kontainer di C++ modern.
  • break menghentikan perulangan, continue melompat ke iterasi berikutnya.
  • Short-circuit evaluation mencegah evaluasi sisi kanan yang tidak perlu.

Di episode 5 selanjutnya kita akan membahas function dan modular programming — deklarasi dan definisi fungsi, overloading, default arguments, inline dan constexpr, pemisahan header dan source file dengan linkage, serta function pointers, lambda, dan std::function.

Belajar C++ - Kontrol Alur & Operator | Belajar C++