Lập trình C++ từ cơ bản đến chuyên sâu, Kèm 1:1

Là khoá học lập trình C++ chăm sóc cá nhân hoá cho từng học viên, học viên sẽ được kèm riêng bất kỳ lúc nào học viên cần. Khoá học sẽ có 42 buổi học từ cơ bản đến chuyên sâu, mỗi buổi 2 tiếng. Với hơn 600 bài tập thực hành kèm lời giải chi tiết...
Programming FullhouseDev Premium
Tác giả FullhouseDev
1000+ Học viên
4.9
Mục tiêu của khóa học
  • 1) Mục tiêu kiến thức nền tảng
  • Nắm vững cú pháp và cấu trúc ngôn ngữ C++ (biến, kiểu dữ liệu, toán tử, điều kiện, vòng lặp).
  • Hiểu sâu về cách chương trình chạy trong bộ nhớ (stack, heap, pointer).
  • Nắm chắc hàm, scope, static storage, inline, reference.
  • Sử dụng C++ chuẩn (C++11 trở lên).
  • 2) Mục tiêu về lập trình hướng đối tượng (OOP)
  • Hiểu & áp dụng đầy đủ: class, object, inheritance, polymorphism, abstraction, encapsulation.
  • Sử dụng constructor, destructor, copy/move semantics.
  • Nắm rõ cơ chế virtual, override, dynamic dispatch.
  • Thiết kế hệ thống OOP chuẩn industry như game đơn giản, quản lý hệ thống, mô phỏng…
  • 3) Mục tiêu sử dụng thư viện & công cụ hiện đại
  • Sử dụng STL chuyên sâu: vector, map, unordered_map, set, priority_queue, algorithms.
  • Viết code sạch, tối ưu, theo chuẩn C++ best practices.
  • Thành thạo build tool: CMake hoặc Makefile.
  • Debug bằng GDB / VSCode / CLion.
Thông tin giáo viên
  • Nguyễn Lê Minh
  • Giáo viên C++, ôn thi HSG, ôn thi ICPC, ACM.
  • Giải Khuyến khích quốc gia Tin học năm 2022
  • Giải Khuyến khích quốc gia Tin học năm 2023
  • Giải Nhất tỉnh Tin học năm 2022
  • Giải 3 ICPC quốc gia 2023
  • Giải 3 ICPC quốc gia 2024
  • Giải 3 Procon quốc gia 2025
Đối tượng học viên
  • Học sinh, sinh viên mất gốc lập trình C++
  • Người mới bắt đầu học lập trình C++
  • Sinh viên ngành Công nghệ Thông tin, và các chuyên ngành liên quan
  • Những người muốn học ngôn ngữ lập trình cơ bản trước khi chuyển sang các ngôn ngữ khác
  • Lập trình viên muốn củng cố kiến thức cơ bản về ngôn ngữ C++
Sự khác biệt khoá học
  • 9 Lý Do nên lựa chọn Fullhouse Dev mà không phải trung tâm khác.
  • 1. 100% Giáo viên đạt giải lập trình thi đấu quốc gia hoặc làm việc doanh nghiệp lớn.
  • 2. Lộ trình, Slide bài giảng được biên soạn cẩn thận và chuyên sâu.
  • 3. Giáo viên giảng dạy vô cùng dễ hiểu được kiểm duyệt kỹ trước khi vào lớp.
  • 4. Hệ thống Website chấm tự động với 600-800 bài tập chuyên sâu có lời hướng dẫn giải.
  • 5. Kèm 1:1 bất kỳ khi nào học viên cần.
  • 6. Đo lường đánh giá được số bài tập làm được, số bài đúng, số bài sai, thời gian tham gia học từng bạn.
  • 7. Phương pháp học châu âu Flipped Classroom, Mind Map, Mentor System.
  • 8. cuộc thi định kỳ, quà tặng, nhắc nhở thúc đẩy học tập.
  • 9. Chứng nhận sau khoá học.
Phương pháp giảng dạy
  • Phương pháp học châu âu Flipped Classroom, Mind Map, Mentor System.

Nội dung chương trình học

GIAI ĐOẠN 1 — NỀN TẢNG LẬP TRÌNH (Buổi 1–5)
Buổi 1 Nhập môn: Biến, Kiểu dữ liệu, Phép toán

