Semua bahan sudah terkumpul: fungsi main() sebagai pintu masuk, header yang membawa peralatan pustaka standar, namespace yang merapikan nama, pernyataan dan ekspresi, komentar, cout, cin, cerr, hingga escape sequences. Chapter penutup Section Dasar Pemrograman ini menyatukan semuanya menjadi satu program kecil yang benar-benar berfungsi: program yang menyapa penggunanya. Kita akan menyusun kodenya, mengompilasinya dengan g++ -std=c++23 -Wall, menjalankannya dengan input nyata, lalu memeriksa exit code yang dilaporkan. Setelah program berjalan, kita sengaja membuat tiga kesalahan klasik pemula — lupa titik koma, lupa tipe kembalian, dan salah nama file — untuk membaca pesan error nyata yang dihasilkan compiler. Anggap ini gladi bersih pertama siklus kerja kita sebagai programmer C++: menulis, mengompilasi, menjalankan, memperbaiki.

Program Lengkap: Menyapa Pengguna #

Program berikut membaca satu baris nama dari keyboard, lalu mencetak sapaan personal. Tugasnya sederhana, tetapi hampir setiap materi section ini hadir di dalamnya:

  • Header <iostream> dan <string> membawa deklarasi yang kita butuhkan (Chapter Header dan #include).
  • Namespace ditulis lengkap sebagai std::cout dan std::cin (Chapter Namespace).
  • Pernyataan diakhiri titik koma dan disusun dalam blok { } milik main() (Chapter Pernyataan dan Ekspresi).
  • Komentar menjelaskan tujuan program kepada pembaca (Chapter Komentar).
  • std::getline membaca input berisi spasi, dan std::cout merangkai sapaan dengan operator << (Chapter Input dengan cin dan Output dengan cout).
  • Escape sequence \n menutup setiap baris keluaran (Chapter Escape Sequences).

Perhatikan atribut stdin pada blok kode berikut: alat verifikasi memberi input tersebut ke program persis seperti pengguna mengetiknya di terminal.

cpp
#include <iostream>
#include <string>

// Program sapa-pengguna: rangkuman materi Section Dasar Pemrograman.
// Membaca satu baris nama dari pengguna, lalu menyapanya lewat std::cout.
int main() {
    std::string nama;

    std::cout << "Siapa nama Anda? ";
    std::getline(std::cin, nama);            // membaca satu baris penuh

    std::cout << "Halo, " << nama << "! Selamat belajar C++.\n";

    return 0;
}

Output yang Dihasilkan:

text
Siapa nama Anda? Halo, Budi Santoso! Selamat belajar C++.

Mari kita bedah baris demi baris:

  1. Baris 1-2 (#include): preprocessor menyisipkan deklarasi std::cout dan std::cin dari <iostream>, serta tipe std::string dari <string>.
  2. Baris 4-5: dua baris komentar yang sepenuhnya diabaikan compiler; isinya ditujukan bagi manusia yang membaca file.
  3. Baris 6 (int main()): entry point program dengan bentuk tanpa parameter; eksekusi selalu dimulai dari sini.
  4. Baris 7 (std::string nama;): deklarasi variabel string kosong. Ia dideklarasikan lebih dulu karena getline butuh objek yang sudah ada untuk diisi.
  5. Baris 9: prompt dicetak TANPA \n agar jawaban pengguna menyambung di baris yang sama, persis seperti prompt perintah pada umumnya.
  6. Baris 10 (std::getline): membaca satu baris penuh, spasi termasuk, sampai pengguna menekan Enter. Inilah alasan Budi Santoso tersimpan utuh, bukan terpotong di spasi.
  7. Baris 12: rantai << menggabungkan teks pembuka, isi variabel, dan teks penutup; escape \n menutup baris keluaran.
  8. Baris 14 (return 0;): fungsi main() melaporkan angka nol kepada sistem operasi sebagai tanda program selesai dengan sukses.

Kompilasi, Jalankan, dan Periksa Exit Code #

Source code belum bisa dijalankan sebelum diterjemahkan compiler menjadi executable. Perintah berikut memakai flag yang akan menemani kita sepanjang course: -std=c++23 memilih standar bahasa yang dipakai, sedangkan -Wall menyalakan peringatan untuk kode yang mencurigakan. Detail flag lain (-Wextra, -g, -O2) dibedah pada Chapter Kompilasi Program di Section Persiapan Lingkungan.

bash
g++ -std=c++23 -Wall sapa.cpp -o sapa
echo "Budi Santoso" | ./sapa
echo "Exit code: $?"

Hasil eksekusinya:

text
Siapa nama Anda? Halo, Budi Santoso! Selamat belajar C++.
Exit code: 0

Baris pertama transkrip adalah output program; baris kedua membuktikan exit code 0 benar-benar sampai ke shell lewat variabel $?. Karena input diberikan lewat pipe (echo "Budi Santoso" |), ketikan tidak menggemakan diri di layar dan output program terbaca bersih. Cara memasok input lewat terminal inilah yang dilakukan alat verifikasi pada blok kode dengan atribut stdin — bedanya hanya, di percakapan sehari-hari, Anda yang mengetik. Dokumentasi lengkap opsi compiler tersedia di GCC Online Docs .

Ketika Kompilasi Gagal: Membaca Pesan Error #

Pesan error bukan hukuman, melainkan laporan kerja compiler yang paling jujur. G++ menyusunnya dengan pola yang konsisten: nama-file:baris:kolom: severity: pesan, lalu mencantumkan potongan baris yang bermasalah beserta tanda ^ penunjuk posisi. Kesalahan klasik pertama adalah lupa titik koma. Kode berikut (file sapa-titik-koma.cpp) sengaja kita rusak:

cpp
#include <iostream>

int main() {
    std::cout << "Halo\n"    // lupa titik koma di sini
    return 0;
}

Kompilasi file itu dengan g++ -std=c++23 -Wall -Wextra sapa-titik-koma.cpp -o sapa-titik-koma menghasilkan pesan berikut:

text
sapa-titik-koma.cpp: In function ‘int main()’:
sapa-titik-koma.cpp:4:26: error: expected ‘;’ before ‘return’
    4 |     std::cout << "Halo\n"    // lupa titik koma di sini
      |                          ^
      |                          ;
    5 |     return 0;
      |     ~~~~~~

Perhatikan tiga hal dari pesan di atas: lokasinya tepat (4:26, baris 4 kolom 26), jenisnya dinyatakan gamblang (error: expected ';'), dan compiler bahkan menyarankan perbaikan berupa karakter ; yang ditaruh di bawah tanda ^. Kesalahan kedua adalah menulis main() tanpa tipe kembalian:

cpp
#include <iostream>

main() {
    std::cout << "Halo\n";
    return 0;
}

Standar C++ mewajibkan main() bertipe int (aturannya terangkum di halaman main function cppreference). G++ 14 cukup baik hati: dengan -Wall, kode di atas hanya mendapat warning dan tetap dikompilasi karena compiler menganggap kembaliannya int. Perlakuan itu jebakan, bukan izin — dengan flag -pedantic-errors, pesan yang sama menjadi error:

text
sapa-tanpa-tipe.cpp:3:1: error: ISO C++ forbids declaration of ‘main’ with no type [-Wpedantic]
    3 | main() {
      | ^~~~

Compiler lain bahkan menolaknya langsung. Kesimpulannya: selalu tulis int main() secara eksplisit, dan perlakukan setiap warning sebagai tugas yang layak dibereskan, bukan debu yang boleh dibiarkan. Kesalahan ketiga terjadi sebelum compiler sempat membaca kode — salah mengetik nama file:

bash
g++ -std=c++23 -Wall sapan.cpp -o sapan
text
cc1plus: fatal error: sapan.cpp: No such file or directory
compilation terminated.

Pesan No such file or directory berarti file yang diminta tidak ada di folder saat itu; periksa ejaannya dengan ls, perbaiki nama pada perintah, lalu ulangi kompilasi. Ketiga contoh ini juga memperlihatkan pola penting: error dari g++ muncul lewat stderr, sehingga tetap terlihat meski output perintah kita alihkan — persis perilaku std::cerr yang kita bahas sebelumnya.

Rekap Section dan Langkah Berikutnya #

Section Dasar Pemrograman kini tuntas. Perjalanan kita dapat diringkas satu baris per chapter:

  • Fungsi main() — pintu masuk eksekusi, return value, dan argumen dari terminal.
  • Header dan #include — membawa deklarasi pustaka ke dalam source code.
  • Namespace — mencegah tabrakan nama dan menjelaskan makna std::.
  • Pernyataan dan Ekspresi — unit kerja terkecil, blok { }, dan kebebasan format.
  • Komentar — catatan untuk manusia yang diabaikan compiler.
  • Output dengan cout — operator <<, chaining, endl versus "\n".
  • Input dengan cin — operator >>, getline, dan kegagalan ekstraksi pertama.
  • Input-Output dengan cerr — tiga stream standar dan redirect stdout versus stderr.
  • Escape Sequences — \n, \t, \\, kutip, \0, hingga raw string literal.
  • Kompilasi Program Pertama — siklus penuh menulis-compile-jalankan-memperbaiki.

Dengan fondasi ini, kita siap naik kelas ke Section Variabel dan Tipe Data: menyimpan berbagai jenis data secara permanen di variabel, memilih tipe yang tepat, dan memahami konversi antar tipe. Program yang tadinya hanya menyapa akan segera bisa berhitung, mengambil keputusan, dan mengelola data yang jauh lebih kaya.