Kembali ke Kursus
AI037 Undergraduate

C++ Primer, Edisi Kelima

Panduan komprehensif dan otoritatif tentang C++, sepenuhnya ditulis ulang untuk standar C++11. Kursus ini mencakup semua hal mulai dari elemen dasar bahasa hingga fasilitas perpustakaan yang kompleks dan alat lanjutan untuk membuat kelas.

5.0
57.0h
601 siswa
0 suka
Kecerdasan Buatan
Mulai Belajar

Gambaran Umum Kursus

📚 Ringkasan Konten

Panduan komprehensif dan otoritatif tentang C++, sepenuhnya ditulis ulang untuk standar C++11. Kursus ini mencakup semua hal mulai dari elemen dasar bahasa hingga fasilitas perpustakaan kompleks dan alat lanjutan untuk membuat kelas.

Panduan standar industri utama untuk menguasai pemrograman modern C++11.

Penulis: Stanley B. Lippman, Josée Lajoie, Barbara E. Moo

Ucapan Terima Kasih: Dave Abrahams, Andy Koenig, Stephan T. Lavavej, Jason Merrill, John Spicer, Herb Sutter, Bjarne Stroustrup, Alex Stepanov, dan anggota komite standardisasi.

🎯 Tujuan Pembelajaran

  1. Mendefinisikan dan menerapkan fungsi main serta memahami interaksinya dengan sistem operasi.
  2. Melakukan kompilasi baris perintah dan mengelola aliran I/O dasar (cin, cout).
  3. Menggunakan pernyataan alur kontrol untuk menyelesaikan masalah logika iteratif, seperti menghitung kemunculan.
  4. Menerapkan struktur logika untuk menghitung dan memproses kemunculan berurutan data input.
  5. Membedakan antara operator penugasan (=) dan kesetaraan (==) dalam pernyataan kontrol.
  6. Menggunakan objek kelas (Sales_item), mengakses fungsi anggota melalui operator titik, dan menyertakan file header kustom.
  7. Membedakan antara tipe primitif yang berbeda serta memprediksi hasil konversi tipe dan pembalikan aritmetika unsigned.
  8. Menerapkan fitur C++11 termasuk inisialisasi daftar, nullptr, constexpr, dan spesifier deduksi tipe.
  9. Membedakan antara deklarasi dan definisi variabel, serta menerapkan aturan lingkup untuk mengelola visibilitas identifikasi.
  10. Membedakan antara referensi dan pointer, serta menggunakan void* untuk penanganan memori umum.

🔹 Pelajaran 1: Pengantar C++ dan Input/Output Dasar

Ringkasan: Pelajaran ini memperkenalkan struktur dasar program C++, fokus pada fungsi main, tipe data dasar, dan proses kompilasi. Ini mencakup operasi Input/Output (I/O) esensial menggunakan perpustakaan iostream, implementasi logika melalui loop while dan for, dan diakhiri dengan pengantar konsep berbasis objek melalui kelas Sales_item.

Hasil Pembelajaran:

  • Mendefinisikan dan menerapkan fungsi main serta memahami interaksinya dengan sistem operasi.
  • Melakukan kompilasi baris perintah dan mengelola aliran I/O dasar (cin, cout).
  • Menggunakan pernyataan alur kontrol untuk menyelesaikan masalah logika iteratif, seperti menghitung kemunculan.

🔹 Pelajaran 2: Alur Kontrol dan Konsep Kelas Dasar

Ringkasan: Pelajaran ini beralih dari alur kontrol dasar ke kekuatan dasar C++: Kelas. Peserta akan menguasai logika yang diperlukan untuk memproses aliran data (menghitung kemunculan berurutan) dan belajar menggunakan kelas Sales_item untuk menangani struktur data kompleks seolah-olah itu tipe bawaan. Unit ini diakhiri dengan implementasi Program Toko Buku yang fungsional, mengintegrasikan alih alir berkas dan pelaporan kesalahan.

Hasil Pembelajaran:

  • Menerapkan struktur logika untuk menghitung dan memproses kemunculan berurutan data input.
  • Membedakan antara operator penugasan (=) dan kesetaraan (==) dalam pernyataan kontrol.
  • Menggunakan objek kelas (Sales_item), mengakses fungsi anggota melalui operator titik, dan menyertakan file header kustom.

