Belajar C++ Jadi Seru, Paham Teori & Praktik!
Dilengkapi Video Animasi Edukasi untuk orang awam, simulator memori RAM & bitwise shift, laboratorium string & kasir percabangan, serta Simulasi UTS Live Coding (Isi Titik-Titik Kode) gabungan materi Laporan Praktikum 1 s.d. 5!
Modul Pembelajaran Praktikum
Kurikulum resmi terintegrasi dengan Laporan Praktikum 1 - 5 UNM
Bioskop Animasi
Animasi visual ramah pemula: tipe data, brankas operator penugasan, dan arsitektur Struct vs Union.
Panduan Flowchart
Standar simbol Oval (Mulai), Persegi Bergaris (Deklarasi), Persegi (Proses), dan Jajargenjang (cout).
UTS Live Coding
Latihan ujian mengisi titik-titik kode program gabungan Laprak 1-5 lengkap dengan timer.
8-Bit Bitwise Shifter
Geser bit biner 0 dan 1 ke kiri (<<) atau kanan (>>) dengan animasi langsung (Praktikum 2.2).
4 Pilar Tipe Bentukan
Struct memori mandiri, Union shared memory, Enum indeks mulai 0, dan Typedef nama alias.
Laboratorium String
Eksplorasi method .length(), .at(), .replace(), .find(), swap(), dan perbandingan cin >> vs cin.get().
Percabangan & Kasir
Uji alur if, if-else if rentang usia 5 tingkat, switch-case, dan kalkulator kasir diskon toko pakaian (Praktikum 5.5).
π¬ Video Animasi Interaktif: Paham C++ dari Nol
Dibuat dengan metafora sederhana agar konsep-konsep tersulit dapat dipahami dengan mudah oleh orang awam.
Judul Animasi
Tagline Animasi
π Simulasi Ujian UTS: Lengkapi Titik-Titik Kode
Uji kemampuan sintaks & logika C++ dengan melengkapi bagian kode program yang masih kosong!
Judul Paket UTS
Cakupan ModulDeskripsi skenario soal ujian...
Variabel, Konstanta & Tipe Data Dasar
Pelajari bagaimana compiler C++ mengalokasikan memori RAM untuk tipe data integer (short, int, long, unsigned), pecahan (float single precision, double double precision), karakter (char), dan logika (bool).
Analogi Santai untuk Pemula: Variabel Itu Toples Label di Meja Dapur!
Biar adik-adik yang baru belajar nggak pusing sama istilah teknis, bayangkan RAM komputer itu seperti meja dapur, dan variabel adalah toples yang ditempeli stiker nama:
Simulator RAM & Detektor Overflow Nilai
Pilih tipe data, masukkan nilai angka, dan amati alokasi kotak memori byte di RAM komputer.
π Tabel Spesifikasi Tipe Data Dasar C++ (Pedoman Laprak 1)
Ringkasan ukuran bit, alokasi byte, jangkauan nilai minimum & maksimum, dan contoh pendeklarasiannya.
| Tipe Data | Ukuran Memori | Range Nilai (Jangkauan) | Deskripsi & Peruntukan | Contoh Kode |
|---|
π Bedah Anatomi Baris Kode Program C++
Sering bingung fungsi dari setiap baris di awal kode? Simak penjelasan struktur program C++ standar berikut:
π Studi Kasus Resmi dari Laprak 1
Kasus 1: Perhitungan Luas Lingkaran (const float & rumus)
Mendeklarasikan konstanta const float PHI = 3.14; dan jari-jari float r = 2.5; lalu menghitung L = PHI * r * r;.
const float PHI = 3.14f; float r = 2.5f; float L = PHI * r * r; cout << "Luas lingkaran adalah: " << L << " Cm" << endl; // Output: 19.625
Kasus 2: Struk Transaksi Kacamata (Kombinasi 5 Tipe Data)
Menunjukkan pemilihan tipe data yang efisien: unsigned short int umur = 55;, float ukuranKacamata = -2.5f;, unsigned long int hargaKacamata = 2147483;, dan int diskon = 5000;.
Operator dalam Pemrograman C++
Pahami klasifikasi operator berdasarkan jumlah operand, aturan pembagian integer vs modulus, rahasia pre-increment vs post-increment, logika boolean, dan operator geser bit (bitwise shift << dan >>).
Analogi Santai untuk Pemula: Operator & Logika Sehari-Hari
Jangan ngafal simbol operator secara kaku, pahami logikanya lewat kejadian yang sering kita alami:
Visualisator 8-Bit Bitwise Shifter (<< dan >>)
Materi Praktikum 2.2 Laprak: Menggeser bit biner variabel a=1 (<<= 3) dan b=10 (>>= 1).
Simulator Langkah Demi Langkah: Pre (++a) vs Post (a++)
Pahami kapan nilai dievaluasi dan kapan variabel dinaikkan di memori!
int b = a++;
π‘ Sirkuit Logika & Tabel Kebenaran (&&, ||, !)
Ubah saklar input A dan B untuk menguji logika boolean pada C++.
Tipe Data Bentukan: Struct, Union, Enum, Typedef
Mengapa tipe data bentukan diciptakan? C++ menyediakan 4 pilar konstruksi tipe data kustom: Struct untuk membungkus banyak variabel ke dalam kapling memori mandiri, Union yang menghemat RAM dengan memori bersama, Enum untuk daftar konstanta berurutan mulai dari 0, dan Typedef untuk menciptakan alias nama tipe data yang ramah dibaca!
Analogi Santai untuk Pemula: Kotak Bento (Struct) vs Papan Tulis Kos (Union)!
Kenapa C++ butuh tipe bentukan? Biar kamu nggak bikin puluhan variabel tercecer sendirian:
4 Pilar Fondasi Tipe Data Bentukan (Kunci Responsi)
Kapling Memori Terpisah
Membungkus berbagai variabel bertipe data sama maupun berbeda ke dalam satu wadah entitas. Setiap member memiliki alamat memori sendiri, sehingga nilai-nilai tidak saling mengganggu.
struct Mhs {
string nama;
int nim;
};
Satu Alamat Bersama (Overwrite)
Seluruh member berbagi satu alamat fisik memori yang sama persis. Dirancang untuk menghemat memori. Nilai member yang terakhir kali diisi akan menimpa (overwrite) nilai member lainnya!
union Nilai {
float angka;
char huruf;
};
Konstanta Integer Mulai 0
Mendefinisikan kumpulan nama simbolis yang mewakili konstanta bilangan bulat. Secara default nilainya dimulai dari indeks 0 lalu bertambah +1 untuk setiap item berikutnya.
enum Presiden {
Soekarno, // 0
Soeharto, // 1
Habibie // 2
};
namaPresiden + 1.
Alias Nama Baru Tipe Data
Memberikan nama panggilan (alias) baru pada tipe data yang sudah ada, membuat kode program lebih mudah dipahami manusia dan mempersingkat sintaks deklarasi struct.
typedef float angkaPecahan;
typedef string kata;
angkaPecahan p = 10.5;
Simulator Alokasi Memori: Struct vs Union (Laprak 3.2)
Ubah nilai 3 member di bawah ini untuk melihat langsung perbedaan alokasi RAM antara Struct dan Union!
Simulator Fenomena Overwrite Union (Beda Tipe Data)
Uji bagaimana satu kotak memori 4-byte diperlakukan saat diisi oleh char (1 B), int (4 B), dan float (4 B) bergantian!
βοΈ Tabel Perbandingan Struct vs Union (Halaman 31 Laprak)
Poin-poin penting yang wajib dihafal praktikan saat ujian responsi asisten:
| Karakteristik / Aspek | Struct | Union |
|---|
π Katalog 5 Studi Kasus Modul 3 (Resmi Laporan Praktikum UNM)
Kasus 3.1 s.d. 3.5Struct Paket Internet "Begadang"
Menyimpan atribut paket kuota (nama string, telpon int, kuota int) dalam memori terpisah objek begadang.
struct paket_internet {
string nama_paket;
int kouta_telpon;
int kouta_internet;
} begadang;
Union Nilai Raport Siswa
Tiga member float (pengetahuan, sikap, psikomotorik) berbagi 4 byte. Nilai pengetahuan 85.5 menimpa nilai lainnya!
union nilaiRaport {
float pengetahuan;
float sikap;
float psikomotorik;
} budi;
sizeof(budi) tetap 4 byte saja.
Enum Urutan Presiden RI
Enum mengindeks otomatis dari 0 (Soekarno=0, Habibie=2, Jokowi=6). Ditambah 1 untuk urutan kepresidenan (Ke-1, Ke-3, dst.).
enum namaPresiden {
Soekarno, Soeharto, Habibie,
Megawati, Gusdur, SBY, Jokowi
};
Union Beda Tipe Data (char, int, float)
Satu wadah menampung char (1 B), int (4 B), dan float (4 B). Total ukuran union adalah 4 byte. Mengisi int 100 menimpa huruf jadi 'd'!
union DataCampur {
char huruf;
int angkaBulat;
float angkaKoma;
} kotak;
Typedef & Struct Volume Balok 3D
Mendefinisikan alias angkaPecahan untuk float dan kata untuk string, menghitung volume Si Merah, Si Kuning, dan Si Hijau.
typedef float angkaPecahan;
typedef string kata;
struct balok {
kata nama;
angkaPecahan p, l, t;
};
Tipe Data String & Pustaka Bawaan <string>
Mengapa tipe data string begitu istimewa di C++? Pahami perbedaan arsitektur klasik C-String (Array of Char) dengan C++ std::string, kuasai teknik input spasi menggunakan cin.get(), dan jelajahi fungsi bawaan seperti .length(), .at(), .replace(), .find(), hingga swap()!
Analogi Santai untuk Pemula: String Itu Gerbong Kereta Huruf!
String itu bukan satu benda utuh yang padat, melainkan rangkaian karakter yang digandeng berjejer seperti gerbong kereta api:
.at(idx) punya satpam penjaga: kalau nomor kursinya nggak ada di kereta, dia teriak ngasih peringatan (exception aman), bukannya bikin program crash!
cin >> itu kayak anak kecil pemilih: cuma makan satu kata pertama, begitu ketemu spasi langsung mogok. Kalau cin.get() itu vacuum cleaner: sedot satu baris penuh kalimat beserta spasi!
Laboratorium Real-Time Fungsi Pustaka String C++
Ketikkan teks di bawah ini dan uji langsung bagaimana fungsi-fungsi <string> bekerja seketika!
Menghitung total karakter nyata tanpa memasukkan null terminator \0.
Lebih aman daripada teks[index] karena melempar exception bila indeks di luar batas.
Jika tidak ditemukan, fungsi akan mengembalikan konstanta string::npos.
Menghasilkan nilai boolean true (1) jika string kosong dan false (0) jika berisi.
Mengambil cuplikan substring sepanjang 10 karakter pertama mulai dari indeks 0.
Pratinjau kalimat setelah kata pada rentang indeks yang dipilih diganti dengan kata baru.
Kupas Tuntas: Fungsi .length() & .size()
Di C++, fungsi .length() dan .size() adalah sinonim identik (menghasilkan angka yang persis sama). Keduanya merupakan method anggota dari kelas std::string yang bertugas menghitung jumlah byte/karakter aktif di dalam objek string.
Jika string berisi
"Nisa", maka teks.length() bernilai 4. Karakter terminator pembatas akhir memori \0 tidak ikut dihitung.
.length() diadopsi dari terminologi teks konvensional, sedangkan .size() disediakan agar konsisten dengan koleksi kontainer STL C++ lainnya (seperti vector, list, map).
string nama = "Warnisyah Armin"; cout << "Panjang nama: " << nama.length() << " karakter"; // 15 karakter
Dilema Input Keyboard: Membaca Spasi (Laprak 4.1 vs 4.2)
Masalah paling sering dialami praktikan saat praktikum string adalah teks yang diinputkan terpotong saat menekan spasi! Berikut perbandingannya:
Hanya membaca satu kata! Begitu ada karakter whitespace (spasi, tab, enter), pembacaan langsung berhenti. Contoh input "Warnisyah Armin" hanya menghasilkan "Warnisyah".
Digunakan untuk C-String (char[]). Membaca kalimat utuh termasuk spasi hingga batas kapasitas memori yang ditentukan. Contoh: cin.get(nama, 50);.
Digunakan untuk std::string. Membaca satu baris penuh kalimat berspasi hingga praktikan menekan tombol Enter.
βοΈ Tabel Perbandingan: C-String (char[]) vs C++ std::string
7 Perbedaan fundamental yang sering ditanyakan asisten saat responsi praktikum:
| Aspek Perbandingan | C-String (char array) | C++ std::string |
|---|
π Katalog 10 Metode / Fungsi Bawaan Pustaka <string>
Fungsi esensial yang sering digunakan dalam manipulasi kata dan teks di C++
π Katalog 4 Studi Kasus Modul 4 (Resmi Laporan Praktikum UNM)
Kasus 4.1 s.d. 4.4Input C-String Satu Kata Menggunakan cin >>
Membaca input teks nama panggilan ke dalam array char namaPanggilan[50]. Menunjukkan bagaimana spasi memotong sisa kalimat.
char namaPanggilan[50]; cout << "Masukkan nama panggilan: "; cin >> namaPanggilan; // Berhenti di spasi pertama!
Input C-String Berspasi Menggunakan cin.get()
Membaca nama lengkap ber-spasi seperti "Warnisyah Armin" tanpa terpotong dengan menentukan batas memori cin.get(namaLengkap, 50).
char namaLengkap[50]; cout << "Masukkan nama lengkap: "; cin.get(namaLengkap, 50); // Membaca kalimat utuh!
Manipulasi Lengkap Method Pustaka <string>
Mendemonstrasikan fungsi .length(), .clear(), .replace(), swap(), dan .find() pada objek string C++.
cout << teks.length(); // Panjang karakter
teks.clear(); // Hapus string
teks.replace(11, 8, "sebuah"); // Ganti kata
swap(str1, str2); // Tukar isi variabel
size_t pos = teks.find("adalah"); // Cari posisi
Struct Nama Hewan & Akses Karakter .at()
Mengkombinasikan struct namaHewan yang berisi member string anjing, kucing, macan, lalu mengambil panjang karakter dan karakter indeks ke-1 menggunakan .at(1).
struct namaHewan {
string anjing = "Anjing";
string kucing = "Kucing";
string macan = "Macan";
} mamalia;
cout << mamalia.anjing.length();
cout << mamalia.anjing.at(1); // Karakter 'n'
Seleksi Kondisi & Percabangan (Control Flow)
Kendalikan alur jalannya program agar tidak kaku! Pelajari cara kerja if tunggal, if-else dua arah, if-else-if majemuk (klasifikasi usia 5 rentang), struktur switch-case (nilai mutu MK), hingga studi kasus nyata program kasir diskon bertingkat toko pakaian!
Analogi Santai untuk Pemula: Percabangan Itu Cara Komputer Memilih!
Tanpa percabangan, program cuma kayak robot buta yang jalan lurus dari atas ke bawah. Dengan percabangan, program punya otak buat nanya: "Syaratnya terpenuhi nggak?":
Analogi Palang Kereta: Cuma bereaksi kalau kereta beneran lewat (kondisi TRUE). Kalau nggak ada kereta (FALSE), palang diam saja dan mobil lewat seperti biasa tanpa aksi khusus.
Analogi Lampu Merah: Pasti ada salah satu yang jalan! Kalau lampu hijau → maju. Selain itu (else / merah) → wajib berhenti. Nggak mungkin dua-duanya jalan bareng.
Analogi Loket Masuk Dufan: Petugas cek dari atas ke bawah: ≤1m (tiket balita)? Kalau bukan ≤1.4m (tiket anak)? Kalau bukan ≤1.7m (tiket remaja)? Begitu cocok, langsung bayar & selesai!
Analogi Vending Machine: Masukkan koin lalu pencet tombol nilai pasti: Tombol 'A' keluar Cola, 'B' keluar Susu. Pencet tombol lain sembarang → masuk tombol 'default' (uang balik)!
Simulator Jalur Logika if-else if (Praktikum 5.3)
Ubah usia di bawah ini dan perhatikan cabang mana yang menyala hijau (dieksekusi) oleh komputer!
Usia bayi (0 - 1 tahun)
Usia anak-anak (2 - 10 tahun)
Usia remaja (11 - 19 tahun)
Usia dewasa (20 - 60 tahun)
Usia tua / Lansia (> 60 th)
Simulator Kasir Diskon Bertingkat Toko Pakaian (Laprak 5.5)
Aturan Toko: Baju @Rp 60.000 (Diskon 20% jika belanja baju > Rp 100.000), Celana @Rp 40.000 (Diskon 25% jika belanja celana > Rp 70.000).
Keranjang Belanja Pembeli:
βοΈ Tabel Perbandingan: if-else if Majemuk vs switch-case
Pertanyaan wajib asisten dosen saat responsi: "Kapan harus pakai if-else dan kapan pakai switch?"
| Aspek Karakteristik | if - else if Bertingkat | switch - case |
|---|
π Katalog 5 Studi Kasus Modul 5 (Resmi Laporan Praktikum UNM)
Sesuai berkas laporan praktikum Warnisyah Armin (Halaman 53 - 71)
Percabangan if Tunggal
Mengecek apakah nilai $x \ge y$ (10 ≥ 10). Karena bernilai benar, teks di dalam kurung kurawal dieksekusi.
if (x >= y) {
cout << "x lebih besar atau sama dengan y" << endl;
}
Percabangan if-else Ganda
Mengecek $x = 7$ dan $y = 10$. Karena kondisi $7 \ge 10$ bernilai false, program beralih ke jalan cadangan di blok else.
if (x >= y) {
cout << "x lebih besar atau sama";
} else {
cout << "x lebih kecil daripada y";
}
Seleksi if-else if Kategori Usia
Mengelompokkan usia ke 5 rentang: Bayi (≤1), Anak (≤10), Remaja (≤19), Dewasa (≤60), dan Lansia.
if (usia <= 1) cout << "Bayi"; else if (usia <= 10) cout << "Anak-anak"; else if (usia <= 19) cout << "Remaja"; else if (usia <= 60) cout << "Dewasa"; else cout << "Lansia";
switch-case Nilai Mata Kuliah
Mencocokkan huruf mutu nilai (A, B, C, D, E) ke case yang cocok. Wajib pakai break agar tidak tembus ke bawah!
switch (nilaiMK) {
case 'A': cout << "A"; break;
case 'B': cout << "B"; break;
default: cout << "Salah input!"; break;
}
Program Kasir Toko Pakaian
Studi kasus perhitungan diskon bertingkat: diskon 20% untuk baju > 100.000 dan diskon 25% untuk celana > 70.000.
if (totalBaju > 100000) diskonBaju = 0.2 * totalBaju; if (totalCelana > 70000) diskonCelana = 0.25 * totalCelana; totalBayar = (totalBaju - diskonBaju) + (totalCelana - diskonCelana);
π» C++ Virtual Code Playground
Pilih kode dari Laporan Praktikum 1-4, sesuaikan variabelnya, dan lihat simulasi eksekusi terminalnya.
Judul Kasus
Deskripsi
π Panduan Simbol Flowchart Standar Laporan Praktikum
Pahami bentuk dan fungsi setiap simbol diagram alir yang wajib digambar di Laporan Praktikum UNM: Mulai & Akhiri (Oval), Deklarasi (Persegi Bergaris Sisi), Proses (Persegi Polos), dan Output/Input (Jajaran Genjang cout/cin).
π Katalog Bentuk Simbol Flowchart Resmi
Gunakan bentuk simbol yang tepat agar tidak mendapat coretan revisi saat asistensi:
Visualisator Flowchart Interaktif (Studi Kasus Laprak)
Lihat diagram alir yang digambar persis seperti di buku laporan praktikum. Klik setiap simbol untuk melihat kode C++!
Inspeksi Baris C++
- int main() → Oval "Mulai"
- Deklarasi variabel / struct → Persegi bergaris sisi
- Inisialisasi & Rumus (=, +, *, <<=) → Persegi polos
- cout << atau cin >> → Jajaran genjang
- return 0 → Oval "Selesai"