LÝ THUYẾT

● Chương trình / ngôn ngữ lập trình là gì; đọc định dạng đề

● Môi trường lập trình (IDE) & cách tìm lỗi (debug); mã nhị phân

● Tổng quan chương trình C++; biến, hằng số, kiểu dữ liệu

● Các phép toán: gán, số học, quan hệ, logic

DẠNG BÀI CHUYÊN SÂU

● Tính toán số học cơ bản; đọc/xuất đúng định dạng đề

● Chọn kiểu dữ liệu phù hợp miền giá trị (int vs long long)

● Đổi đơn vị, tính toán công thức

LỖI THƯỜNG GẶP

● Tràn kiểu (int khi giá trị lớn → phải long long)

● Chia số nguyên mất phần thập phân

● Nhầm = (gán) với == (so sánh); sai định dạng nhập/xuất

Buổi 2 Cấu trúc rẽ nhánh: if-else, switch

LÝ THUYẾT

● if / if-else / if lồng / if-else-if

● switch-case

● Biểu thức điều kiện & toán tử logic (&&, ||, !)

DẠNG BÀI CHUYÊN SÂU

● Phân loại, xếp loại theo điều kiện

● Xét trường hợp (casework), kiểm tra điều kiện biên

● Menu lựa chọn

LỖI THƯỜNG GẶP

● Thiếu break trong switch (rơi tầng)

● Nhầm && với ||; sai thứ tự điều kiện

● Bỏ sót trường hợp biên; so sánh số thực bằng ==

Buổi 3 Ôn tập & Chữa bài chuyên sâu: Rẽ nhánh

NỘI DUNG ÔN TẬP

● if / if-else / if lồng / if-else-if; switch-case

● Toán tử logic & thứ tự điều kiện

CHỮA BÀI CHUYÊN SÂU

● Luyện đề phân loại, xếp loại, xét trường hợp (casework)

● Chữa các bài if/switch học viên thường sai

LỖI TRỌNG TÂM

● Thiếu break; nhầm && với ||

● Bỏ sót trường hợp biên; điều kiện chồng lấn/mâu thuẫn

CHỮA BÀI MẪU (THEO GIÁO TRÌNH)

● Bài "bội của 3 hoặc 7 và không là bội 21": đặt sai biểu thức do chưa đọc kỹ đề → đúng là (n%3==0 || n%7==0) && n%21!=0.

● Bài dùng x = y (phép gán) thay vì x == y (so sánh): trình biên dịch vẫn dịch được, không báo lỗi, nhưng nộp bị WA.

● Bài điều kiện đúng nhưng sai kiểu dữ liệu: |a|,|b|,|c| ≤ 10^18 → phải dùng long long thay vì int.

Buổi 4 Cấu trúc lặp: while, do-while, for

LÝ THUYẾT

● while, vòng lặp vô tận, do-while, for

● Cấu trúc điều khiển lồng nhau

● Lệnh break và continue; biểu thức điều kiện trong vòng lặp

DẠNG BÀI CHUYÊN SÂU

● Tính tổng/tích dãy, đếm, duyệt & lọc

● In mẫu hình bằng vòng lặp lồng

● Bài toán cần dừng theo điều kiện (sentinel)

LỖI THƯỜNG GẶP

● Lặp vô tận (quên cập nhật biến điều kiện)

● Off-by-one ở cận vòng lặp

● Khởi tạo sai biến tổng (0)/tích (1); đặt break/continue nhầm chỗ

Buổi 5 Ôn tập & Chữa bài chuyên sâu: Vòng lặp

NỘI DUNG ÔN TẬP

● while / do-while / for; vòng lặp lồng nhau

● break / continue; điều kiện dừng

CHỮA BÀI CHUYÊN SÂU

● Luyện đề tổng/tích/đếm dãy, in mẫu hình, xử lý theo sentinel

● Chữa các bài vòng lặp học viên thường sai

LỖI TRỌNG TÂM

● Lặp vô tận; off-by-one ở cận

● Đặt break/continue sai chỗ; khởi tạo biến tích/tổng sai

CHỮA BÀI MẪU (THEO GIÁO TRÌNH)