🔹 Pelajaran 3: Tipe Primitif dan Variabel

Ringkasan: Pelajaran ini membentuk blok bangunan dasar pemrograman C++ dengan mengeksplorasi tipe aritmetika, siklus hidup variabel, dan model memori. Mahasiswa akan menguasai nuansa konversi tipe (terutama tipe unsigned), sintaks inisialisasi daftar C++11, serta perbedaan penting antara pointer dan referensi. Pelajaran diakhiri dengan sistem tipe lanjutan termasuk kualifikasi const, deduksi tipe (auto, decltype), dan implementasi struktur data khusus yang kuat menggunakan penjaga preprocessor.

Hasil Pembelajaran:

  • Membedakan antara tipe primitif yang berbeda serta memprediksi hasil konversi tipe dan pembalikan aritmetika unsigned.
  • Menerapkan fitur C++11 termasuk inisialisasi daftar, nullptr, constexpr, dan spesifier deduksi tipe.
  • Membedakan antara deklarasi dan definisi variabel, serta menerapkan aturan lingkup untuk mengelola visibilitas identifikasi.

🔹 Pelajaran 4: Tipe Komposit dan Kualifikasi Tipe Modern

Ringkasan: Pelajaran ini mengeksplorasi sistem tipe canggih C++11, fokus pada bagaimana tipe komposit (pointer dan referensi) berinteraksi dengan kualifikasi tipe seperti const dan constexpr. Mahasiswa akan menguasai nuansa deduksi tipe menggunakan auto dan decltype, serta belajar mengemas data dalam struktur khusus yang dilindungi oleh penjaga header preprocessor.

Hasil Pembelajaran:

  • Membedakan antara referensi dan pointer, serta menggunakan void* untuk penanganan memori umum.
  • Mengklasifikasikan dan menerapkan kualifikasi const tingkat tinggi dan rendah serta constexpr untuk konstanta waktu kompilasi.
  • Menerapkan deduksi tipe C++11 (auto dan decltype) untuk menulis kode yang fleksibel dan mudah dipelihara.

🔹 Pelajaran 5: String dan Vektor Perpustakaan

Ringkasan: Pelajaran ini membahas tipe dasar perpustakaan standar C++ string dan vector, yang memberikan alternatif yang lebih fleksibel dan aman dibandingkan tipe bawaan. Mahasiswa akan belajar mengelola akses namespace melalui deklarasi using, menginisialisasi dan memanipulasi string dan kontainer panjang variabel, serta menggunakan loop for berdasarkan rentang dan iterator untuk memproses koleksi data secara efisien.

Hasil Pembelajaran:

  • Menyederhanakan kode menggunakan deklarasi namespace using sambil menghindari jebakan umum dalam file header.
  • Melakukan inisialisasi string dan vektor yang andal, termasuk inisialisasi daftar C++11.
  • Menerapkan pemrosesan tingkat karakter dan pertumbuhan kontainer dinamis menggunakan push_back, loop for berdasarkan rentang, dan operasi iterator dasar.

🔹 Pelajaran 6: Iterator dan Array Bawaan

Ringkasan: Pelajaran ini membahas mekanisme dasar navigasi dan manajemen urutan dalam C++11. Ini bergerak dari alat tingkat tinggi modern seperti iterator untuk string dan vector ke array bawaan tingkat rendah, aritmetika pointer, dan string gaya C. Mahasiswa akan belajar cara menghubungkan kode berbasis array lama dengan kontainer perpustakaan standar modern dan mengelola struktur multidimensi yang kompleks.

Hasil Pembelajaran:

  • Menggunakan iterator dan aritmetika iterator untuk menavigasi dan memanipulasi kontainer string dan vector.
  • Mendefinisikan, menginisialisasi, dan menavigasi array bawaan menggunakan aritmetika pointer dan fungsi pustaka begin/end.
  • Menerapkan operasi string gaya C dan menghubungkan array bawaan secara aman dengan tipe perpustakaan modern.

🔹 Pelajaran 7: Ekspresi, Operator, dan Konversi

