🚀 Modul Pembelajaran C++
Belajar C++ dari Dasar hingga Mahir - TecnoUpdate.web.id
Pengenalan C++
Apa itu C++?
C++ adalah bahasa pemrograman yang dikembangkan oleh Bjarne Stroustrup pada tahun 1979 sebagai pengembangan dari bahasa C. C++ adalah bahasa pemrograman yang powerful, efisien, dan banyak digunakan dalam pengembangan sistem operasi, game, aplikasi desktop, dan software yang membutuhkan performa tinggi.
Kenapa Belajar C++?
- Performance Tinggi: C++ memberikan kontrol penuh terhadap memori dan hardware
- Fleksibel: Mendukung pemrograman prosedural, object-oriented, dan generic
- Banyak Digunakan: Digunakan dalam game engines (Unreal Engine), browser (Chrome, Firefox), sistem operasi
- Foundation yang Kuat: Memahami C++ memudahkan belajar bahasa lain
- Karir yang Menjanjikan: Permintaan programmer C++ tetap tinggi dengan gaji kompetitif
Persiapan Belajar
Untuk memulai belajar C++, Anda memerlukan:
- Compiler C++: MinGW (Windows), GCC (Linux), Clang (Mac)
- Text Editor / IDE: Visual Studio Code, Code::Blocks, Dev-C++, atau Visual Studio
- Konsistensi: Latihan rutin dan kesabaran
Dasar-Dasar C++
Program C++ Pertama
Mari kita mulai dengan program "Hello World" klasik:
// Program Hello World #include <iostream> using namespace std; int main() { cout << "Hello, World!" << endl; return 0; }
Penjelasan Kode
#include <iostream>- Menyertakan library untuk input/outputusing namespace std- Menggunakan namespace standardint main()- Fungsi utama programcout- Untuk menampilkan output ke layarendl- Pindah baris barureturn 0- Mengakhiri program dengan status sukses
Struktur Program C++
// 1. Preprocessor Directives #include <iostream> // 2. Namespace using namespace std; // 3. Fungsi Main int main() { // 4. Statement/Perintah cout << "Belajar C++" << endl; // 5. Return Statement return 0; }
Komentar dalam C++
// Ini adalah komentar satu baris /* Ini adalah komentar multi baris */ int x = 10; // Komentar di akhir baris
📝 Latihan 1:
Buat program yang menampilkan nama Anda dan hobi favorit menggunakan cout!
Variabel dan Tipe Data
Apa itu Variabel?
Variabel adalah tempat penyimpanan data dalam memori komputer. Setiap variabel memiliki nama, tipe data, dan nilai.
Tipe Data Dasar
#include <iostream> using namespace std; int main() { // Integer (bilangan bulat) int umur = 25; // Float (bilangan desimal) float tinggi = 175.5; // Double (bilangan desimal presisi tinggi) double pi = 3.14159265359; // Character (karakter tunggal) char grade = 'A'; // Boolean (true/false) bool lulus = true; // String (teks) string nama = "TecnoUpdate"; // Menampilkan nilai variabel cout << "Nama: " << nama << endl; cout << "Umur: " << umur << " tahun" << endl; cout << "Tinggi: " << tinggi << " cm" << endl; return 0; }
Tabel Tipe Data
| Tipe Data | Ukuran | Range |
|---|---|---|
| int | 4 bytes | -2,147,483,648 to 2,147,483,647 |
| float | 4 bytes | 6-7 digit presisi |
| double | 8 bytes | 15-16 digit presisi |
| char | 1 byte | -128 to 127 |
| bool | 1 byte | true atau false |
Input dari User
#include <iostream> using namespace std; int main() { string nama; int umur; cout << "Masukkan nama Anda: "; cin >> nama; cout << "Masukkan umur Anda: "; cin >> umur; cout << "\nHalo " << nama << "!" << endl; cout << "Umur Anda: " << umur << " tahun" << endl; return 0; }
📝 Latihan 2:
Buat program kalkulator sederhana yang meminta user memasukkan dua angka, lalu tampilkan hasil penjumlahan, pengurangan, perkalian, dan pembagian!
Operator dalam C++
1. Operator Aritmatika
int a = 10, b = 3; cout << a + b; // Penjumlahan: 13 cout << a - b; // Pengurangan: 7 cout << a * b; // Perkalian: 30 cout << a / b; // Pembagian: 3 (integer division) cout << a % b; // Modulus (sisa bagi): 1
2. Operator Assignment
int x = 5; x += 3; // x = x + 3 (sekarang x = 8) x -= 2; // x = x - 2 (sekarang x = 6) x *= 2; // x = x * 2 (sekarang x = 12) x /= 3; // x = x / 3 (sekarang x = 4) x %= 3; // x = x % 3 (sekarang x = 1)
3. Operator Perbandingan
int a = 5, b = 10; cout << (a == b); // Sama dengan: false (0) cout << (a != b); // Tidak sama dengan: true (1) cout << (a > b); // Lebih besar: false (0) cout << (a < b); // Lebih kecil: true (1) cout << (a >= b); // Lebih besar atau sama: false (0) cout << (a <= b); // Lebih kecil atau sama: true (1)
4. Operator Logika
bool x = true, y = false; cout << (x && y); // AND: false cout << (x || y); // OR: true cout << (!x); // NOT: false
5. Operator Increment & Decrement
int x = 5; x++; // Post-increment: x = 6 ++x; // Pre-increment: x = 7 x--; // Post-decrement: x = 6 --x; // Pre-decrement: x = 5
📝 Latihan 3:
Buat program yang menghitung luas dan keliling lingkaran berdasarkan jari-jari yang diinput user! (π = 3.14159)
Kontrol Alur Program
1. If-Else Statement
#include <iostream> using namespace std; int main() { int nilai; cout << "Masukkan nilai: "; cin >> nilai; if (nilai >= 90) { cout << "Grade: A" << endl; } else if (nilai >= 80) { cout << "Grade: B" << endl; } else if (nilai >= 70) { cout << "Grade: C" << endl; } else if (nilai >= 60) { cout << "Grade: D" << endl; } else { cout << "Grade: E" << endl; } return 0; }
2. Switch-Case Statement
int pilihan; cout << "Menu:\n1. Tambah\n2. Kurang\n3. Kali\n4. Bagi\n"; cin >> pilihan; switch(pilihan) { case 1: cout << "Operasi Penjumlahan"; break; case 2: cout << "Operasi Pengurangan"; break; case 3: cout << "Operasi Perkalian"; break; case 4: cout << "Operasi Pembagian"; break; default: cout << "Pilihan tidak valid"; }
3. Loop: For
// Contoh 1: Menampilkan angka 1-10 for (int i = 1; i <= 10; i++) { cout << i << " "; } // Contoh 2: Tabel perkalian int n = 5; for (int i = 1; i <= 10; i++) { cout << n << " x " << i << " = " << (n * i) << endl; }
4. Loop: While
int i = 1; while (i <= 5) { cout << "Iterasi ke-" << i << endl; i++; }
5. Loop: Do-While
int angka; do { cout << "Masukkan angka positif: "; cin >> angka; } while (angka <= 0); cout << "Terima kasih!";
6. Break dan Continue
// Break: Keluar dari loop for (int i = 1; i <= 10; i++) { if (i == 5) break; cout << i << " "; } // Continue: Skip ke iterasi berikutnya for (int i = 1; i <= 10; i++) { if (i % 2 == 0) continue; cout << i << " "; // Hanya angka ganjil }
📝 Latihan 4:
Buat program yang menampilkan pola bintang segitiga siku-siku menggunakan nested loop!
* ** *** **** *****
Function (Fungsi)
Apa itu Function?
Function adalah blok kode yang dapat digunakan kembali untuk melakukan tugas tertentu. Function membantu membuat kode lebih terstruktur dan mudah dipelihara.
1. Function Tanpa Parameter dan Return
#include <iostream> using namespace std; void sapa() { cout << "Selamat datang di TecnoUpdate!" << endl; } int main() { sapa(); // Memanggil function sapa(); return 0; }
2. Function dengan Parameter
void sapa(string nama) { cout << "Halo, " << nama << "!" << endl; } int main() { sapa("Budi"); sapa("Ani"); return 0; }
3. Function dengan Return Value
int tambah(int a, int b) { return a + b; } double luasLingkaran(double r) { double pi = 3.14159; return pi * r * r; } int main() { int hasil = tambah(5, 3); cout << "Hasil: " << hasil << endl; double luas = luasLingkaran(7.0); cout << "Luas: " << luas << endl; return 0; }
4. Function Overloading
// Beberapa function dengan nama sama tapi parameter berbeda int kali(int a, int b) { return a * b; } double kali(double a, double b) { return a * b; } int kali(int a, int b, int c) { return a * b * c; }
5. Recursion
// Function yang memanggil dirinya sendiri int faktorial(int n) { if (n <= 1) { return 1; } return n * faktorial(n - 1); } int main() { cout << "5! = " << faktorial(5) << endl; // Output: 120 return 0; }
📝 Latihan 5:
Buat function untuk mengecek apakah sebuah bilangan adalah bilangan prima atau bukan!
Array dan String
1. Array (Larik)
Array adalah kumpulan data dengan tipe yang sama yang disimpan secara berurutan dalam memori.
#include <iostream> using namespace std; int main() { // Deklarasi array int angka[5] = {10, 20, 30, 40, 50}; // Akses elemen array (index mulai dari 0) cout << angka[0] << endl; // Output: 10 cout << angka[2] << endl; // Output: 30 // Mengubah nilai array angka[1] = 25; // Loop melalui array for (int i = 0; i < 5; i++) { cout << angka[i] << " "; } return 0; }
2. Array Multi-Dimensi
// Array 2 dimensi (matriks) int matriks[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; // Akses elemen cout << matriks[0][0]; // Output: 1 cout << matriks[1][2]; // Output: 6 // Loop 2 dimensi for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { cout << matriks[i][j] << " "; } cout << endl; }
3. String dalam C++
#include <string> // Deklarasi string string teks = "TecnoUpdate"; // Operasi string cout << teks.length(); // Panjang string cout << teks[0]; // Karakter pertama: T cout << teks.substr(0, 5); // Substring: Tecno // Menggabungkan string string depan = "Hello"; string belakang = "World"; string gabung = depan + " " + belakang; // Hello World // Membandingkan string if (depan == "Hello") { cout << "String sama!"; }
4. String Methods Penting
string s = "Belajar C++"; s.length() // Mendapatkan panjang s.empty() // Cek apakah kosong s.clear() // Mengosongkan string s.append(" Fun") // Menambah di akhir s.insert(0, "Ayo ") // Menyisipkan s.erase(0, 4) // Menghapus karakter s.find("C++") // Mencari substring s.replace(0,3,"X") // Mengganti substring
5. Input String dengan Spasi
string nama; // Untuk input dengan spasi cout << "Nama lengkap: "; getline(cin, nama); cout << "Halo, " << nama;
📝 Latihan 6:
Buat program yang menghitung rata-rata nilai dari array yang berisi 5 nilai mahasiswa!
Pointer
Apa itu Pointer?
Pointer adalah variabel yang menyimpan alamat memori dari variabel lain. Pointer sangat penting dalam C++ untuk manipulasi memori yang efisien.
1. Dasar Pointer
#include <iostream> using namespace std; int main() { int angka = 42; int* ptr = &angka; // Pointer ke angka cout << "Nilai angka: " << angka << endl; cout << "Alamat angka: " << &angka << endl; cout << "Nilai ptr: " << ptr << endl; cout << "Nilai yang ditunjuk ptr: " << *ptr << endl; // Mengubah nilai melalui pointer *ptr = 100; cout << "Nilai angka sekarang: " << angka << endl; return 0; }
2. Operator Pointer
&(address-of) - Mendapatkan alamat memori variabel*(dereference) - Mengakses nilai yang ditunjuk pointer
3. Pointer dan Array
int arr[5] = {10, 20, 30, 40, 50}; int* ptr = arr; // Array name adalah pointer // Akses elemen array dengan pointer cout << *ptr << endl; // 10 (elemen pertama) cout << *(ptr + 1) << endl; // 20 (elemen kedua) cout << *(ptr + 2) << endl; // 30 (elemen ketiga) // Loop dengan pointer for (int i = 0; i < 5; i++) { cout << *(ptr + i) << " "; }
4. Pointer sebagai Parameter Function
void tukar(int* a, int* b) { int temp = *a; *a = *b; *b = temp; } int main() { int x = 5, y = 10; cout << "Sebelum: x=" << x << ", y=" << y << endl; tukar(&x, &y); cout << "Sesudah: x=" << x << ", y=" << y << endl; return 0; }
5. NULL Pointer
int* ptr = nullptr; // Pointer yang tidak menunjuk ke apapun if (ptr == nullptr) { cout << "Pointer kosong"; }
📝 Latihan 7:
Buat function yang menerima array dan ukurannya sebagai parameter (gunakan pointer), lalu tampilkan semua elemen array tersebut!
Object-Oriented Programming (OOP)
Apa itu OOP?
OOP adalah paradigma pemrograman yang mengorganisir kode dalam bentuk objek yang memiliki atribut (data) dan method (fungsi). OOP membuat kode lebih terstruktur, mudah dipelihara, dan dapat digunakan kembali.
1. Class dan Object
#include <iostream> using namespace std; // Definisi Class class Mobil { public: // Atribut (Properties) string merk; string warna; int tahun; // Method (Function) void info() { cout << "Mobil " << merk << " warna " << warna; cout << " tahun " << tahun << endl; } void klakson() { cout << "Tin tin!" << endl; } }; int main() { // Membuat object Mobil mobil1; mobil1.merk = "Toyota"; mobil1.warna = "Merah"; mobil1.tahun = 2023; mobil1.info(); mobil1.klakson(); return 0; }
2. Constructor
class Mahasiswa { public: string nama; string nim; float ipk; // Constructor Mahasiswa(string n, string i, float ip) { nama = n; nim = i; ipk = ip; } void tampil() { cout << "Nama: " << nama << endl; cout << "NIM: " << nim << endl; cout << "IPK: " << ipk << endl; } }; int main() { Mahasiswa mhs1("Budi", "12345", 3.75); mhs1.tampil(); return 0; }
3. Encapsulation (Private & Public)
class BankAccount { private: string nomorRekening; double saldo; public: // Constructor BankAccount(string no, double s) { nomorRekening = no; saldo = s; } // Getter double getSaldo() { return saldo; } // Setter dengan validasi void setor(double jumlah) { if (jumlah > 0) { saldo += jumlah; cout << "Setor berhasil!" << endl; } } void tarik(double jumlah) { if (jumlah > 0 && jumlah <= saldo) { saldo -= jumlah; cout << "Tarik berhasil!" << endl; } else { cout << "Saldo tidak cukup!" << endl; } } }; int main() { BankAccount rek1("001", 1000000); rek1.setor(500000); cout << "Saldo: " << rek1.getSaldo() << endl; return 0; }
4. Inheritance (Pewarisan)
// Parent Class class Hewan { protected: string nama; int umur; public: Hewan(string n, int u) : nama(n), umur(u) {} void info() { cout << "Nama: " << nama << ", Umur: " << umur << endl; } }; // Child Class class Kucing : public Hewan { private: string ras; public: Kucing(string n, int u, string r) : Hewan(n, u) { ras = r; } void meong() { cout << nama << " berkata: Meong!" << endl; } void infoLengkap() { info(); cout << "Ras: " << ras << endl; } }; int main() { Kucing kucing1("Mimi", 2, "Persian"); kucing1.infoLengkap(); kucing1.meong(); return 0; }
5. Polymorphism
class Bentuk { public: virtual double luas() { return 0; } }; class Lingkaran : public Bentuk { private: double jariJari; public: Lingkaran(double r) : jariJari(r) {} double luas() override { return 3.14159 * jariJari * jariJari; } }; class PersegiPanjang : public Bentuk { private: double panjang, lebar; public: PersegiPanjang(double p, double l) : panjang(p), lebar(l) {} double luas() override { return panjang * lebar; } };
📝 Latihan 8:
Buat class "Buku" dengan atribut judul, penulis, tahun, dan harga. Tambahkan constructor, getter/setter, dan method untuk menampilkan info buku!