● Bài kiểm tra số nguyên tố: đặt sai vị trí return 0 khiến vòng lặp dừng ngay vòng đầu tiên → phải để return sau khi đã duyệt hết.

● Bài duyệt dư một người (off-by-one): dùng i <= a (tới người thứ n) nên khi i++ thành người thứ n+1 → phải duyệt tới n-1.

GIAI ĐOẠN 2 — HÀM & LÝ THUYẾT SỐ (Buổi 6–8)
Buổi 6 Hàm

LÝ THUYẾT

● Các hàm có sẵn; cấu trúc chung của hàm; nguyên mẫu hàm

● Biến toàn cục và biến địa phương

● Tham số, đối số; truyền tham trị vs tham chiếu; nạp chồng hàm

DẠNG BÀI CHUYÊN SÂU

● Viết hàm tiện ích: gcd (Euclid), lcm, isPrime, đếm chữ số, kiểm tra đối xứng

● Một số bài hàm cơ bản: Fibonacci, số thuận nghịch (palindrome)

● Bài gcd–lcm: viết gcd rồi tính lcm = a*b/gcd

● Bài lãi kép: mỗi tháng tăng 1.1%, đếm số tháng đến khi đủ x

● Bài chọn kiểu dữ liệu phù hợp theo giới hạn đề; hàm trả nhiều kết quả qua tham chiếu

LỖI THƯỜNG GẶP

● Quên return / thiếu nhánh trả về

● Nhầm tham trị (không đổi được giá trị gốc) với tham chiếu

● Lạm dụng biến toàn cục; nguyên mẫu hàm sai chữ ký

CHỮA BÀI MẪU (THEO GIÁO TRÌNH)

● Bài lcm: a*b/gcd bị TRÀN SỐ khi a,b ≤ 1e9 (a*b vượt int) → phải để long long. Bài học: lường trước phép tính trung gian, không chỉ nhìn giới hạn của input.

● Bài lãi kép: để biến kiểu long long làm phép *1.1% bị làm tròn xuống (mất phần thập phân) → sai đáp án; phải dùng double.

● Lỗi kinh điển: không đọc kỹ giới hạn đề nên chọn int trong khi cần long long → tràn số.

Buổi 7 Lý thuyết số (cơ bản → nâng cao)

LÝ THUYẾT

● Số nguyên tố & kiểm tra O(√n); số chính phương; số hoàn hảo

● Phân tích thừa số nguyên tố; GCD & LCM (thuật toán Euclid)

● Đồng dư và công thức đồng dư; lũy thừa nhị phân (aⁿ mod m); nhân Ấn Độ (chống tràn)

● Phi hàm Euler φ(n): đếm số nguyên trong [1, n] nguyên tố cùng nhau với n (nâng cao)

DẠNG BÀI CHUYÊN SÂU

● Kiểm tra / đếm / liệt kê số nguyên tố; kiểm tra số chính phương

● Phân tích một số ra thừa số nguyên tố

● Tính GCD (Euclid) và LCM

● Bài toán đồng dư; tính aⁿ mod m bằng lũy thừa nhị phân

● Tính phi hàm Euler φ(n)

LỖI THƯỜNG GẶP

● Kiểm tra nguyên tố tới n thay vì √n → chạy chậm

● Tràn số khi nhân (quên long long / nhân Ấn Độ)

● Sai công thức đồng dư với số âm; quên lấy mod ở bước trung gian

● φ(n): quên trừ bội của thừa số nguyên tố đúng công thức tích

Buổi 8 Ôn tập & Chữa bài chuyên sâu: Hàm + Lý thuyết số

NỘI DUNG ÔN TẬP

● Hàm: tham trị/tham chiếu, nạp chồng, đóng gói thuật toán

● Đủ bộ dạng số học: số nguyên tố, chính phương, Fibonacci, số thuận nghịch, phân tích thừa số, GCD+LCM, đồng dư, lũy thừa nhị phân, phi hàm Euler

CHỮA BÀI CHUYÊN SÂU

● Luyện & chữa từng dạng số học; gói mỗi thuật toán thành một hàm

● Chữa bài mẫu theo đúng giáo trình (gcd–lcm, lãi kép)

LỖI TRỌNG TÂM

