⚡ C++

Bahasa cepat dan powerful buat sistem, game engine, dan competitive programming.

Pengenalan C++

C++ adalah bahasa pemrograman tingkat menengah yang gabungin kecepatan bahasa low-level (kayak C) dengan fitur OOP. Dipakai buat game engine, sistem operasi, sampai trading system yang butuh performa tinggi.

File C++ berekstensi .cpp, harus di-compile dulu jadi file executable sebelum bisa dijalankan.

💡 C++ itu "dekat ke hardware" — kamu ngatur memori secara manual, beda sama Python/JavaScript yang otomatis.
cpp
#include <iostream>
using namespace std;

int main() {
    // Ini komentar satu baris

    /*
     * Ini komentar
     * multi-baris
     */
    cout << "Halo Dunia!" << endl;
    return 0;
}
📌 Bagian Penting: #include <iostream> wajib ada kalau mau pakai cout/cin. return 0; di akhir main() menandakan program selesai tanpa error — walau sering "boleh dihilangkan" di beberapa compiler, tetap dibiasakan menulisnya.
🐞 Error Umum di Bagian Ini
error: 'cout' was not declared in this scope
Lupa #include <iostream> atau lupa using namespace std;.
Fix: tambahkan kedua baris itu di paling atas file, sebelum int main().
error: expected ';' before 'return'
Lupa titik koma di statement sebelumnya — error paling umum di C++.
Fix: cek baris sebelum pesan error muncul, tambahkan ; yang hilang.

Struktur Dasar

Setiap program C++ butuh fungsi main() sebagai titik awal eksekusi.

  • #include — memasukkan library, mis. <iostream>
  • using namespace std; — supaya tidak perlu tulis std:: tiap kali
  • int main() — fungsi wajib, titik program dimulai
  • cout << — buat nampilin output
cpp
#include <iostream>
using namespace std;

int main() {
    cout << "Program C++ pertamaku" << endl;
    cout << "Baris kedua" << endl;
    return 0;
}
📌 Bagian Penting: int main() mengembalikan angka — 0 berarti program berhasil selesai tanpa error. Sistem operasi/tools lain bisa membaca kode return ini untuk tahu apakah program berjalan sukses.
🐞 Error Umum di Bagian Ini
error: 'main' must return 'int'
Menulis void main() padahal C++ mengharuskan int main().
Fix: ganti jadi int main() { ... return 0; }.

Variabel & Tipe Data

C++ itu strongly typed, sama kayak Java. Tipe data harus dideklarasi di depan.

  • int — bilangan bulat
  • float / double — desimal
  • char — satu karakter, kutip satu
  • string — teks, butuh #include <string>
  • bool — true / false
cpp
#include <iostream>
#include <string>
using namespace std;

int main() {
    int umur = 21;
    double ipk = 3.75;
    char golongan = 'A';
    string nama = "Siti";
    bool aktif = true;

    cout << "Nama: " << nama << endl;
    cout << "Umur: " << umur << " tahun" << endl;
    cout << "IPK: " << ipk << endl;
    return 0;
}
📌 Bagian Penting: Butuh string (bukan cuma teks di dalam kutip)? Wajib #include <string> di atas — kalau lupa, compiler tidak akan kenal tipe string sama sekali.
🐞 Error Umum di Bagian Ini
error: 'string' was not declared in this scope
Lupa #include <string> saat memakai tipe string.
Fix: tambahkan #include <string> di baris paling atas.
error: invalid conversion from 'const char*' to 'char'
Menulis char huruf = "A"; pakai kutip dua padahal seharusnya kutip satu untuk char.
Fix: ganti ke kutip satu: char huruf = 'A';.

Input & Output

cin buat input, cout buat output. Arah panahnya beda: cin >> vs cout <<.

cpp
#include <iostream>
#include <string>
using namespace std;

