⚡ Tutorial C++ Lengkap

Bahasa pemrograman powerhouse untuk aplikasi tingkat tinggi!

Dasar OOP Lanjutan

Iklan 728x90 - Pasang Kode AdSense Anda Di Sini

📚 Bagian 1: Pengenalan C++

Apa itu C++?

C++ adalah bahasa pemrograman tingkat tinggi yang dibuat oleh Bjarne Stroustrup pada tahun 1979. C++ adalah pengembangan dari bahasa C dengan menambahkan fitur pemrograman berorientasi objek (OOP). C++ dikenal karena kecepatan dan efisiensinya.

Sejarah C++

Mengapa Belajar C++?

Compiler dan IDE

Cara Kerja Compiler C++:

Source Code (.cpp) Compiler Object Code (.obj) Linker Executable (.exe)

IDE yang Direkomendasikan

IDE Platform Tipe
Visual Studio Windows Gratis/Paid
Code::Blocks Windows/Linux Gratis
Dev-C++ Windows Gratis
VS Code Semua Gratis
CLion Semua Paid

Program C++ Pertama

// Hello World dalam C++ // Simpan dengan nama: hello.cpp // Preprocessor directives #include // Using namespace std (cara lama) using namespace std; // Fungsi utama - titik masuk program int main() { // Output ke layar cout << "Hello, World!" << endl; // Kembalikan nilai (0 = sukses) return 0; }

Cara Compile dan Run

# Jika menggunakan Command Line (CMD/Terminal): # Compile: g++ hello.cpp -o hello # Run (Jalankan): ./hello # Linux/macOS hello.exe # Windows # Atau satu baris: g++ hello.cpp -o hello && ./hello

📹 Video Tutorial Bagian 1:

💻 Bagian 2: Dasar Pemrograman C++

Variabel dan Tipe Data

// Tipe Data Dasar C++ // Integer (bilangan bulat) int usia = 17; short angkaKecil = 10; long angkaBesar = 1000000; // Float (bilangan desimal) float tinggi = 165.5f; double phi = 3.1415926535; // Character char grade = 'A'; // Boolean bool isSiswa = true; bool lulus = false; // String (dari library string) string nama = "Budi";

Input dan Output

#include #include using namespace std; int main() { // Output cout << "Halo!" << endl; cout << "Umur: " << 17 << endl; // Input string nama; cout << "Masukkan nama: "; getline(cin, nama); int umur; cout << "Masukkan umur: "; cin >> umur; cout << "Halo " << nama << ", umurmu " << umur << endl; return 0; }

Operator

// Operator Aritmatika int a = 10, b = 3; cout << a + b << endl; // Penjumlahan: 13 cout << a - b << endl; // Pengurangan: 7 cout << a * b << endl; // Perkalian: 30 cout << a / b << endl; // Pembagian: 3 cout << a % b << endl; // Modulus: 1 // Operator Increment/Decrement a++; // a = a + 1 (post-increment) ++a; // a = a + 1 (pre-increment) a--; // a = a - 1 // Operator Assignment a += 5; // a = a + 5 a -= 3; // a = a - 3 a *= 2; // a = a * 2 // Operator Perbandingan cout << (a == b) << endl; // Sama dengan cout << (a != b) << endl; // Tidak sama cout << (a > b) << endl; // Lebih besar cout << (a < b) << endl; // Lebih kecil

Konstanta

// Konstanta - nilai yang tidak bisa diubah // Cara 1: const keyword const double PI = 3.14159; const int MAX_SCORE = 100; // Cara 2: #define (preprocessor) #define PI 3.14159 #define NAMA_APP "MyApp" // const vs #define // const: type-safe, mengikuti scope // #define: sederhana, tapi tanpa type checking

📹 Video Tutorial Bagian 2:

🔀 Bagian 3: Kontrol Alur Program

If-Else

// Struktur If-Else int nilai = 85; if (nilai >= 90) { cout << "A - Sempurna!" << endl; } else if (nilai >= 80) { cout << "B - Baik sekali!" << endl; } else if (nilai >= 70) { cout << "C - Baik" << endl; } else if (nilai >= 60) { cout << "D - Perlu peningkatan" << endl; } else { cout << "E - Tidak lulus" << endl; } // Operator ternary (singkat) string hasil = (nilai >= 60) ? "Lulus" : "Tidak Lulus";

Switch-Case

// Switch-Case untuk banyak kondisi int hari = 3; string namaHari; switch (hari) { case 1: namaHari = "Senin"; break; case 2: namaHari = "Selasa"; break; case 3: namaHari = "Rabu"; break; case 4: namaHari = "Kamis"; break; case 5: namaHari = "Jumat"; break; case 6: case 7: namaHari = "Weekend"; break; default: namaHari = "Tidak valid"; } cout << "Hari: " << namaHari << endl;