● Tràn số & chọn sai kiểu dữ liệu

● Kiểm tra nguyên tố chưa tối ưu (tới n thay vì √n)

● Quên mod ở bước trung gian; sai công thức φ(n)

GIAI ĐOẠN 3 — MẢNG & MA TRẬN (Buổi 9–12)
Buổi 9 Mảng một chiều & Xâu ký tự

LÝ THUYẾT

● Mảng một chiều: khai báo, các thao tác; bỏ qua kích thước khi khai báo

● Xâu ký tự với mảng char và với lớp string

● Mảng đánh dấu & ứng dụng trong sàng Eratosthenes

DẠNG BÀI CHUYÊN SÂU

● Tìm max/min/tổng/đếm; đảo mảng; đếm tần suất

● Sàng số nguyên tố bằng mảng đánh dấu

● Xử lý xâu cơ bản (đếm ký tự, đảo, kiểm tra)

LỖI THƯỜNG GẶP

● Truy cập ngoài giới hạn mảng → lỗi chạy

● Quên khởi tạo mảng đánh dấu; kích thước mảng khai báo quá nhỏ

● Nhầm chỉ số 0-based

Buổi 10 Ôn tập & Chữa bài chuyên sâu: Mảng 1 chiều & Xâu

NỘI DUNG ÔN TẬP

● Mảng 1 chiều: duyệt, tìm kiếm, thống kê; mảng đánh dấu

● Xâu ký tự (mảng char & string)

CHỮA BÀI CHUYÊN SÂU

● Luyện đề: max/min/tổng/đếm, đảo mảng, đếm tần suất, sàng nguyên tố

● Chữa các bài mảng/xâu học viên thường sai

LỖI TRỌNG TÂM

● Truy cập ngoài giới hạn mảng (lỗi chạy)

● Nhầm chỉ số 0-based; quên khởi tạo mảng đánh dấu

CHỮA BÀI MẪU (TÌNH HUỐNG ĐIỂN HÌNH)

● Duyệt mảng n phần tử nhưng chạy i <= n → truy cập a[n] ngoài giới hạn.

● Quên khởi tạo lại mảng đánh dấu giữa các bộ test → kết quả dính từ test trước.

● Đọc số bằng cin >> rồi getline mà chưa bỏ ký tự xuống dòng còn sót → đọc nhầm dòng rỗng.

Buổi 11 Mảng nhiều chiều & Lý thuyết ma trận

LÝ THUYẾT

● Khai báo & truy cập mảng nhiều chiều; duyệt qua mảng nhiều chiều

● Ma trận và quan hệ với mảng 2 chiều; các loại ma trận (vuông, đơn vị, ma trận không)

● Đường chéo chính a[i][i] và đường chéo phụ a[i][n-1-i]; các phép toán trên ma trận

DẠNG BÀI CHUYÊN SÂU

● Nhập/xuất ma trận; tổng theo hàng, theo cột

● Tổng đường chéo chính và đường chéo phụ

● Cộng, trừ, nhân, chuyển vị, chia từng phần tử

● Nhận diện ma trận vuông / đơn vị / ma trận không

LỖI THƯỜNG GẶP

● Nhầm hàng với cột khi truy cập a[i][j]

● Sai chỉ số đường chéo phụ: viết a[i][n-i] thay vì a[i][n-1-i]

● Tràn số khi nhân ma trận; duyệt sai thứ tự hàng/cột

CHỮA BÀI MẪU (THEO GIÁO TRÌNH)

● Nhân ma trận: quên điều kiện SỐ CỘT A = SỐ HÀNG B → sai kích thước kết quả hoặc truy cập ngoài mảng.

● Cộng dồn tích khi nhân ma trận dễ tràn int → dùng long long cho biến tổng.

● Khai báo kích thước mảng 2 chiều cứng và quá nhỏ → truy cập ngoài giới hạn.

Buổi 12 Ôn tập & Chữa bài chuyên sâu: Ma trận

NỘI DUNG ÔN TẬP

● Mảng 2 chiều & ma trận; đường chéo; các phép toán ma trận

● Ma trận xoắn ốc: 4 ranh giới (trên/dưới/trái/phải) và 4 hướng di chuyển

CHỮA BÀI CHUYÊN SÂU

