Compiler sudah terpasang, tetapi menulis kode C++ dengan editor teks polos membuat kita kehilangan banyak bantuan: autocomplete, navigasi simbol, go to definition, dan debugging visual. Editor modern menghemat banyak waktu ketika proyek DSA mulai berisi banyak file. Pada Chapter ini kita akan menyiapkan Visual Studio Code sebagai editor utama, lengkap dengan ekstensi C++ dan tiga berkas konfigurasi inti: c_cpp_properties.json, tasks.json, dan launch.json. Konfigurasi ini akan dipakai sepanjang Course.

Pilihan Editor Populer #

Beberapa editor yang umum dipakai untuk C++:

EditorKelebihanKekurangan
VS CodeRingan, ekstensi kaya, gratisPerlu konfigurasi awal
CLionIntelliSense canggih, debugger terintegrasiBerbayar, berat
NeovimRingan, sangat customizableCuram untuk pemula
Visual StudioDebugger terbaik di WindowsBerat, hanya Windows

Course ini akan memakai VS Code sebagai editor referensi karena gratis, lintas platform, dan cukup ringan untuk dijalankan pada mesin dengan sumber daya terbatas.

Memasang Visual Studio Code #

Unduh installer dari https://code.visualstudio.com/ sesuai sistem operasi. Setelah pemasangan, jalankan VS Code dan ikuti langkah berikut:

  1. Buka Command Palette dengan Ctrl+Shift+P (Windows/Linux) atau Cmd+Shift+P (macOS).
  2. Ketik shell command lalu pilih Shell Command: Install 'code' command in PATH (opsional, namun berguna untuk membuka VS Code dari terminal).
  3. Buka folder proyek dengan code . dari terminal di dalam folder tersebut.

Ekstensi Wajib untuk C++ #

Buka tab Extensions di VS Code (Ctrl+Shift+X), lalu pasang dua ekstensi berikut:

  1. C/C++ oleh Microsoft (ms-vscode.cpptools) — menyediakan IntelliSense, debugging, dan code browsing.
  2. C/C++ Extension Pack oleh Microsoft — bundel yang mencakup CMake Tools (berguna pada Chapter Penggunaan CMake).

Ekstensi tambahan yang membantu untuk DSA:

  • Code Runner (formulahendry.code-runner) — untuk eksekusi cepat tanpa konfigurasi.
  • Better C++ Syntax (jeff-hykin.better-cpp-syntax) — syntax highlighting yang lebih akurat.
  • CMake (twxs.cmake) — syntax highlighting untuk CMakeLists.txt.
  • Doxygen Documentation Generator (cschlosser.doxdocgen) — generate komentar dokumentasi otomatis.

Struktur Folder Proyek #

Sebelum konfigurasi, siapkan struktur folder proyek yang konsisten. Berikut contoh layout yang dipakai Course ini:

text
dsa-proyek/
├── .vscode/
│   ├── c_cpp_properties.json
│   ├── tasks.json
│   └── launch.json
├── src/
│   └── main.cpp
└── CMakeLists.txt (dibahas pada Chapter terakhir Section 2)

Struktur ini memisahkan kode sumber (src/), konfigurasi editor (.vscode/), dan konfigurasi build (CMakeLists.txt).

Konfigurasi c_cpp_properties.json #

Berkas c_cpp_properties.json mengatur IntelliSense: path include, definisi preprocessor, dan standar C++ yang dipakai. Letakkan berkas ini di .vscode/c_cpp_properties.json.

json
{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE"
            ],
            "compilerPath": "/usr/bin/g++",
            "cStandard": "c17",
            "cppStandard": "c++17",
            "intelliSenseMode": "linux-gcc-x64"
        }
    ],
    "version": 4
}

