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++
- 1979 - "C with Classes" dikembangkan
- 1983 - Dinamai "C++" (++ = increment)
- 1998 - C++ Standard (ISO/IEC 14882)
- 2011 - C++11 (Modern C++)
- Sekarang - C++20 dan seterusnya
Mengapa Belajar C++?
- 🚀 Cepat - Performa sangat tinggi
- 🎮 Game Development - Unity, Unreal Engine
- 💻 Sistem Operasi - Windows, Linux, macOS
- 🔧 Embedded System - Robotika, IoT
- 🧠 Algorithm - Kompetisi pemrograman
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 🔗 InheritanceClass 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++
- Kalkulator CLI - Calculator di command line
- Game Ular - Snake game sederhana
- Aplikasi Manajemen Data - CRUD data siswa
- Tic-Tac-Toe - Game dua pemain
- Contact Book - Buku kontak sederhana
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