● Chữa: nhập/xuất ma trận, tổng hàng/cột/đường chéo, cộng/trừ/nhân/chuyển vị

● Sinh & duyệt ma trận xoắn ốc; xoay ma trận 90°

LỖI TRỌNG TÂM

● Nhầm hàng/cột; sai chỉ số đường chéo phụ (n-1-i)

● Ma trận xoắn ốc n lẻ: ô giữa bị điền hai lần hoặc bỏ sót

● Quên cập nhật ranh giới sau mỗi cạnh → lặp vô tận / ghi đè

GIAI ĐOẠN 4 — ĐỆ QUY (Buổi 13–14)
Buổi 13 Đệ quy

LÝ THUYẾT

● Khái niệm đệ quy; base case & bước đệ quy; call stack

● Các bài toán tiêu biểu: giai thừa, Fibonacci, Tháp Hà Nội

● Chia để trị; đệ quy vs lặp

DẠNG BÀI CHUYÊN SÂU

● Đệ quy tính toán; đệ quy trên dãy/chuỗi

● Chuyển đổi qua lại giữa đệ quy và vòng lặp

LỖI THƯỜNG GẶP

● Thiếu / sai base case → đệ quy vô hạn (tràn stack)

● Tính lặp trùng (cần ghi nhớ - memoization); đệ quy quá sâu

Buổi 14 Ôn tập & Chữa bài chuyên sâu: Đệ quy

NỘI DUNG ÔN TẬP

● Base case & bước đệ quy; call stack; chia để trị

● Đệ quy vs lặp — khi nào dùng cái nào

CHỮA BÀI CHUYÊN SÂU

● Chữa: giai thừa, Fibonacci, tổng dãy, Tháp Hà Nội bằng đệ quy

● Chuyển một bài từ đệ quy sang lặp và ngược lại

LỖI TRỌNG TÂM

● Thiếu/sai base case (tràn stack)

● Tính lặp trùng; đệ quy quá sâu

CHỮA BÀI MẪU (TÌNH HUỐNG ĐIỂN HÌNH)

● Hàm đệ quy thiếu base case hoặc base case không bao giờ đạt tới → gọi vô hạn, tràn stack.

● Fibonacci đệ quy ngây thơ tính lại cùng giá trị rất nhiều lần → cực chậm; cần ghi nhớ (memoization).

● Tham số không tiến dần về phía base case (không giảm) → đệ quy không hội tụ.

GIAI ĐOẠN 5 — STL & THUẬT TOÁN CƠ BẢN (Buổi 15–18)
Buổi 15 Thư viện STL cơ bản

LÝ THUYẾT

● vector; iterator; pair

● set; map

● typedef; define

DẠNG BÀI CHUYÊN SÂU

● Dùng vector thay mảng động; đếm bằng map; loại trùng bằng set

● Lưu cặp giá trị bằng pair; duyệt bằng iterator

LỖI THƯỜNG GẶP

● Iterator không hợp lệ sau khi sửa container

● Nhầm set (không trùng) với multiset; quên kiểm tra container rỗng

Buổi 16 Thuật toán Sắp xếp & Tìm kiếm

LÝ THUYẾT

● Insertion / Bubble / Selection / Merge / Quick / Heap Sort

● Linear Search; Binary Search

● Phân tích độ phức tạp các thuật toán

DẠNG BÀI CHUYÊN SÂU

● Cài & so sánh các thuật toán sắp xếp

● Tìm kiếm nhị phân trên mảng đã sắp; định vị/đếm

LỖI THƯỜNG GẶP

● Binary search sai cận (vô tận hoặc bỏ sót)

● Quên sắp xếp trước khi tìm nhị phân

● Nhầm thuật toán ổn định / không ổn định

Buổi 17 sort STL, Comparator & Kỹ thuật nâng cao

LÝ THUYẾT

● Hàm sort trong STL; viết comparator

● Kỹ thuật nâng cao trên mảng 1 chiều: hai con trỏ, tổng tiền tố, cửa sổ trượt

DẠNG BÀI CHUYÊN SÂU

● Sắp xếp theo tiêu chí tùy chỉnh (struct/pair)

● Two pointers; prefix sum; sliding window

LỖI THƯỜNG GẶP

