Trong bài này chúng ta sẽ cùng đi qua lộ trình học lập trình C++ từ A tới Z: C++ là gì, dùng để làm gì, học theo thứ tự nào và mỗi chương cần nắm những gì. Đây là bài tổng hợp toàn bộ Serie C++ trên blog, các bạn lưu lại để học lần lượt theo đúng thứ tự nhé.
Serie này dạy C++ như một ngôn ngữ lập trình, chạy trên máy tính, không cần board hay phần cứng gì. Toàn bộ code dùng chuẩn C++17, biên dịch bằng g++, mỗi ví dụ đều có kết quả chạy thật.
C++ là gì?
C++ là ngôn ngữ lập trình do Bjarne Stroustrup phát triển từ năm 1979, ban đầu có tên “C with Classes” (C có thêm lớp), tới năm 1983 đổi tên thành C++. Ngôn ngữ được chuẩn hóa bởi ISO, các phiên bản lớn gần đây là C++11, C++14, C++17, C++20 và C++23.
C++ xây dựng trên nền ngôn ngữ C, nên chạy nhanh và can thiệp sâu vào bộ nhớ được như C. Thứ C++ thêm vào quan trọng nhất là lập trình hướng đối tượng, template và một thư viện chuẩn rất mạnh, giúp viết được những chương trình lớn hàng trăm nghìn dòng mà không bị rối.
C++ dùng để làm gì?
- Phần mềm hiệu năng cao: trình duyệt Chrome, cơ sở dữ liệu MySQL, phần mềm đồ họa, trình biên dịch.
- Game: Unreal Engine và phần lớn game engine được viết bằng C++.
- Giao diện desktop: framework Qt.
- Xử lý ảnh và robot: OpenCV, ROS.
- Lập trình nhúng: framework Arduino, ESP-IDF của ESP32, các thư viện cảm biến đều là C++. File
.inohaymain.cppmà các bạn viết cho ESP32 thực chất là C++. - Ô tô: nền tảng AUTOSAR Adaptive trong các dòng xe mới dùng C++ làm ngôn ngữ chính.
Có cần học C trước khi học C++ không?
Không bắt buộc. Serie này dạy C++ theo hướng hiện đại ngay từ đầu: dùng std::string thay cho mảng char, std::vector thay cho mảng thô, tham chiếu trước con trỏ. Người chưa biết C vẫn học được từ bài đầu tiên.
Nếu đã học lập trình C, các bạn sẽ đi nhanh hơn ở chương 1–3, và mỗi bài đều có link sang bài C tương ứng để so sánh. Chỉ cần chú ý những chỗ C++ làm khác C, ví dụ static_cast thay cho ép kiểu kiểu C, nullptr thay cho NULL, new/delete thay cho malloc/free.
Lộ trình học lập trình C++ qua 7 chương
Xuyên suốt serie là một chương trình quản lý thư viện sách, lớn dần qua từng chương: từ vài biến lưu thông tin một cuốn sách, tới danh sách sách bằng vector, các class Sach, TapChi, DocGia có kế thừa và đa hình, rồi thành một project hoàn chỉnh ở chương cuối. Cuối mỗi chương có bài tổng hợp bài tập có lời giải.
Chương 1: Nhập môn
Cài đặt môi trường và hiểu chương trình C++ được biên dịch như thế nào.
- Bài 1: Cài đặt C++ trên VS Code và chạy chương trình đầu tiên
- Bài 2: Cú pháp C++ cơ bản và cách biên dịch chương trình
Chương 2: C++ cơ bản
Những thành phần có trong mọi chương trình: dữ liệu, phép tính, điều kiện, lặp và hàm.
- Bài 3: Các kiểu dữ liệu trong C++
- Bài 4: Hằng và biến C++: khai báo, auto, const, constexpr
- Bài 5: Toán tử trong C++
- Bài 6: Lệnh rẽ nhánh if, else và switch case
- Bài 7: Vòng lặp for, while, do while
- Bài 8: Hàm, nạp chồng hàm và tham chiếu (sắp ra mắt)
- Bài 9: String và vector: chuỗi và mảng động kiểu C++ (sắp ra mắt)
- Bài 10: Bài tập C++ cơ bản có lời giải (sắp ra mắt)
Chương 3: Con trỏ và bộ nhớ
Hiểu bộ nhớ hoạt động thế nào, phần làm nên sức mạnh và cũng là nguồn lỗi lớn nhất của C++.
- Bài 11: Mảng và con trỏ trong C++
- Bài 12: Cấp phát động với new và delete (sắp ra mắt)
- Bài 13: Smart pointer: unique_ptr, shared_ptr, weak_ptr (sắp ra mắt)
Chương 4: Lập trình hướng đối tượng
Cách tổ chức chương trình lớn bằng class, và 4 tính chất của OOP.
- Bài 14: So sánh lập trình hướng đối tượng OOP và hướng cấu trúc POP
- Bài 15: Lớp và đối tượng trong C++
- Bài 16: Constructor và destructor (sắp ra mắt)
- Bài 17: Tính đóng gói trong C++
- Bài 18: Tính kế thừa trong C++
- Bài 19: Đa kế thừa trong C++ và kế thừa ảo
- Bài 20: Tính đa hình trong C++ và hàm ảo
- Bài 21: Tính trừu tượng, lớp trừu tượng và interface
- Bài 22: Nạp chồng toán tử (sắp ra mắt)
- Bài 23: Bài tập OOP C++ có lời giải (sắp ra mắt)
Chương 5: C++ nâng cao
Viết code tổng quát với template, dùng thư viện chuẩn, xử lý lỗi, làm việc với file và nhiều luồng.
- Bài 24: Template (sắp ra mắt)
- Bài 25: STL: map, set và thư viện algorithm (sắp ra mắt)
- Bài 26: Xử lý ngoại lệ trong C++
- Bài 27: Đọc ghi file với fstream (sắp ra mắt)
- Bài 28: Lập trình đa luồng với std::thread (sắp ra mắt)
Chương 6: Design pattern trong C++
Những cách thiết kế class đã được kiểm chứng, hay gặp khi đi phỏng vấn và đi làm.
- Bài 29: Design pattern là gì? (sắp ra mắt)
- Bài 30: Singleton pattern (sắp ra mắt)
- Bài 31: Factory pattern (sắp ra mắt)
- Bài 32: Observer pattern (sắp ra mắt)
- Bài 33: Strategy pattern (sắp ra mắt)
- Bài 34: State pattern và máy trạng thái (sắp ra mắt)
Chương 7: Ứng dụng
Ráp mọi thứ đã học thành những chương trình hoàn chỉnh chạy trên máy tính.
- Bài 35: C++ dùng để làm gì? Các nền tảng và framework phổ biến (sắp ra mắt)
- Bài 36: Project: chương trình quản lý thư viện (sắp ra mắt)
- Bài 37: Project: quản lý sinh viên, lưu dữ liệu ra file (sắp ra mắt)
- Bài 38: Project: game rắn săn mồi với SFML (sắp ra mắt)
- Bài 39: Project: game cờ caro có máy chơi (sắp ra mắt)
- Bài 40: Project: ứng dụng chat client-server (sắp ra mắt)
- Bài 41: Áp dụng C++ trong lập trình vi điều khiển (sắp ra mắt)
Học C++ thế nào cho hiệu quả?
- Gõ lại code, đừng copy: gõ tay giúp nhớ cú pháp và gặp lỗi thật, đọc thông báo lỗi là một kỹ năng phải luyện.
- Luôn bật cảnh báo: biên dịch với
-Wall -Wextranhư serie hướng dẫn. Rất nhiều bài trong serie cho thấy lỗi mà g++ chỉ cảnh báo chứ không báo lỗi. - Làm bài tập cuối mỗi bài trước khi xem lời giải ở bài tổng hợp.
- Dùng công cụ bắt lỗi: khi làm việc với con trỏ và bộ nhớ, biên dịch thêm
-fsanitize=addressđể bắt lỗi ngay khi chạy.
Tài liệu tham khảo
- cppreference.com: tài liệu tra cứu đầy đủ nhất về ngôn ngữ và thư viện chuẩn.
- learncpp.com: giáo trình C++ miễn phí bằng tiếng Anh, rất chi tiết.
- Sách “A Tour of C++” của Bjarne Stroustrup: ngắn gọn, tổng quan C++ hiện đại từ chính tác giả ngôn ngữ.
Kết
Lộ trình học lập trình C++ từ A tới Z ở trên đi từ những dòng code đầu tiên tới các project hoàn chỉnh, và đều chạy trên máy tính của các bạn. Học xong chương 4 là đã đủ nền để đọc hiểu phần lớn code C++, kể cả thư viện Arduino hay ESP32. Chương 5 tới 7 đưa các bạn tới mức viết được phần mềm thật.
Các bài “sắp ra mắt” sẽ được cập nhật link khi đăng. Nếu thấy lộ trình này có ích, hãy lưu lại, chia sẻ cho bạn bè và tham gia hội Nghiện lập trình để cùng học nhé.