int main() {
    string nama;
    int umur;

    cout << "Masukkan nama: ";
    cin >> nama;  // hanya baca 1 kata (berhenti di spasi)

    cout << "Masukkan umur: ";
    cin >> umur;

    cout << "Halo " << nama << ", umur " << umur << " tahun" << endl;
    return 0;
}
📌 Bagian Penting: cin >> nama cuma baca satu kata (berhenti di spasi pertama) — kalau butuh baca kalimat penuh (dengan spasi), pakai getline(cin, nama); sebagai gantinya.
🐞 Error Umum di Bagian Ini
(tidak error, tapi hasil salah) input "Budi Santoso" cuma kesimpen "Budi"
cin >> otomatis berhenti membaca di karakter spasi.
Fix: pakai getline(cin, nama); kalau butuh baca kalimat dengan spasi di dalamnya.

Operator

Sama pola dengan Java: aritmatika, perbandingan, logika.

cpp
#include <iostream>
using namespace std;

int main() {
    int a = 15, b = 4;

    cout << "a + b = " << (a + b) << endl; // 19
    cout << "a / b = " << (a / b) << endl; // 3, bukan 3.75
    cout << "a % b = " << (a % b) << endl; // 3

    bool hasil = (a > 10) && (b < 10);
    cout << "a>10 AND b<10: " << hasil << endl; // 1 (true)
    return 0;
}
📌 Bagian Penting: Sama seperti Java, pembagian antar int di C++ dibulatkan ke bawah. cout juga mencetak bool sebagai angka (1/0), bukan kata "true"/"false" — kecuali kamu pakai cout << boolalpha; dulu.
🐞 Error Umum di Bagian Ini
(tidak error, tapi output "1" bukan "true")
Secara default, cout mencetak boolean sebagai angka 1/0.
Fix: tambahkan cout << boolalpha; sebelum mencetak, supaya keluar "true"/"false".

Percabangan

if-else dan switch — sintaksnya identik dengan Java dan JavaScript.

cpp
#include <iostream>
using namespace std;

int main() {
    int nilai;
    cout << "Nilai: ";
    cin >> nilai;

    if (nilai >= 85) {
        cout << "Grade A" << endl;
    } else if (nilai >= 70) {
        cout << "Grade B" << endl;
    } else {
        cout << "Grade C" << endl;
    }

    int hari = 2;
    switch(hari) {
        case 1: cout << "Senin" << endl; break;
        case 2: cout << "Selasa" << endl; break;
        default: cout << "Hari lain" << endl;
    }
    return 0;
}
📌 Bagian Penting: Sama seperti Java, lupa break; di switch menyebabkan fall-through — eksekusi lanjut ke case berikutnya walau kondisinya sudah tidak cocok.
🐞 Error Umum di Bagian Ini
error: 'nilai' does not name a type
Variabel dipakai sebelum dideklarasikan, atau ada typo di nama variabel.
Fix: pastikan variabel dideklarasikan (mis. int nilai;) sebelum baris yang memakainya.
warning: this statement may fall through
Compiler modern memperingatkan kalau ada case di switch tanpa break.
Fix: tambahkan break; di akhir setiap case, kecuali memang sengaja mau fall-through.

Perulangan

for, while, do-while. Range-based for juga ada buat array/vector.

cpp
#include <iostream>
using namespace std;

int main() {
    // For
    cout << "For: ";
    for (int i = 1; i <= 5; i++) {
        cout << i << " ";
    }

    // While
    cout << "\nWhile: ";
    int j = 1;
    while (j <= 5) {
        cout << j << " ";
        j++;
    }

    // Range-based for (C++11+)
    int angka[] = {10, 20, 30};
    cout << "\nRange-for: ";
    for (int n : angka) {
        cout << n << " ";
    }
    return 0;
}
📌 Bagian Penting: Sama seperti bahasa lain, lupa meng-update variabel counter di dalam while (mis. lupa j++;) menyebabkan infinite loop — program akan "hang" tanpa error, harus dihentikan paksa.
🐞 Error Umum di Bagian Ini
(program hang, tidak pernah selesai)
Variabel kondisi tidak pernah berubah di dalam loop, jadi kondisinya selalu true.
Fix: pastikan ada statement yang mengubah variabel kondisi di setiap iterasi.

Fungsi

Fungsi di C++ harus dideklarasikan dengan tipe return yang jelas — beda dengan Python/JS yang lebih fleksibel.