For Loop

// For Loop - mengulang sejumlah tertentu // Loop 0-9 (10 kali) for (int i = 0; i < 10; i++) { cout << i << " "; } // Output: 0 1 2 3 4 5 6 7 8 9 // Loop mundur for (int i = 10; i > 0; i--) { cout << i << " "; } // Output: 10 9 8 7 6 5 4 3 2 1 // Loop dengan lompatan 2 for (int i = 0; i < 20; i += 2) { cout << i << " "; } // Output: 0 2 4 6 8 10 12 14 16 18

While dan Do-While

// While Loop - selama kondisi benar int hitung = 1; while (hitung <= 5) { cout << "Hitung: " << hitung << endl; hitung++; } // Do-While - jalan sekali dulu, baru cek int angka; do { cout << "Masukkan angka (0 untuk keluar): "; cin >> angka; cout << "Anda memasukkan: " << angka << endl; } while (angka != 0);

Break dan Continue

// Break - keluar dari loop for (int i = 0; i < 10; i++) { if (i == 5) { break; // Keluar saat i = 5 } cout << i << " "; } // Output: 0 1 2 3 4 // Continue - skip iterasi ini for (int i = 0; i < 10; i++) { if (i % 2 == 0) { continue; // Skip angka genap } cout << i << " "; } // Output: 1 3 5 7 9

📹 Video Tutorial Bagian 3:

⚙️ Bagian 4: Fungsi dalam C++

Membuat Fungsi

// Struktur Fungsi // return_type nama_fungsi(parameter) { ... } // Fungsi tanpa return dan tanpa parameter void salam() { cout << "Halo, selamat pagi!" << endl; } // Fungsi dengan parameter void salamNama(string nama) { cout << "Halo, " << nama << "!" << endl; } // Fungsi dengan return value int tambah(int a, int b) { int hasil = a + b; return hasil; } // Fungsi main int main() { salam(); salamNama("Budi"); int x = 5, y = 3; int z = tambah(x, y); cout << "Hasil: " << z << endl; return 0; }

Pass by Value vs Pass by Reference

// Pass by Value - mengirim salinan void kuadrat1(int x) { x = x * x; cout << "Dalam fungsi: " << x << endl; } // Pass by Reference - mengirim alamat (menggunakan &) void kuadrat2(int &x) { x = x * x; cout << "Dalam fungsi: " << x << endl; } int main() { int angka = 5; kuadrat1(angka); cout << "Setelah fungsi 1: " << angka << endl; // Output: 25, kemudian 5 (tidak berubah!) kuadrat2(angka); cout << "Setelah fungsi 2: " << angka << endl; // Output: 25, kemudian 25 (berubah!) }

Overloading Fungsi

// Overloading - fungsi dengan nama sama tapi parameter berbeda // Tambah dua integer int tambah(int a, int b) { return a + b; } // Tambah dua double double tambah(double a, double b) { return a + b; } // Tambah tiga integer int tambah(int a, int b, int c) { return a + b + c; } int main() { cout << tambah(5, 3) << endl; // int: 8 cout << tambah(2.5, 3.5) << endl; // double: 6.0 cout << tambah(1, 2, 3) << endl; // int: 6 }

Fungsi Rekursif

// Rekursif - fungsi yang memanggil dirinya sendiri // Faktorial int faktorial(int n) { if (n <= 1) { return 1; // Base case } return n * faktorial(n - 1); // Recursive call } // Fibonacci int fibonacci(int n) { if (n <= 1) { return n; } return fibonacci(n - 1) + fibonacci(n - 2); } int main() { cout << "5! = " << faktorial(5) << endl; // 120 cout << "Fibonacci ke-6: " << fibonacci(6) << endl; // 8 }

📹 Video Tutorial Bagian 4:

📊 Bagian 5: Array dan Pointer

Array

// Array - kumpulan data dengan tipe sama // Cara 1: Deklarasi dan inisialisasi int angka[5] = {1, 2, 3, 4, 5}; // Cara 2: Hanya deklarasi int nilai[3]; nilai[0] = 90; nilai[1] = 85; nilai[2] = 88; // Array dengan for loop for (int i = 0; i < 5; i++) { cout << angka[i] << " "; } cout << endl; // Array multidimensi (matriks) int matriks[2][3] = { {1, 2, 3}, {4, 5, 6} }; // Akses elemen cout << matriks[0][1] << endl; // Output: 2

String sebagai Array