● Comparator không thỏa strict weak ordering → lỗi runtime

● Nhầm < với <=; tràn khi cộng tổng tiền tố

Buổi 18 Ôn tập & Chữa bài chuyên sâu: STL + Sắp xếp/Tìm kiếm

NỘI DUNG ÔN TẬP

● Container: vector/set/map/pair/iterator

● Các thuật toán sắp xếp; tìm kiếm nhị phân; sort STL & comparator; hai con trỏ, tổng tiền tố

CHỮA BÀI CHUYÊN SÂU

● Chữa: chọn đúng container; viết comparator; tìm nhị phân đúng cận

● Luyện kỹ thuật hai con trỏ / tổng tiền tố / cửa sổ trượt

LỖI TRỌNG TÂM

● Iterator không hợp lệ; binary search sai cận

● Comparator không nhất quán; tràn khi cộng tiền tố

CHỮA BÀI MẪU (TÌNH HUỐNG ĐIỂN HÌNH)

● Binary search cập nhật l/r sai (không thu hẹp khoảng) → vòng lặp vô tận hoặc bỏ sót nghiệm.

● Comparator viết a <= b (không chặt) → vi phạm strict weak ordering, sort báo lỗi runtime.

● Xóa phần tử trong vector khi đang duyệt bằng iterator → iterator bị hỏng; cần dùng giá trị trả về của erase.

GIAI ĐOẠN 6 — CON TRỎ & CHUỖI (Buổi 19–22)
Buổi 19 Con trỏ & Mảng động

LÝ THUYẾT

● Toán tử & và toán tử *

● Tham chiếu

● Con trỏ; mảng động (new / delete)

DẠNG BÀI CHUYÊN SÂU

● Hoán đổi giá trị qua con trỏ; duyệt mảng bằng con trỏ

● Cấp phát mảng động theo kích thước nhập từ bàn phím

LỖI THƯỜNG GẶP

● Con trỏ NULL / chưa khởi tạo

● Rò rỉ bộ nhớ (quên delete); truy cập vùng đã giải phóng

● Nhầm & (địa chỉ) với * (giải tham chiếu)

Buổi 20 String & Chuẩn hóa dữ liệu

LÝ THUYẾT

● Khái niệm chuỗi ký tự; các hàm thao tác chuỗi

● Chuẩn hóa dữ liệu chuỗi

DẠNG BÀI CHUYÊN SÂU

● Tách/ghép chuỗi; chuẩn hóa (bỏ khoảng trắng thừa, viết hoa/thường)

● Đếm từ; kiểm tra chuỗi hợp lệ

LỖI THƯỜNG GẶP

● Nhầm chỉ số ký tự; getline vs cin >> (đọc thừa/thiếu dòng)

● Quên ký tự kết thúc '\0' với chuỗi C

Buổi 20 String & Chuẩn hóa dữ liệu

Giải đáp và hướng dẫn chi tiết bài tập thực hành về OOP

Thảo luận về các nguyên tắc thiết kế trong OOP

Buổi 21 String nâng cao & Xử lý dữ liệu

LÝ THUYẾT

● Ôn xử lý chuỗi; các bài toán chuỗi nâng cao

● Giới thiệu kỹ thuật xử lý số lớn (BigNum) bằng chuỗi/mảng (mức cơ bản, tùy chọn)

DẠNG BÀI CHUYÊN SÂU

● Xử lý chuỗi phức tạp: tách token, chuẩn hóa, so khớp cơ bản

● (Tùy chọn) cộng / nhân số lớn bằng chuỗi

LỖI THƯỜNG GẶP

● Nhầm chỉ số ký tự; quên trường hợp chuỗi rỗng

● (BigNum) quên số nhớ (carry); số 0 đứng đầu

Buổi 22 Ôn tập & Chữa bài chuyên sâu: Con trỏ + Chuỗi

NỘI DUNG ÔN TẬP

● Con trỏ, tham chiếu, mảng động (new/delete)

● String & chuẩn hóa; xử lý chuỗi nâng cao

CHỮA BÀI CHUYÊN SÂU

● Chữa: hoán đổi qua con trỏ, cấp phát & giải phóng đúng

● Tách/chuẩn hóa chuỗi; đếm từ; kiểm tra hợp lệ