Ringkasan: Pelajaran ini membahas blok-blok dasar ekspresi C++, fokus pada bagaimana bahasa mengevaluasi operasi dan mengelola tipe data. Mahasiswa akan menguasai perbedaan antara nilai lvalue dan rvalue, aturan prioritas dan asosiativitas operator, serta mekanisme operasi aritmetika, logika, dan bitwise. Selain itu, pelajaran ini memberikan analisis mendalam tentang manajemen tipe C++, termasuk konversi aritmetika implisit dan penerapan aman dari cast bernama eksplisit.

Hasil Pembelajaran:

  • Membedakan antara lvalue (identitas objek) dan rvalue (nilai objek) serta memahami perannya dalam ekspresi.
  • Memperkirakan urutan evaluasi ekspresi kompleks menggunakan prioritas, asosiativitas, dan logika pemotongan pendek.
  • Melakukan manipulasi data tingkat rendah menggunakan operator bitwise dan mengelola keamanan tipe melalui konversi implisit dan cast bernama eksplisit.

🔹 Pelajaran 8: Pernyataan Lanjutan dan Penanganan Exception

Ringkasan: Pelajaran ini membahas struktur alur kontrol C++ yang esensial, mulai dari jenis pernyataan dasar dan aturan lingkup hingga logika kondisional dan iteratif lanjutan. Ini juga memperkenalkan teknik penanganan kesalahan yang kuat menggunakan mekanisme penanganan exception C++ dan hierarki exception perpustakaan standar.

Hasil Pembelajaran:

  • Membedakan antara pernyataan null, sederhana, dan majemuk serta mengelola lingkup variabel dalam struktur-struktur tersebut.
  • Menerapkan pengambilan keputusan kompleks menggunakan pernyataan if dan switch sambil menyelesaikan kesalahan logika seperti "dangling else".
  • Memilih dan menerapkan konstruksi iteratif yang sesuai (while, for, range for, do while) untuk tugas pemrograman tertentu.

🔹 Pelajaran 9: Desain Fungsi dan Penyerahan Argumen

Ringkasan: Pelajaran ini membahas arsitektur fungsi C++, fokus pada bagaimana data diserahkan ke dan dikembalikan dari blok kode modular. Ini mengeksplorasi siklus hidup objek lokal, mekanisme penyerahan argumen (nilai vs. referensi), dan standar C++11 untuk menangani parameter yang bervariasi. Penguasaan konsep-konsep ini memungkinkan programmer menulis kode yang efisien, dapat digunakan kembali, dan aman terhadap memori.

Hasil Pembelajaran:

  • Membedakan antara metode inisialisasi parameter dan dampaknya terhadap kinerja serta integritas data.
  • Menerapkan antarmuka fungsi yang kuat menggunakan kualifikasi const, initializer_list, dan teknik penyerahan array.
  • Mengelola masa hidup objek secara efektif menggunakan durasi penyimpanan otomatis dan statis.

🔹 Pelajaran 10: Fungsionalitas Lanjutan dan Overloading

Ringkasan: Pelajaran ini membahas mekanika rumit fungsi C++, fokus pada penyerahan parameter, masa hidup objek, dan kompleksitas overloading fungsi. Mahasiswa akan menguasai fitur-fitur C++11 seperti initializer_list untuk parameter bervariasi, fungsi constexpr, serta deklarasi dan penggunaan pointer fungsi untuk menciptakan kode yang fleksibel dan modular.

Hasil Pembelajaran:

  • Membedakan antara penyerahan berdasarkan nilai dan berdasarkan referensi serta mengidentifikasi kapan menggunakan parameter const.
  • Menerapkan aturan resolusi overloading untuk menentukan "cocok terbaik" di antara fungsi kandidat dan layak.
  • Menerapkan dan mengelola pointer fungsi, termasuk penggunaannya dalam kontainer seperti vektor dan sebagai tipe pengembalian.

🔹 Pelajaran 11: Enkapsulasi Kelas dan Konstruktor

