Episode ini membangun sintaks dasar C++: struktur program lengkap, deklarasi variabel dan konstanta dengan tipe dasar, fungsi dengan scope dan return values, serta program interaktif memakai std::cin dan std::cout.

Setelah memahami arsitektur di balik C++, saatnya menulis kode yang benar-benar terkompilasi. Episode 3 membangun sintaks dasar: bagaimana sebuah program C++ disusun, bagaimana variabel dan konstanta dideklarasikan, dan bagaimana fungsi bekerja dengan scope dan nilai kembalian.
Sintaks C++ memadukan warisan C yang ringkas dengan fitur modern. Kalian akan melihat std::cin dan std::cout untuk pertama kalinya — antarmuka input-output yang type-safe dan akan menemani kalian sepanjang series ini.
Setiap program C++ setidaknya memiliki satu fungsi main. Eksekusi selalu dimulai dari fungsi ini, dan nilai kembaliannya menentukan status keluar program. Perhatikan struktur berikut:
cat > struktur.cpp <<'EOF'
#include <iostream>
int main() {
std::cout << "Struktur program C++\n";
return 0;
}
EOF
g++ -std=c++20 -Wall -Wextra struktur.cpp -o struktur
./strukturBaris #include <iostream> memuat deklarasi stream input-output. Fungsi main mengembalikan int: nilai 0 menandakan sukses, dan nilai lain menandakan ada error. Kalian bisa mengecek status keluar dengan echo $? setelah menjalankan program.
Sebuah program terdiri dari statement yang diakhiri titik koma. Sekumpulan statement yang dibungkus tanda kurung kurawal membentuk blok kode. Komentar menjelaskan maksud kode dan diabaikan compiler — pakai // untuk satu baris dan /* ... */ untuk beberapa baris.
Komentar bukan dekorasi. Di C++ yang kompleks, komentar yang menjelaskan mengapa sebuah keputusan diambil jauh lebih berharga daripada yang menjelaskan apa yang dilakukan kode.
C++ menyediakan tipe dasar: int untuk bilangan bulat, double dan float untuk pecahan, char untuk satu karakter, bool untuk nilai benar-salah, dan void untuk tidak ada nilai. Sejak C++11, auto bisa menebak tipe dari inisialisasi.
Deklarasikan variabel dengan menyertakan tipe atau memakai auto:
cat > variabel.cpp <<'EOF'
#include <iostream>
int main() {
int umur = 25;
double harga = 19.99;
char inisial = 'A';
bool aktif = true;
auto jumlah = 42;
const double pajak = 0.11;
constexpr int kuota = 100;
std::cout << umur << " " << harga << " " << inisial << " "
<< aktif << " " << jumlah << "\n";
std::cout << "Pajak: " << pajak << " Kuota: " << kuota << "\n";
}
EOF
g++ -std=c++20 variabel.cpp -o variabel
./variabelconst double pajak = 0.11 membuat konstanta yang tidak bisa diubah, sedangkan constexpr int kuota = 100 dihitung saat kompilasi. Gunakan auto saat tipe sudah jelas dari inisialisasi, dan sebutkan tipe eksplisit saat kejelasan lebih penting.
Suffix literal seperti 19.99 (double) atau 19.99f (float) menentukan tipe nilai. Sejak C++11, brace initialization int x{42} lebih aman daripada bentuk lama karena menolak penyempitan tipe yang tidak disengaja — misalnya memasukkan 3.7 ke int akan memicu peringatan atau error.
Fungsi membungkus logika agar bisa dipanggil berulang. Sebuah fungsi terdiri dari tipe kembalian, nama, parameter, dan tubuh fungsi:
cat > fungsi.cpp <<'EOF'
#include <iostream>
int kuadrat(int x) {
return x * x;
}
int main() {
int hasil = kuadrat(7);
std::cout << "Kuadrat 7 = " << hasil << "\n";
}
EOF
g++ -std=c++20 fungsi.cpp -o fungsi
./fungsiFungsi kuadrat menerima satu parameter int x dan mengembalikan x * x. Jika sebuah fungsi tidak mengembalikan nilai, tipe kembaliannya void.
Scope menentukan di mana sebuah nama bisa diakses. Variabel yang dideklarasikan di dalam blok hanya terlihat di dalam blok tersebut dan blok anaknya. Variabel global dideklarasikan di luar fungsi dan terlihat di mana saja, tetapi gunakan dengan hemat karena sulit dilacak.
Variabel lokal yang dideklarasikan di dalam blok dihancurkan saat blok selesai — waktunya ditentukan oleh scope, bukan oleh garbage collector. Ini adalah dasar dari RAII yang akan kalian kenal di episode 7.
std::cout mengirim data ke layar, std::cin membaca data dari keyboard. Operator << mengalirkan nilai ke output, dan >> mengalirkan input ke variabel. Gabungkan keduanya untuk program yang berinteraksi dengan pengguna:
cat > sapa.cpp <<'EOF'
#include <iostream>
#include <string>
int main() {
std::string nama;
std::cout << "Siapa nama kalian? ";
std::cin >> nama;
std::cout << "Halo, " << nama << "!\n";
}
EOF
g++ -std=c++20 sapa.cpp -o sapa
./sapastd::cin >> nama membaca satu kata dari input dan menyimpannya ke std::string. Untuk membaca satu baris penuh termasuk spasi, gunakan std::getline(std::cin, nama). Perhatikan bahwa std::string — bukan char[] ala C — adalah tipe string modern yang aman.
Warning
std::cin >> berhenti di spasi. Untuk nama dengan spasi, misalnya dua kata, gunakan std::getline agar seluruh baris terbaca.
Inti yang harus dibawa pulang:
main yang mengembalikan int.int, double, float, char, bool, dan auto.const untuk konstanta runtime, constexpr untuk konstanta kompilasi.std::cout untuk output, std::cin untuk input, std::getline untuk satu baris penuh.Di episode 4 selanjutnya kita akan membahas kontrol alur dan operator — operator aritmatika, logika, bitwise, dan incremental, statement kondisional if, switch, dan ternary, semua jenis perulangan termasuk range-based for, serta break dan continue. Inilah alat yang membuat program kalian mengambil keputusan.