LỖI TRỌNG TÂM

● Con trỏ NULL/treo; rò rỉ bộ nhớ

● getline vs cin >>; nhầm chỉ số ký tự

CHỮA BÀI MẪU (TÌNH HUỐNG ĐIỂN HÌNH)

● Cấp phát new[] nhưng quên delete[] → rò rỉ bộ nhớ.

● Trả về con trỏ tới biến cục bộ trong hàm → con trỏ treo, dữ liệu không còn hợp lệ.

● Dùng cin >> rồi getline mà quên bỏ ký tự '\n' còn lại → getline đọc phải dòng rỗng.

GIAI ĐOẠN 7 — HƯỚNG ĐỐI TƯỢNG CƠ BẢN (Buổi 23–27)
Buổi 23 Struct

LÝ THUYẾT

● Định nghĩa kiểu dữ liệu struct; constructor trong struct

● Operator overloading với struct

● Con trỏ kiểu struct

DẠNG BÀI CHUYÊN SÂU

● Mô hình hóa đối tượng: điểm, phân số, sinh viên

● Sắp xếp struct bằng comparator / toán tử nạp chồng; mảng struct

LỖI THƯỜNG GẶP

● Quên khởi tạo thành viên

● Nhầm truy cập qua . và ->

● Nạp chồng toán tử sai chữ ký

Buổi 24 OOP nhập môn: Lớp & Đối tượng

LÝ THUYẾT

● Các khái niệm cơ bản trong OOP; class vs struct

● Access modifier: private, protected, public

● Thuộc tính & phương thức; tạo đối tượng

DẠNG BÀI CHUYÊN SÂU

● Xây lớp cơ bản (HinhChuNhat, TaiKhoan) với getter/setter

● Tạo và sử dụng đối tượng

LỖI THƯỜNG GẶP

● Để lộ toàn bộ dữ liệu (public hết)

● Quên class mặc định là private; nhầm phạm vi truy cập

Buổi 25 Đóng gói, Trừu tượng, Hàm bạn & Lớp bạn

LÝ THUYẾT

● Tính trừu tượng trong OOP

● Đóng gói dữ liệu (encapsulation)

● Hàm bạn (friend) và lớp bạn

DẠNG BÀI CHUYÊN SÂU

● Che giấu dữ liệu + kiểm tra ràng buộc trong setter

● Dùng friend để nạp chồng toán tử <<

LỖI THƯỜNG GẶP

● Lạm dụng friend phá vỡ đóng gói

● Setter không kiểm tra hợp lệ dữ liệu

Buổi 26 Constructor/Destructor & Nạp chồng toán tử

LÝ THUYẾT

● Constructor (mặc định, tham số, sao chép); destructor

● Nạp chồng toán tử (+, ==, <<, [])

● Sao chép sâu (deep copy) — quy tắc Rule of Three

DẠNG BÀI CHUYÊN SÂU

● Lớp Phân số / Số phức / Vector2D nạp chồng toán tử

● Lớp có bộ nhớ động cần copy constructor đúng

LỖI THƯỜNG GẶP

● Shallow copy gây double free

● Quên giải phóng trong destructor; toán tử nạp chồng trả sai kiểu

Buổi 27 Ôn tập & Chữa bài chuyên sâu: OOP cơ bản

NỘI DUNG ÔN TẬP

● Struct; lớp & đối tượng; access modifier; đóng gói

● Constructor/destructor; nạp chồng toán tử; deep copy

CHỮA BÀI CHUYÊN SÂU

● Chữa: xây lớp có đóng gói đầy đủ + kiểm tra ràng buộc

● Nạp chồng toán tử cho Phân số/Vector2D; lớp có bộ nhớ động

LỖI TRỌNG TÂM

● Public hết dữ liệu; shallow copy (double free)

● Toán tử nạp chồng sai kiểu trả về; quên destructor

CHỮA BÀI MẪU (TÌNH HUỐNG ĐIỂN HÌNH)

● Lớp có con trỏ động dùng copy mặc định (shallow copy) → hai đối tượng cùng trỏ một vùng nhớ, hủy hai lần (double free); cần copy constructor sao chép sâu.