Ringkasan: Pelajaran ini membahas transisi dari struktur data sederhana ke Tipe Data Abstrak (ADT) dalam C++. Fokusnya adalah pada mekanika desain kelas, termasuk fungsi anggota, pointer this tersirat, dan peran krusial konstruktor dalam inisialisasi objek. Selain itu, ia mengeksplorasi enkapsulasi melalui kendali akses (public/private) dan penggunaan "teman" untuk menjaga antarmuka bersih sambil menyembunyikan detail implementasi.

Hasil Pembelajaran:

  • Merancang dan menerapkan kelas C++ (seperti Sales_data) yang memisahkan antarmuka dari implementasinya.
  • Menguasai aturan inisialisasi objek menggunakan konstruktor default, overload, dan eksplisit.
  • Menerapkan spesifikasi akses dan persahabatan untuk memperkuat enkapsulasi dan mengelola lingkup kelas.

🔹 Pelajaran 12: Lingkup Kelas dan Manajemen Konversi

Ringkasan: Pelajaran ini membahas mekanika lanjutan desain kelas C++, fokus pada transisi dari struktur data sederhana ke ADT yang kuat. Topik utama meliputi manajemen inisialisasi objek melalui berbagai jenis konstruktor, kendali konversi tipe secara implisit menggunakan kata kunci explicit, serta memahami entitas tingkat kelas seperti anggota static dan kelas literal.

Hasil Pembelajaran:

  • Merancang dan menerapkan kelas yang terenkapsulasi (ADT) menggunakan spesifikasi akses dan deklarasi teman.
  • Mengelola konversi tipe kelas secara implisit dan menekan mereka menggunakan kata kunci explicit.
  • Menerapkan dan menginisialisasi anggota static kelas untuk manajemen data secara keseluruhan kelas.

🔹 Pelajaran 13: IO Stream dan Dasar Container Sekuensial

Ringkasan: Pelajaran ini membahas mekanika dasar sistem IO perpustakaan standar C++ dan container sekuensial. Mahasiswa akan belajar mengelola kondisi status stream dan buffer output, melakukan I/O berbasis file dan string, serta menavigasi container sekuensial perpustakaan. Pelajaran ini menekankan konsep kritis tentang rentang iterator, inisialisasi container, dan implikasi kinerja manajemen memori container.

Hasil Pembelajaran:

  • Menyelidiki dan mengatur ulang status kondisi stream serta mengontrol flushing buffer output untuk mengelola integritas stream.
  • Menggunakan fstream dan sstream untuk penanganan data persisten dan dalam memori menggunakan berbagai mode file.
  • Memilih container sekuensial yang tepat berdasarkan pola akses dan beban memori untuk optimasi seleksi.

🔹 Pelajaran 14: Operasi Container dan Algoritma Generik

Ringkasan: Pelajaran ini membahas manajemen container sekuensial C++ dan penerapan algoritma generik untuk memproses data tanpa bergantung pada jenis container. Ini mengeksplorasi bagaimana container menangani pertumbuhan memori dan siklus hidup elemen, bersamaan dengan penggunaan lambda dan binder fungsi untuk menyesuaikan algoritma perpustakaan. Mahasiswa akan menguasai arsitektur perpustakaan, termasuk kategori iterator dan algoritma khusus.

Hasil Pembelajaran:

  • Mengelola siklus hidup container menggunakan operasi khusus untuk forward_list, teknik resizing, dan manajemen kapasitas vector.
  • Melakukan manipulasi string kompleks dan konversi numerik menggunakan perpustakaan string yang diperluas dan adaptor container.
  • Menerapkan algoritma generik untuk membaca, menulis, dan mengurutkan ulang data sambil menyesuaikan perilaku melalui predikat, ekspresi lambda, dan std::bind.

🔹 Pelajaran 15: Container Asosiatif dan Pointer Cerdas

Ringkasan: Pelajaran ini membahas standar C++11 untuk container asosiatif dan manajemen memori dinamis. Ini menjelaskan penggunaan container terurut dan tidak terurut untuk pencarian berbasis kunci yang efisien serta implementasi kode yang kuat dan aman terhadap exception menggunakan pointer cerdas. Pelajaran diakhiri dengan desain aplikasi Text-Query dunia nyata yang mengintegrasikan struktur data kompleks ini.