cpp
#include <iostream>
using namespace std;

// Fungsi dengan return
int kuadrat(int x) {
    return x * x;
}

// Fungsi tanpa return (void)
void sapa(string nama) {
    cout << "Halo, " << nama << endl;
}

int main() {
    sapa("Budi");
    int hasil = kuadrat(5);
    cout << "5 kuadrat = " << hasil << endl;
    return 0;
}
📌 Bagian Penting: Fungsi harus sudah "dikenal" sebelum dipakai — kalau main() ditulis duluan lalu manggil fungsi yang didefinisikan di bawahnya, compiler akan error. Solusinya: tulis fungsi sebelum main(), atau buat deklarasi (prototype) di atas.
🐞 Error Umum di Bagian Ini
error: 'kuadrat' was not declared in this scope
Fungsi dipanggil sebelum dideklarasikan/didefinisikan di file.
Fix: pindahkan definisi fungsi ke atas main(), atau tambahkan prototype (mis. int kuadrat(int x);) di paling atas.
error: no return statement in function returning non-void
Fungsi punya return type (mis. int) tapi tidak ada return di dalamnya.
Fix: pastikan semua jalur logika di dalam fungsi diakhiri dengan return nilai yang sesuai.

Array

Array C++ punya ukuran tetap dan tidak otomatis dicek batasnya — beda dengan Java yang langsung crash rapi kalau out of bounds.

cpp
#include <iostream>
using namespace std;

int main() {
    int nilai[4] = {85, 90, 78, 92};

    cout << "Jumlah data: " << (sizeof(nilai) / sizeof(nilai[0])) << endl;
    cout << "Nilai pertama: " << nilai[0] << endl;

    for (int i = 0; i < 4; i++) {
        cout << nilai[i] << " ";
    }
    return 0;
}
📌 Bagian Penting: Ini beda penting dari Java: C++ tidak otomatis mengecek apakah index array valid. Mengakses index di luar batas tidak selalu langsung crash — kadang malah menghasilkan nilai sampah (undefined behavior) yang bikin bug susah dilacak. Selalu hati-hati dengan batas array secara manual.
🐞 Error Umum di Bagian Ini
(tidak selalu error — kadang nilai aneh/sampah muncul tanpa peringatan)
Mengakses index array yang tidak ada (mis. nilai[4] padahal ukurannya cuma 4, index valid 0-3) — C++ tidak melarangnya secara eksplisit, hasilnya "undefined behavior".
Fix: selalu pastikan index yang diakses berada dalam rentang 0 sampai ukuran - 1.

🚀 Mini Project: Konversi Suhu

Gabungkan fungsi, percabangan, dan input/output jadi program konversi suhu Celsius ke Fahrenheit dan Kelvin.

💡 Contoh Implementasi
cpp
#include <iostream>
using namespace std;

double celsiusKeFahrenheit(double c) {
    return (c * 9.0 / 5.0) + 32;
}

double celsiusKeKelvin(double c) {
    return c + 273.15;
}

int main() {
    double celsius;
    cout << "Masukkan suhu Celsius: ";
    cin >> celsius;

    cout << celsius << " C = " << celsiusKeFahrenheit(celsius) << " F" << endl;
    cout << celsius << " C = " << celsiusKeKelvin(celsius) << " K" << endl;

    if (celsius > 35) {
        cout << "Cuaca panas!" << endl;
    } else if (celsius < 15) {
        cout << "Cuaca dingin!" << endl;
    } else {
        cout << "Cuaca sedang." << endl;
    }
    return 0;
}
📌 Tantangan: Coba tambahkan konversi sebaliknya (Fahrenheit ke Celsius), atau buat menu pilihan pakai switch.

✦ Coba Sendiri

Tulis kode C++ di bawah, klik Run buat compile & jalanin langsung. Support input juga.

C++ Online Compiler Buka Tab Baru
💡 Compiler disediakan oleh Programiz. Tulis kode, klik Run, lihat output di kanan. Bisa input via terminal juga.
🎓

Selamat!

Telah menyelesaikan seluruh materi

C++ Beginner — web-ngoding
🔄 Versi baru tersedia