# Giáo án Lập trình C++ cơ bản - Định hướng thi HSG Tin học Link các bài viết C++ cơ bản của thầy giáo được đính kèm ở từng bài! ## [Bài 1: Giới thiệu Lập trình thi đấu và ngôn ngữ lập trình C++ (1b)](https://viblo.asia/p/bai-1-gioi-thieu-lap-trinh-thi-dau-va-ngon-ngu-lap-trinh-c-oOVlYRDv58W) - 1.1. Giới thiệu môn học Lập trình thi đấu. - 1.2. Khái niệm về chương trình và lập trình. - 1.3. Giới thiệu ngôn ngữ lập trình C++. - 1.4. Cài đặt phần mềm Code::Blocks và tạo chương đầu tiên. - 1.5. Cấu trúc một chương trình C++. - 1.6. Toán tử số học và Toán hạng. - 1.7. Một số loại toán tử khác trong C++ (đọc thêm). ## [Bài 2: Kiểu dữ liệu và Hằng - biến trong C++ (1b)](https://viblo.asia/p/bai-2-kieu-du-lieu-va-su-dung-hang-bien-trong-c-ByEZkA4A5Q0) - 2.1. Các kiểu dữ liệu nguyên thủy. - 2.2. Sử dụng từ khóa `define` và `typedef`. - 2.3. Sử dụng hằng và biến. Giới thiệu về biến `auto` trong C++11. - 2.4. Câu lệnh nhập xuất cơ bản trong C++. - 2.5. Kĩ thuật ép kiểu. - 2.6. Định dạng số thực trong C++. - 2.7. Thứ tự ưu tiên toán tử và trật tự kết hợp toán tử (đọc thêm). ## [Bài 3: Cấu trúc rẽ nhánh (1b)](https://viblo.asia/p/bai-3-cau-truc-re-nhanh-1VgZvAgmKAw) - 3.1. Khái niệm biểu thức logic. - 3.2. Mệnh đề ***Nếu...thì*** và mệnh đề ***Nếu không...thì.*** - 3.3. Câu lệnh `if` và câu lệnh `if...else`. - 3.4. Câu lệnh `if` lồng nhau và biểu thức logic gộp. - 3.5. Sử dụng toán tử hỗn hợp thay cho câu lệnh `if...else`. - 3.6. Cấu trúc lựa chọn `switch...case`. ## [Bài 4: Cấu trúc lặp (2b)](https://viblo.asia/p/bai-4-cau-truc-lap-924lJRe6lPM) - 4.1. Khái niệm về "Lặp". - 4.2. Câu lệnh for - Lặp với số lần biết trước. - 4.3. Câu lệnh while - Lặp với số lần không biết trước. - 4.4. Vòng lặp lồng nhau. - 4.5. Các câu lệnh điều khiển vòng lặp. - 4.6. Vòng lặp vô hạn. ## [Bài 5: Hàm trong C++ (2b)](https://viblo.asia/p/bai-4-cau-truc-lap-924lJRe6lPM) - 5.1. Phân chia chương trình thành từng hàm. - 5.2. Một số hàm toán học trong C++. - 5.3. Hàm tự định nghĩa. - 5.4. Tham số của hàm. - 5.5. Biến toàn cục và Biến cục bộ. ## Bài luyện tập số 1 (1b) ## [Bài 6: Mảng một chiều (2b)](https://viblo.asia/p/bai-6-mang-mot-chieu-3P0lP8polox) - 6.1. Khái niệm mảng một chiều. - 6.2. Các thao tác cơ bản trên mảng một chiều. - 6.3. Một số bài toán cơ bản trên mảng một chiều. ## [Bài 7: Mảng hai chiều (2b)](https://viblo.asia/p/bai-7-mang-hai-chieu-bJzKmAeYK9N) - 7.1. Khái niệm và thao tác với mảng hai chiều. - 7.2. Một số bài toán cơ bản trên mảng hai chiều. ## [Bài 8: Sử dụng mảng làm tham số hàm (1b)](https://viblo.asia/p/bai-8-su-dung-mang-lam-tham-so-cua-ham-RQqKLRd4l7z) - 8.1. Sử dụng mảng làm tham số hàm. ## Bài 9: Tham chiếu, Địa chỉ và Con trỏ (1b) - [9.1. Địa chỉ ảo, tham chiếu và con trỏ.](https://viblo.asia/p/bai-9-con-tro-phan-1-dia-chi-ao-tham-chieu-va-con-tro-trong-c-aWj53xqwK6m) - [9.2. Hoạt động nâng cao với con trỏ trong C++.](https://viblo.asia/p/bai-9-con-tro-phan-2-hoat-dong-nang-cao-voi-con-tro-trong-c-oK9VyxBaLQR) - 9.3. Những lỗi thường gặp khi sử dụng con trỏ (đọc thêm). ## [Bài 10: Chuỗi kí tự (2b)](https://viblo.asia/p/bai-10-xau-ki-tu-gDVK2rX0KLj) - 10.1. Kí tự và Chuỗi kí tự. - 10.2. Thư viện string trong C++. - 10.3. Các thao tác cơ bản với chuỗi kí tự. - 10.4. Một số kĩ thuật xử lý chuỗi kí tự. - 10.5. Chuỗi kí tự theo phong cách C (đọc thêm). ## Bài luyện tập số 2 (1b) ## [Bài 11: Thuật toán và Phân tích thuật toán (1b)](https://viblo.asia/p/bai-11-thuat-toan-va-phan-tich-thuat-toan-bJzKmoxrl9N) - 11.1. Thuật toán và Độ phức tạp thuật toán. ## [Bài 12: Hàm đệ quy (2b)](https://viblo.asia/p/bai-12-de-quy-va-ham-de-quy-Qbq5QRPwKD8) - 12.1. Từ Quy nạp toán học tới Đệ quy. - 12.2. Sơ lược về Công thức truy hồi. - 12.3. Các thành phần của Hàm đệ quy. - 12.4. Đệ quy đơn và Đệ quy nhị phân. - 12.5. So sánh giữa cài đặt đệ quy và cài đặt không đệ quy. ## [Bài 13: Trừu tượng hóa dữ liệu (C++ `struct`) (2b)]() - [13.1. Giới thiệu Cấu trúc (`struct`) và các thao tác cơ bản.](https://viblo.asia/p/bai-13-truu-tuong-hoa-du-lieu-phan-1-gioi-thieu-struct-va-cac-thao-tac-co-ban-1VgZvAm7KAw) - [13.2. Cài đặt `struct` nâng cao: Hàm khởi tạo và Hàm thành viên.](https://viblo.asia/p/bai-13-truu-tuong-hoa-du-lieu-phan-2-cai-dat-struct-nang-cao-bWrZnAn9Kxw) ## Bài 14: Cấp phát bộ nhớ động và Danh sách liên kết (1b) - [14.1. Kĩ thuật cấp phát bộ nhớ động.](https://viblo.asia/p/bai-14-cap-phat-bo-nho-dong-va-danh-sach-lien-ket-phan-1-ki-thuat-cap-phat-bo-nho-dong-EvbLbwYZVnk) - [14.2. Danh sách liên kết.](https://viblo.asia/p/bai-14-cap-phat-bo-nho-dong-va-danh-sach-lien-ket-phan-2-danh-sach-lien-ket-linked-list-gwd43zvqVX9) ## Bài 15: Thư viện STL C++ (3b) - [15.1. Tổng quan về thư viện STL C++: Mảng động (`vector`), Ghép cặp dữ liệu (`pair`) và Một số hàm tiện ích trong STL C++.](https://viblo.asia/p/bai-15-thu-vien-stl-c-phan-1-gioi-thieu-cac-thanh-phan-cua-stl-c-va-cac-tien-ich-co-ban-GrLZDr6n5k0) - [15.2. Tập hợp (STL `set`).](https://viblo.asia/p/bai-15-thu-vien-stl-c-phan-2-tap-hop-set-va-mot-so-ung-dung-bWrZnQynKxw) - [15.3. Ánh xạ (STL `map`).](https://viblo.asia/p/bai-15-thu-vien-stl-c-phan-3-anh-xa-mapdictionary-aWj53mbPZ6m) ## [Bài 16: Nhập xuất dữ liệu bằng file và Kĩ năng debug code (1b)](https://viblo.asia/p/bai-16-nhap-xuat-du-lieu-bang-file-va-ki-nang-debug-code-tren-codeblocks-924lJRnXlPM) - 16.1. Nhập xuất dữ liệu bằng file. - 16.2. Debug code từng dòng trong C++ bằng chức năng Debug của Code::Blocks. ## [Bài 17: Số học cơ bản](https://viblo.asia/p/bai-17-so-hoc-co-ban-tim-cac-uoc-cua-mot-so-nguyen-duong-va-gcd-lcm-RQqKL696l7z) - 17.1. GCD - LCM và Tìm các ước của một số. ## Bài luyện tập số 3 (1b) ## Kiểm tra cuối khóa