Belajar C++ Jadi Seru, Paham Teori & Praktik!
Dilengkapi Video Animasi Edukasi untuk orang awam, simulator memori RAM & bitwise shift, serta Simulasi UTS Live Coding (Isi Titik-Titik Kode) menggabungkan materi Laporan Praktikum 1 s.d. 3!
Modul Pembelajaran Praktikum
Kurikulum resmi terintegrasi dengan Laporan Praktikum 1 - 4 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-4 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().
π¬ 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).
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 >>).
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!
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()!
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'
π» 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"