● Để thuộc tính public rồi gán giá trị không hợp lệ → mất đóng gói; nên đưa vào private + setter kiểm tra.

● Nạp chồng << đặt làm hàm thành viên thay vì friend → sai thứ tự toán hạng khi gọi cout << obj.

GIAI ĐOẠN 8 — HƯỚNG ĐỐI TƯỢNG NÂNG CAO (Buổi 28–31)
Buổi 28 Kế thừa

LÝ THUYẾT

● Tính kế thừa; lớp cơ sở và lớp dẫn xuất; thành viên protected

● Constructor/destructor trong kế thừa; xác định lại hàm lớp cơ sở

● Cấu trúc phân cấp lớp

DẠNG BÀI CHUYÊN SÂU

● Phân cấp Người → Sinh viên / Giảng viên; Phương tiện → Xe máy / Ô tô

● Tái sử dụng mã qua kế thừa

LỖI THƯỜNG GẶP

● Sai thứ tự gọi constructor cha/con

● Quên gọi constructor lớp cơ sở; nhầm private với protected

Buổi 29 Đa hình, Hàm ảo & Lớp trừu tượng

LÝ THUYẾT

● Tính đa hình và hàm ảo (virtual)

● Con trỏ lớp cơ sở trỏ tới đối tượng lớp dẫn xuất

● Lớp cơ sở trừu tượng và hàm ảo thuần túy

DẠNG BÀI CHUYÊN SÂU

● Mảng con trỏ lớp cơ sở gọi hàm đa hình

● Lớp trừu tượng HinhHoc → các hình; tính diện tích đa hình

LỖI THƯỜNG GẶP

● Quên virtual → gọi nhầm hàm lớp cơ sở

● Destructor không virtual gây rò rỉ khi xóa qua con trỏ cơ sở

● Quên override hàm ảo thuần túy

Buổi 30 Khuôn mẫu (Template) & Ngoại lệ

LÝ THUYẾT

● Khuôn mẫu hàm; khuôn mẫu lớp

● Ngoại lệ (try / throw / catch)

● Kết nối template với STL

DẠNG BÀI CHUYÊN SÂU

● Hàm/lớp template: maxOf<T>, container tổng quát

● Bắt lỗi chia 0 / truy cập ngoài giới hạn bằng ngoại lệ

LỖI THƯỜNG GẶP

● Sai cú pháp template; không suy luận được kiểu

● Bắt ngoại lệ sai kiểu

Buổi 31 Ôn tập & Chữa bài chuyên sâu: OOP nâng cao

NỘI DUNG ÔN TẬP

● Kế thừa; protected; đa hình & hàm ảo; lớp trừu tượng

● Template; ngoại lệ

CHỮA BÀI CHUYÊN SÂU

● Chữa: phân cấp lớp & tái sử dụng mã; mảng con trỏ lớp cơ sở gọi đa hình

● Viết hàm/lớp template; bắt ngoại lệ

LỖI TRỌNG TÂM

● Quên virtual; destructor không virtual

● Sai thứ tự constructor cha/con; override thiếu

CHỮA BÀI MẪU (TÌNH HUỐNG ĐIỂN HÌNH)

● Gọi hàm qua con trỏ lớp cơ sở nhưng quên virtual → chạy hàm lớp cơ sở, mất đa hình.

● Xóa đối tượng dẫn xuất qua con trỏ lớp cơ sở mà destructor không virtual → hủy không đầy đủ, rò rỉ bộ nhớ.

● Lớp dẫn xuất quên gọi constructor lớp cơ sở có tham số → lỗi biên dịch.

Buổi 32 Ôn tập toàn khóa & Dự án tổng hợp

LÝ THUYẾT

● Hệ thống lại toàn bộ: nền tảng → hàm/số học → mảng/ma trận → đệ quy → STL → con trỏ/chuỗi → OOP

● Định hướng học tiếp: khóa Cấu trúc dữ liệu, khóa ôn thi HSG

DẠNG BÀI CHUYÊN SÂU

● Dự án tổng hợp kết hợp OOP + xử lý dữ liệu + thuật toán cơ bản

● Bộ đề ôn tập cuối khóa

LỖI THƯỜNG GẶP

● Rà soát lại các lỗi cốt lõi xuyên suốt khóa học