Kursus C ++ di CS center, bagian pertama

Pusat Sains Komputer adalah inisiatif bersama dari Klub Ilmu Komputer di POMI RAS, JetBrains dan Sekolah Analisis Data Yandex.

Pusat ini ada untuk memungkinkan siswa dan lulusan berbakat untuk mengembangkan di bidang yang menarik bagi mereka: Ilmu Komputer, Ilmu Data atau Rekayasa Perangkat Lunak.

Kursus C ++ di dua bagian di pusat diajarkan oleh Valery Mikhailovich Lesin, valery-l , seorang guru di pusat CS dan magistrasi bersama ITMO dan JetBrains "Pengembangan Perangkat Lunak / Rekayasa Perangkat Lunak", direktur teknis Simlabs .

Bagian pertama dari kursus diperlukan untuk membangun dasar C ++: pada akhir semester, siswa lebih mungkin untuk mendapatkan keterampilan pemrograman yang cukup dalam bahasa ini untuk menyelesaikan masalah mereka. Sejauh ini, tanpa memindahkan semantik, sfinae, tetapi untuk memulai ini, kemungkinan besar, akan cukup.

Untuk siswa dengan pengalaman menggunakan C ++, bagian ini akan membantu menutup celah. Misalnya, dalam menghubungkan, bekerja dengan memori, fungsi lambda dan topik lainnya. Ceramah akan menyajikan retrospeksi praktik yang telah mapan, serta tinjauan umum tentang kemungkinan yang disediakan oleh standar bahasa terbaru. Kursus ini dirancang agar siswa dari berbagai tingkatan dapat menemukan di dalamnya materi baru untuk mereka sendiri.

Selamat menikmati!

1. Organisasi pengembangan program C ++.

Sejarah dan filosofi bahasa. Penerapan: pro dan kontra. Perpustakaan, kompilasi, alat pengembangan. Variabel, kondisi, loop, fungsi, input dan output sederhana.


2. Tata letak program. Unit Siaran. Deklarasi dan definisi. ODR. Variabel global dan lokal.


3. Bekerja dengan memori. Menjalankan program.

Arsitektur, proses dan utas. Perangkat memori proses, memori halaman. Dereferencing, petunjuk, array. Aritmatika pointer, konstanta dan pointer konstan. Tautan, inisialisasi tautan konstan, alokasi memori, kebocoran memori.


4. Jenis, instruksi, dan operator bawaan.

Jenis ukuran, konversi tipe eksplisit, tipe void, string diakhiri null, enum enum, sinonim untuk typedef. Deklarasi, ruang lingkup dan visibilitas, struct. Operator, ekspresi, kenaikan / penurunan, pernyataan (statement) pilihan. Loop, komentar, operator.


5. Fungsi.

Pemrograman struktural. Mendeklarasikan fungsi, meneruskan parameter, melewati array, mengembalikan nilai. Overload, pemilihan fungsi. Argumen secara default. Jumlah argumen sewenang-wenang, penunjuk ke fungsi. Ikat & fungsi.


6. Kelas.

Jenis kelas, definisi kelas, fungsi anggota, kontrol akses, definisi fungsi kelas, 4 fungsi utama, swap-trick. Bidang Kelas.


7. Namespace. Timpa operator.

Mendeklarasikan dan menggunakan namespace, menggunakan direktif, menggunakan deklarasi, mencari Koenig. Operator kelebihan beban, apa yang mungkin dan tidak mungkin, di mana dan bagaimana menulis operator, contoh deklarasi operator, konversi eksplisit dan implisit. Aritmatika campuran. Fitur teman. Awalan dan penambahan postfix. Functors. Operator untuk penunjuk. Bagaimana cara membuat fungsi?


8. Polimorfisme dinamis: pewarisan sederhana.

Realisasi objek. Komposisi. Warisan Lokasi bidang. Fitur warisan. Konstruktor. Perilaku polimorfik. Ketik bidang, fungsi virtual, tabel fungsi virtual, mengiris, fungsi virtual murni, warisan publik dan privat. Destructor. Panggil fungsi virtual.


9. Polimorfisme dinamis: pewarisan berganda dan virtual.

Warisan berganda, resolusi ambiguitas, fungsi persembunyian, mengulang kelas dasar. Warisan virtual, pengulangan kelas dasar, kontrol akses, penggunaan metode yang dilindungi, tipe dinamis dan casting referensi, static_cast dan dynamic_cast, operator typeid, lokasi objek dalam memori.


10. Pengantar template. Templat kelas dan fungsi.

Kelas templat, fitur templat, fungsi templat, instantiasi, parameter templat, ekuivalensi jenis, inferensi jenis, kelebihan fungsi, pemilihan algoritme, argumen default.


11. Pengantar template. Spesialisasi Hubungan dengan warisan. Pointer pintar.

Spesialisasi templat kelas. Spesialisasi sebagian. Basis umum non-standar. Instansiasi eksplisit. Spesialisasi templat fungsi. CRTP Jenis templat. Warisan dan pola. Fungsi Templat di kelas generik. Poliformisme dinamis dan statis.


12. Pointer pintar.


13. Kesalahan dalam menangani strategi. Debugging


Apa yang harus dibaca sebagai tambahan


  • B. Mu Pemrograman C ++ yang efektif.
  • S. Meyers. C ++ yang efisien dan modern: 42 rekomendasi untuk menggunakan C ++ 11 dan C ++ 14.

Source: https://habr.com/ru/post/id467781/


All Articles