Penjelasan field penting:

  • includePath: direktori yang dipindai untuk header. ${workspaceFolder}/** menyertakan seluruh subfolder proyek.
  • compilerPath: lokasi compiler yang dipakai IntelliSense untuk meniru makro dan path bawaan.
  • cppStandard: standar C++ yang dipakai IntelliSense. Cocokkan dengan flag kompilasi (-std=c++17).
  • intelliSenseMode: target arsitektur dan compiler. Nilai linux-gcc-x64 cocok untuk GCC di Linux 64-bit.

Konfigurasi tasks.json untuk Build #

Berkas tasks.json mendefinisikan perintah build yang dapat dipanggil dari VS Code dengan Ctrl+Shift+B. Letakkan di .vscode/tasks.json.

json
{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++ build active file",
            "command": "/usr/bin/g++",
            "args": [
                "-std=c++17",
                "-O2",
                "-Wall",
                "-Wextra",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "compiler: /usr/bin/g++"
        }
    ]
}

Bedah Konfigurasi #

  1. label: nama task yang muncul di menu build. Bebas, tetapi harus unik.
  2. command: path absolut compiler. Pakai /usr/bin/g++ di Linux GCC, atau /usr/bin/clang++ di macOS.
  3. args: daftar flag compiler. Variabel ${file} akan diganti dengan path file aktif; ${fileDirname}/${fileBasenameNoExtension} menghasilkan path binary tanpa ekstensi.
  4. -g: menyertakan informasi debug yang dipakai oleh GDB/LLDB saat debugging.
  5. problemMatcher: $gcc memetakan pesan error compiler ke lokasi kode sumber sehingga kita bisa klik error untuk loncat ke baris yang bermasalah.
  6. group.isDefault: true: task ini menjadi default saat kita menekan Ctrl+Shift+B.

Konfigurasi launch.json untuk Debug #

Berkas launch.json mengatur debugger. Pastikan gdb (Linux) atau lldb (macOS) terpasang. Letakkan di .vscode/launch.json.

json
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "C++ Debug (g++)",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/${fileBasenameNoExtension}",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Pretty print untuk STL",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "miDebuggerPath": "/usr/bin/gdb",
            "preLaunchTask": "C/C++: g++ build active file"
        }
    ]
}

Bedah Konfigurasi #

  1. program: path binary hasil kompilasi. Harus cocok dengan output tasks.json.
  2. MIMode: gdb untuk Linux/MinGW, lldb untuk macOS.
  3. setupCommands dengan -enable-pretty-printing: membuat tampilan variabel std::vector, std::string, dan container STL lain menjadi terbaca di panel Variables.
  4. preLaunchTask: nama task yang dipanggil otomatis sebelum debugging dimulai. Harus cocok dengan label di tasks.json. Dengan ini, setiap kali kita tekan F5, VS Code mengompilasi ulang kode lalu menjalankan debugger.

Uji Coba Konfigurasi #

Buat file src/main.cpp dengan kode berikut untuk memverifikasi seluruh konfigurasi bekerja:

cpp
#include <iostream>
#include <vector>

int main() {
    std::vector<int> data = {5, 10, 15, 20};

    int total = 0;
    for (int v : data) {
        total += v;
    }

    std::cout << "Total: " << total << "\n";
    return 0;
}

Lakukan langkah berikut:

  1. Buka src/main.cpp di VS Code.
  2. Tekan Ctrl+Shift+B untuk build. Output task akan muncul di panel Terminal.
  3. Tekan F5 untuk debugging. Program berhenti di breakpoint jika kita pasang (klik kiri di gutter baris kode).
  4. Periksa panel Variables: data seharusnya tampil sebagai [5, 10, 15, 20] (bukan alamat mentah) berkat pretty printing.

Output saat dijalankan tanpa debugging:

text
Total: 50

Alternatif Editor: CLion dan Neovim #

Bagi yang lebih nyaman dengan IDE penuh atau editor terminal, dua alternatif berikut layak dipertimbangkan.

CLion #

CLion adalah IDE C++ dari JetBrains. Tidak perlu konfigurasi c_cpp_properties.json manual; CLion otomatis mendeteksi compiler dan CMake. Kelebihan: debugger terintegrasi sangat baik, refactoring canggih, dan integrasi unit testing bawaan. Kekurangan: berbayar (ada lisensi pelajar gratis) dan membutuhkan RAM besar (>4 GB disarankan).

Neovim dengan LSP #

Neovim dipadukan dengan clangd (Language Server Protocol) memberikan pengalaman mendekati VS Code dalam ukuran yang jauh lebih ringkas. Cocok untuk pengguna terminal yang sudah familiar dengan Vim. Konfigurasi minimal: pasang plugin nvim-lspconfig, arahkan ke clangd, dan gunakan :make untuk build.

Ringkasan #

Pada Chapter ini kita telah menyiapkan VS Code sebagai editor utama Course:

  • Editor pilihan: VS Code lintas platform dan gratis.
  • Ekstensi wajib: C/C++ oleh Microsoft.
  • Tiga berkas konfigurasi: c_cpp_properties.json (IntelliSense), tasks.json (build), launch.json (debug).
  • Pretty printing: wajib diaktifkan untuk membaca isi STL container saat debugging.
  • Alternatif: CLion untuk IDE penuh, Neovim untuk terminal.

Pada Chapter berikutnya kita akan menulis program C++ pertama yang lebih kaya dari sekadar “Hello World”, sekaligus memverifikasi toolchain bekerja end-to-end.