Hasil Pembelajaran:

  • Menerapkan dan memanipulasi container asosiatif menggunakan teknik pencarian, penyisipan, dan subscripting yang efisien.
  • Menguasai manajemen memori dinamis dengan beralih dari new/delete manual ke pointer cerdas berbasis RAII dan kelas allocator.
  • Merancang sistem kompleks yang berbagi data secara aman di antar kelas menggunakan perhitungan referensi dan kepemilikan pointer cerdas.

🔹 Pelajaran 16: Manajemen Sumber Daya dan Semantik Pindah

Ringkasan: Pelajaran ini mengeksplorasi bagaimana kelas C++ mengendalikan siklus hidup sumber dayanya melalui "Big Five" fungsi anggota khusus. Mahasiswa akan belajar mengelola memori dinamis menggunakan strategi mirip nilai dan mirip pointer, menerapkan idiom copy-and-swap yang aman terhadap exception, dan mengoptimalkan kinerja menggunakan semantik pindah C++11 dan referensi rvalue.

Hasil Pembelajaran:

  • Menerapkan dan menjelaskan Aturan Tiga/Lima untuk memastikan manajemen sumber daya yang benar dan mencegah kebocoran memori.
  • Membedakan antara perilaku kelas mirip nilai dan mirip pointer serta menerapkan perhitungan referensi.
  • Menerapkan semantik pindah menggunakan referensi rvalue dan std::move untuk menghilangkan salinan dalam yang tidak perlu dari objek besar.

🔹 Pelajaran 17: Overloading Operator dan Pewarisan (PBO)

Ringkasan: Pelajaran ini mengeksplorasi perluasan sintaks bahasa melalui overloading operator dan pembuatan sistem yang dapat diperluas melalui Pemrograman Berbasis Objek (PBO). Mahasiswa akan belajar merancang kelas yang terintegrasi dengan operasi bawaan sambil menguasai mekanika pewarisan, pengikatan dinamis, dan hirarki kelas polimorfik.

Hasil Pembelajaran:

  • Merancang dan menerapkan operator yang di-overload yang mengikuti konvensi perpustakaan standar C++.
  • Menciptakan dan menggunakan objek fungsi serta wrapper tipe function untuk menyatukan entitas yang dapat dipanggil.
  • Membangun hirarki pewarisan yang kuat menggunakan fungsi virtual, kelas dasar abstrak, dan spesifikasi akses C++11.

🔹 Pelajaran 18: Template dan Pemrograman Generik

Ringkasan: Pelajaran ini membahas mekanika dasar dan lanjutan template C++, memberikan dasar bagi pemrograman generik. Mahasiswa akan bergerak dari definisi template fungsi dan kelas dasar hingga menguasai fitur-fitur spesifik C++11 seperti template variadik, forward sempurna, dan spesialisasi template.

Hasil Pembelajaran:

  • Mendefinisikan dan menginstansiasi template fungsi dan kelas menggunakan parameter tipe dan non-tipe.
  • Mengelola model kompilasi template dan mengendalikan instansiasi lintas beberapa file menggunakan extern template.
  • Menerapkan teknik deduksi lanjutan, termasuk tipe kembalian terbelakang dan forward sempurna dengan std::forward.

🔹 Pelajaran 19: Alat Perpustakaan Khusus dan Sistem Besar

Ringkasan: Pelajaran ini membahas komponen lanjutan perpustakaan standar C++11 dan fitur bahasa yang dirancang untuk pengembangan sistem kompleks. Ini mencakup struktur data khusus, pencocokan pola yang kuat melalui perpustakaan regex, dan alat arsitektur untuk pemrograman skala besar. Selain itu, ia mengeksplorasi penanganan exception lanjutan, manajemen namespace, dan kompleksitas pewarisan ganda.

Hasil Pembelajaran:

  • Menggunakan tuple untuk nilai kembalian ganda dan bitset untuk manajemen flag tingkat bit yang efisien.
  • Menerapkan pencocokan pola string kompleks, validasi, dan transformasi menggunakan perpustakaan regex.
  • Menghasilkan angka acak berkualitas tinggi menggunakan mesin dan distribusi sambil menjaga keadaan dan seeding yang tepat.