// String dalam C++ // Cara 1: C-style string (array of char) char nama[20] = "Budi"; // Cara 2: C++ string (lebih mudah) string nama2 = "Ani"; // Operasi string string s1 = "Hello"; string s2 = "World"; cout << s1 + " " + s2 << endl; // Concatenation cout << s1.length() << endl; // Panjang string cout << s1.substr(0, 3) << endl; // Substring: Hel cout << s1.find("lo") << endl; // Find: 3 // Menginput string dengan spasi string fullName; getline(cin, fullName);

Pointer

// Pointer - variabel yang menyimpan alamat memori int angka = 10; int *ptr; // Deklarasi pointer ptr = &angka; // Simpan alamat angka ke ptr cout << "Nilai angka: " << angka << endl; cout << "Alamat angka: " << &angka << endl; cout << "Nilai melalui ptr: " << *ptr << endl; // Output: // Nilai angka: 10 // Alamat angka: 0x7fff5fbff8ac // Nilai melalui ptr: 10 // Mengubah nilai melalui pointer *ptr = 20; cout << angka << endl; // Output: 20 (angka berubah!)

Pointer dan Array

// Hubungan pointer dan array int arr[5] = {10, 20, 30, 40, 50}; int *p = arr; // Tanpa & karena array name = pointer ke elemen pertama // Akses elemen dengan pointer cout << *p << endl; // arr[0] = 10 cout << *(p + 1) << endl; // arr[1] = 20 cout << *(p + 2) << endl; // arr[2] = 30 // Pointer arithmetic p++; // Pindah ke elemen berikutnya cout << *p << endl; // 20 // Loop dengan pointer for (int *q = arr; q < arr + 5; q++) { cout << *q << " "; }

Dynamic Memory

// Dynamic Memory Allocation (new dan delete) // Alokasi memori untuk satu variabel int *p = new int; *p = 100; cout << *p << endl; delete p; // Bebaskan memori // Alokasi array dinamis int n; cin >> n; int *arr = new int[n]; // Isi array for (int i = 0; i < n; i++) { arr[i] = i * 10; } // Tampilkan for (int i = 0; i < n; i++) { cout << arr[i] << " "; } delete[] arr; // Hapus array

📹 Video Tutorial Bagian 5:

🏗️ Bagian 6: Struktur Data

Struct

// Struct - kumpulan variabel (bisa berbeda tipe) struct Siswa { string nama; int umur; double nilai; }; int main() { // Membuat variabel struct Siswa siswa1; // Mengisi data siswa1.nama = "Budi"; siswa1.umur = 16; siswa1.nilai = 90.5; // Akses anggota cout << "Nama: " << siswa1.nama << endl; cout << "Nilai: " << siswa1.nilai << endl; // Array of struct Siswa kelas[3]; return 0; }

Vector (Array Dinamis)

// Vector - array yang bisa tumbuh/menyusut #include using namespace std; int main() { vector<int> angka; // Tambah elemen angka.push_back(10); angka.push_back(20); angka.push_back(30); // Akses elemen cout << angka[0] << endl; // 10 cout << angka.at(1) << endl; // 20 (dengan bounds checking) // Ukuran cout << angka.size() << endl; // 3 // Hapus elemen terakhir angka.pop_back(); // Iterasi for (int i = 0; i < angka.size(); i++) { cout << angka[i] << " "; } return 0; }

Stack dan Queue

// Stack - LIFO (Last In First Out) #include stack<int> s; s.push(10); // Push: masukkan elemen s.push(20); s.push(30); cout << s.top() << endl; // Lihat elemen atas: 30 s.pop(); // Hapus elemen atas cout << s.top() << endl; // Sekarang: 20 // Queue - FIFO (First In First Out) #include queue<int> q; q.push(10); // Enqueue q.push(20); q.push(30); cout << q.front() << endl; // Elemen pertama: 10 q.pop(); // Dequeue cout << q.front() << endl; // Sekarang: 20

Map

// Map - associative array (key-value) #include map<string, int> umur; // Menambah data umur["Budi"] = 17; umur["Ani"] = 16; umur["Citra"] = 18; // Akses data cout << "Umur Budi: " << umur["Budi"] << endl; // Cek key ada atau tidak if (umur.find("Dodi") != umur.end()) { cout << "Ada" << endl; } else { cout << "Tidak ada" << endl; } // Iterasi for (auto &pair : umur) { cout << pair.first << ": " << pair.second << endl; }

📹 Video Tutorial Bagian 6:

🏛️ Bagian 7: Pemrograman Berorientasi Objek (OOP)

Konsep OOP:

📦 Class 📝 Object 🔗 Inheritance

Class dan Object

// Class - template untuk membuat object class Mobil { public: // Akses publik // Atribut (properties) string merk; string warna; int tahun; // Constructor Mobil() { cout << "Mobil dibuat" << endl; } // Method (function) void jalankan() { cout << merk << " sedang berjalan!" << endl; } void info() { cout << warna << " " << merk << " " << tahun << endl; } }; int main() { // Membuat object Mobil mobil1; mobil1.merk = "Toyota"; mobil1.warna = "Merah"; mobil1.tahun = 2020; mobil1.jalankan(); mobil1.info(); return 0; }

Encapsulation

// Encapsulation - menyembunyikan data dengan private class BankAccount { private: // Hanya bisa diakses dari dalam class string nomorRekening; double saldo; public: // Constructor BankAccount(string noRek, double saldoAwal) { nomorRekening = noRek; saldo = saldoAwal; } // Getter - mengambil nilai double getSaldo() { return saldo; } // Setter - mengubah nilai dengan validasi void setor(double jumlah) { if (jumlah > 0) { saldo += jumlah; cout << "Berhasil setor " << jumlah << endl; } } void tarik(double jumlah) { if (jumlah <= saldo) { saldo -= jumlah; cout << "Berhasil tarik " << jumlah << endl; } else { cout << "Saldo tidak cukup!" << endl; } } };

Inheritance (Pewarisan)

// Inheritance - class anak mewarisi class induk // Class Induk (Parent) class Hewan { public: string nama; Hewan(string n) { nama = n; } void makan() { cout << nama << " sedang makan" << endl; } }; // Class Anak (Child) - mewarisi dari Hewan class Kucing : public Hewan { public: Kucing(string n) : Hewan(n) { // Memanggil constructor parent } // Method khusus Kucing void meong() { cout << nama << " mengeong: Meong!" << endl; } // Override method void makan() { cout << nama << " makan ikan" << endl; } }; int main() { Kucing kucing("Kitty"); kucing.makan(); // Override: Kitty makan ikan kucing.meong(); // Method khusus: Kitty mengeong }

Polymorphism

// Polymorphism - satu nama, banyak bentuk // Menggunakan virtual function class Bentuk { public: virtual void gambar() { cout << "Menggambar bentuk" << endl; } }; class Lingkaran : public Bentuk { public: void gambar() override { cout << "Menggambar Lingkaran" << endl; } }; class Persegi : public Bentuk { public: void gambar() override { cout << "Menggambar Persegi" << endl; } }; int main() { Bentuk *b1 = new Lingkaran(); Bentuk *b2 = new Persegi(); b1->gambar(); // Output: Menggambar Lingkaran b2->gambar(); // Output: Menggambar Persegi }

📹 Video Tutorial Bagian 7:

🚀 Bagian 8: Proyek C++

💡 Ide Proyek C++

Contoh: Kalkulator Sederhana

#include using namespace std; int main() { char operasi; double angka1, angka2; cout << "=== KALKULATOR ===" << endl; cout << "Masukkan operasi (+ - * /): "; cin >> operasi; cout << "Angka pertama: "; cin >> angka1; cout << "Angka kedua: "; cin >> angka2; switch(operasi) { case '+': cout << "Hasil: " << (angka1 + angka2); break; case '-': cout << "Hasil: " << (angka1 - angka2); break; case '*': cout << "Hasil: " << (angka1 * angka2); break; case '/': if (angka2 != 0) cout << "Hasil: " << (angka1 / angka2); else cout << "Error: Pembagian nol!"; break; default: cout << "Operasi tidak valid!"; } cout << endl; return 0; }

Contoh: Game Tebak Angka

#include #include #include using namespace std; int main() { srand(time(0)); // Seed random int angkaRahasia = rand() % 100 + 1; int tebakan, percobaan = 0; cout << "=== GAME TEBAK ANGKA ===" << endl; cout << "Tebak angka antara 1-100" << endl; do { cout << "Masukkan tebakan: "; cin >> tebakan; percobaan++; if (tebakan > angkaRahasia) { cout << "Terlalu besar! Coba lagi." << endl; } else if (tebakan < angkaRahasia) { cout << "Terlalu kecil! Coba lagi." << endl; } else { cout << "🎉 BENAR! Angkanya adalah " << angkaRahasia << endl; cout << "Anda menebak dalam " << percobaan << " percobaan" << endl; } } while (tebakan != angkaRahasia); return 0; }

Iklan 728x90 - Pasang Kode AdSense Anda Di Sini

Iklan 728x90 - Pasang Kode AdSense Anda Di Sini

Quiz C++