Khoá học đưa bạn từ việc viết các đoạn mã rời rạc trong hàm main sang tư duy thiết kế chương trình theo mô-đun và quản lý dữ liệu có cấu trúc bằng C++ hiện đại. Bạn sẽ làm chủ cách tái sử dụng hàm thư viện chuẩn, tự thiết kế và tổ chức hàm có tham số truyền trị, tham chiếu, nạp chồng và đệ quy.
Tiếp nối nền tảng về hàm, khoá học đi sâu vào các cấu trúc dữ liệu tuần tự cốt lõi gồm mảng một chiều, mảng hai chiều và std::vector, cùng các thuật toán tìm kiếm và sắp xếp kinh điển. Bạn cũng sẽ thành thạo kỹ thuật xử lý ký tự, chuỗi kiểu C và std::string qua các bài toán thực hành chấm tự động.
Ở chặng cuối, khoá học giải mã cơ chế hoạt động bên trong bộ nhớ máy tính thông qua địa chỉ, con trỏ, mối liên hệ giữa con trỏ với mảng và cấp phát bộ nhớ động (Stack và Heap). Kết thúc khoá, bạn hoàn thành dự án quản lý dữ liệu trên bộ nhớ động và nắm vững nền tảng để bước sang Lập trình Hướng đối tượng với C++.
Nội dung khóa học
Module 1. Sử dụng hàm thư viện và Tự xây dựng hàm
7 bài học · 51 hoạt động-
Khái niệm hàm và cách sử dụng hàm thư viện chuẩn
-
Đọc code: Theo dõi giá trị trả về của các hàm toán học
-
Thực hành: Tính khoảng cách Euclid giữa hai điểm
-
Làm tròn số, trị tuyệt đối và các hàm toán học mở rộng trong <cmath>
-
Thực hành: Tính cạnh huyền tam giác vuông
-
Thực hành: Tìm giá trị nhỏ nhất, lớn nhất và độ chênh lệch của bốn số nguyên
-
Thực hành: Kiểm tra số nguyên tố tối ưu bằng căn bậc hai
-
Số giả ngẫu nhiên, hạt giống (Seed) và bộ sinh cổ điển srand/rand
-
Đọc code: Ánh xạ số nguyên không âm vào đoạn cho trước
-
Sinh số ngẫu nhiên hiện đại với thư viện <random>
-
Thực hành: Mô phỏng tung cặp xúc xắc với <random>
-
Thực hành: Trò chơi đoán số bí mật dùng mt19937
-
Thực hành: Ánh xạ giá trị ngẫu nhiên thô vào đoạn [low, high]
-
Kiểm tra nhanh: Hàm thư viện và Sinh số ngẫu nhiên
-
Cấu trúc hàm trả về giá trị, tham số và câu lệnh return
-
Đọc code: Theo dõi giá trị trả về và lời gọi hàm lồng nhau
-
Thực hành: Tự viết hàm tính giai thừa
-
Thực hành: Viết hàm tìm ước chung lớn nhất và áp dụng cho ba số
-
Tìm lỗi: Sửa các lỗi định nghĩa hàm và câu lệnh return
-
Thực hành: Viết hàm tính khoảng cách và chu vi tam giác
-
Thực hành: Hàm đảo ngược chữ số và kiểm tra số đối xứng
-
Kiểm tra nhanh: Tự định nghĩa hàm trả về giá trị và return
-
Hàm void (thủ tục) và câu lệnh return; không giá trị
-
Thực hành in hình: Vẽ cây thông bằng hàm void
-
Thực hành: Thủ tục in một dòng của bảng cửu chương
-
Truyền tham trị (Pass by Value) và phạm vi biến cục bộ
-
Đọc code: Theo dõi truyền tham trị và biến cục bộ trùng tên
-
Tìm lỗi: Sửa lỗi gọi hàm void và return sai kiểu
-
Thực hành: Mô phỏng tài khoản ngân hàng với hàm void và cập nhật qua return
-
Kiểm tra nhanh: Hàm void và Truyền tham trị
-
Nguyên mẫu hàm (Function Prototype): Tách khai báo và định nghĩa
-
Tìm lỗi: Sửa lỗi thiếu nguyên mẫu và lệch chữ ký hàm
-
Tư duy phân rã từ trên xuống (Top-Down) và hàm gọi hàm
-
Đọc code: Theo dõi luồng thực thi khi dùng nguyên mẫu hàm
-
Thực hành: Tổ chức bảng luỹ thừa bằng nguyên mẫu hàm
-
Thực hành: Tổ chức nguyên mẫu hàm tính tổ hợp và in hàng tam giác Pascal
-
Kiểm tra nhanh: Nguyên mẫu hàm và Thiết kế phân rã
-
So sánh số thực bằng sai số epsilon (Floating-Point Equality)
-
Đọc code: Lỗi so sánh == trực tiếp trên số thực
-
Thực hành: Kiểm tra tam giác vuông toạ độ thực bằng sai số epsilon
-
Hàm kiểm tra điều kiện (bool) và hàm xác thực đầu vào
-
Thực hành: Bộ hàm bool kiểm tra năm nhuận và ngày tháng hợp lệ
-
Thực hành: Hàm xác thực đầu vào nằm trong đoạn [low, high]
-
Kiểm tra nhanh: Sai số epsilon, hàm bool và xác thực đầu vào
-
Tổng hợp nguyên tắc thiết kế hàm sạch và tự đánh giá Module 1
-
Thực hành tổng hợp: Tìm số nguyên tố đối xứng trong đoạn [a, b]
-
Thực hành tổng hợp: Xấp xỉ chuỗi Taylor cho e^x và đối chiếu cmath
-
Thực hành tổng hợp: Tìm các cặp số thân thiết (Amicable Numbers)
-
Thực hành tổng hợp: Tính diện tích tứ giác lồi qua hàm distance_2d và Heron
-
Thực hành tổng hợp: Trò chơi Craps mô-đun hoá với các hàm tung xúc xắc
-
Tổng kết Module 1
Module 2. Tổ chức hàm nâng cao: Phạm vi, Tham chiếu, Nạp chồng và Đệ quy
7 bài học · 48 hoạt động-
Phạm vi (Scope), vòng đời biến và biến static trong hàm
-
Đọc code: Truy vết biến cục bộ, toàn cục và biến static
-
Thực hành: Tích luỹ giá trị qua từng lần gọi hàm bằng biến static
-
Hàm thuần khiết, tác dụng phụ và cạm bẫy biến toàn cục
-
Tìm lỗi: Sửa lỗi phạm vi biến, che khuất tên biến và biến chưa khởi tạo
-
Thực hành: Theo dõi giá trị lớn nhất tích luỹ bằng biến static
-
Biến tham chiếu (T&) — Bí danh của biến đã tồn tại
-
Đọc code: Theo dõi giá trị biến gốc và biến tham chiếu
-
Truyền tham chiếu (Pass by Reference) và hàm hoán đổi swap
-
Tìm lỗi: Sửa lỗi hàm hoán đổi và quy tắc khai báo tham chiếu
-
Thực hành: Sắp xếp tăng dần ba số nguyên bằng tham chiếu
-
Thực hành: Quy đổi tổng số giây sang giờ, phút, giây qua tham chiếu
-
Thực hành: Tính trung điểm và khoảng cách hai điểm bằng tham chiếu
-
Tham chiếu hằng (const T&): Tránh sao chép mà vẫn an toàn
-
Theo dõi T, T& và const T& qua từng lời gọi hàm
-
Bảng quyết định chọn T, T&, const T& và Bẫy tham chiếu treo
-
Săn lỗi const T&, rvalue và tham chiếu treo
-
Tìm vị trí đầu tiên và đếm số lần xuất hiện ký tự
-
Chuẩn hoá giá trị trong đoạn [low, high]
-
Giải phương trình bậc hai qua tham chiếu nghiệm
-
Nạp chồng hàm (Function Overloading) và Chữ ký hàm
-
Theo dõi phân giải nạp chồng và đối số mặc định
-
Đối số mặc định và Tránh lời gọi mơ hồ (Ambiguous Call)
-
Săn lỗi chữ ký nạp chồng, đối số mặc định và lời gọi mơ hồ
-
Nạp chồng max_val cho 2 int, 3 int và 2 double
-
Hàm sum_range với đối số mặc định
-
Nạp chồng perimeter tính chu vi các hình phẳng
-
Hàm inline và constexpr: Tốc độ và tính toán lúc biên dịch
-
Theo dõi constexpr, inline và namespace trong chương trình
-
Tổ chức mã nguồn với tệp tiêu đề .h và tệp cài đặt .cpp
-
Rà lỗi đa tệp .h / .cpp và constexpr
-
Chuyển đổi hàm hằng biểu thức constexpr trong namespace
-
Hàm constexpr tính giai thừa và tổ hợp nCr
-
Tách nguyên mẫu hàm theo phong cách .h và phần cài đặt
-
Đệ quy (Recursion), Trường hợp cơ sở và Call Stack
-
Theo dõi lời gọi đệ quy và thứ tự LIFO của Call Stack
-
Các thuật toán đệ quy kinh điển và Đệ quy vs Vòng lặp
-
Gỡ lỗi hàm đệ quy: Thiếu base case, n-- và gọi lặp nhánh
-
Đệ quy tính tổng các chữ số của số nguyên
-
Thuật toán Euclid đệ quy tính GCD và LCM
-
Luỹ thừa nhanh modulo M bằng đệ quy
-
Bài toán Tháp Hà Nội (Tower of Hanoi)
-
Hệ thống hoá kiến thức Module 2: Từ Phạm vi đến Đệ quy
-
Thống kê luồng dữ liệu với static và tham chiếu đầu ra
-
Nạp chồng và đối số mặc định tính khoảng cách hình học
-
Phép toán phân số: Rút gọn đệ quy và cập nhật qua tham chiếu
-
Tổng kiểm tra lỗi Module 2: Phạm vi, Tham chiếu, Nạp chồng và Đệ quy
-
Tổng kết Module 2
Module 3. Mảng một chiều và std::vector
7 bài học · 52 hoạt động-
Mảng một chiều tĩnh và quy tắc đánh chỉ số từ 0
-
Kích thước mảng với sizeof, std::size và bẫy chỉ số ngoài biên
-
Đọc code: Lần vết phần tử mảng một chiều qua vòng lặp
-
Tìm lỗi: Khai báo sai kích thước và truy cập ngoài biên mảng tĩnh
-
Thực hành cơ bản: Khởi tạo mảng và in cặp chỉ số - giá trị
-
Thực hành: Tổng các cặp phần tử đối xứng đầu và cuối mảng
-
Thực hành: Tính trung bình và đếm số phần tử vượt mức trung bình
-
Các mẫu duyệt mảng: Nhập, xuất, tính tổng và đếm điều kiện
-
Đọc code: Duyệt mảng theo chỉ số và giá trị phần tử
-
Thực hành: Đếm và tính tổng phần tử chẵn ở chỉ số lẻ
-
Tìm cực trị kèm vị trí và đảo ngược mảng tại chỗ
-
Đọc code: Lần vết biến đổi mảng khi đảo ngược tại chỗ
-
Thực hành: Tìm cực đại, cực tiểu và vị trí xuất hiện
-
Thực hành: Đảo ngược một đoạn phần tử tại chỗ
-
Thực hành: Kiểm tra mảng đối xứng (Palindrome)
-
Cú pháp truyền mảng một chiều vào hàm và tham số kích thước
-
Đọc code: Truyền mảng vào hàm làm thay đổi phần tử gốc
-
Bảo vệ dữ liệu chỉ đọc với const và tổ chức hàm xử lý mảng
-
Tìm lỗi: Gọi hàm nhận mảng, sizeof trong hàm và vi phạm const
-
Thực hành: Hàm tìm giá trị lớn thứ hai trong mảng
-
Thực hành: Chuẩn hoá biên giá trị mảng tại chỗ bằng hàm
-
Thực hành: Hàm kiểm tra mảng con liên tiếp
-
Giới thiệu std::vector<T>: Khai báo, khởi tạo và [] vs .at()
-
Đọc code: Phân biệt ngoặc tròn () và ngoặc nhọn {} khi khởi tạo vector
-
Mở rộng và thu gọn std::vector: push_back, pop_back, size, empty, clear
-
Đọc code: Lần vết push_back, pop_back, clear và sao chép vector
-
Tìm lỗi: Bẫy sử dụng [], .size() - 1, empty() và pop_back() trên vector
-
Thực hành: Đọc dãy không định trước độ dài và tính tổng cặp kề nhau
-
Thực hành: Thống kê phân bố điểm theo cụm 10 điểm
-
Thực hành: Mô phỏng chuỗi thao tác PUSH, POP, CLEAR trên vector
-
Vòng lặp for theo phạm vi: Đọc giá trị và sửa qua tham chiếu
-
Đọc code: Biến bản sao và biến tham chiếu trong vòng lặp phạm vi
-
Truyền std::vector vào hàm qua const&, & và trả về vector
-
Tìm lỗi: Tham chiếu, const& và vòng lặp phạm vi trên vector
-
Thực hành: Nhân hệ số và tính trung bình vector bằng vòng lặp phạm vi
-
Thực hành: Hàm kiểm tra bao hàm phần tử giữa hai vector
-
Thực hành: Hàm trả về vector các số nguyên tố trong đoạn [L, R]
-
Chèn, xoá tại vị trí k, lọc phần tử và xoay vòng dãy
-
Đọc code: Lần vết thao tác xoá và xoay vòng dãy số
-
Thực hành: Chèn và xoá phần tử theo chuỗi truy vấn trên vector
-
Thực hành: Xoay vòng dãy sang phải k bước tại chỗ
-
Thực hành: Lọc bỏ các phần tử trùng lặp giữ nguyên thứ tự đầu tiên
-
Sàng Eratosthenes và So sánh mảng tĩnh với std::vector
-
Thực hành: Đếm số nguyên tố trong đoạn [L, R] bằng Sàng Eratosthenes
-
Thực hành: Tìm giá trị xuất hiện nhiều nhất (Mode) bằng mảng đếm
-
Thực hành tổng hợp 1: Phân tích chuỗi nhiệt độ
-
Thực hành tổng hợp 2: Tra cứu điểm bằng hai vector song song
-
Thực hành tổng hợp 3: Đoạn con tăng nghiêm ngặt liên tiếp dài nhất
-
Thực hành tổng hợp 4: Trung bình trượt cửa sổ kích thước k
-
Khám phá tương tác: Bảng quản lý danh sách điểm với std::vector
-
Sơ đồ tư duy: Hệ thống hoá Mảng một chiều và std::vector
-
Tổng kết Module 3
Module 4. Mảng hai chiều, Ma trận và Mini-project giữa khoá
7 bài học · 48 hoạt động-
Mảng hai chiều và kỹ thuật duyệt bảng theo hàng - cột
-
Đọc code: Lần vết duyệt ma trận hai chiều theo hàng và đường chéo
-
Thực hành: Tính tổng các phần tử theo từng hàng của ma trận
-
Quy tắc khởi tạo thiếu phần tử, duyệt theo cột và tìm cực trị
-
Tìm lỗi: Khai báo kích thước cột, khởi tạo ngoặc nhọn và nhầm chỉ số hàng - cột
-
Thực hành: Khởi tạo bảng giá trị theo công thức chỉ số hàng và cột
-
Thực hành: Tính tổng các phần tử theo từng cột của ma trận
-
Thực hành: Tìm giá trị lớn nhất, nhỏ nhất và toạ độ trong ma trận
-
Truyền mảng hai chiều tĩnh vào hàm và lý do cố định kích thước cột
-
Đọc code: Truyền ma trận qua hàm chỉ đọc và hàm biến đổi gốc
-
Biến đổi ma trận qua hàm, truyền một hàng a[i] và bí danh kiểu using
-
Tìm lỗi: Thiếu kích thước cột ở tham số hàm, lệch số cột và vi phạm const
-
Thực hành: Hàm đếm phần tử âm và chia hết cho k trong ma trận
-
Thực hành: Hàm kẹp giá trị ma trận vào đoạn [low, high] tại chỗ
-
Thực hành: Hoán đổi hai hàng và nhân hệ số một hàng qua hàm
-
Kiểm tra nhanh: Truyền mảng hai chiều tĩnh vào hàm
-
Ma trận vuông: Đường chéo chính, đường chéo phụ, tam giác và tính đối xứng
-
Đọc code: Truy vết đường chéo và kiểm tra ma trận tam giác trên
-
Thực hành: Tổng đường chéo chính, đường chéo phụ và hợp hai đường chéo
-
Thực hành: Kiểm tra ma trận đối xứng và tổng hai tam giác trên - dưới
-
Ma trận chuyển vị, phép cộng/trừ và phép nhân hai ma trận
-
Thực hành: Tìm ma trận chuyển vị của ma trận chữ nhật
-
Thực hành: Cộng và trừ hai ma trận cùng kích thước
-
Thực hành: Tính tích hai ma trận bằng hàm
-
Khởi tạo, truy cập và truyền std::vector<std::vector<T>> vào hàm
-
Đọc code: Khởi tạo kích thước động, thay đổi phần tử và vòng lặp phạm vi
-
Ma trận răng cưa (Jagged Vector) và bẫy kích thước hàng - cột
-
Tìm lỗi: Khởi tạo sai kiểu, truyền bản sao và bẫy m[0].size() trên 2D vector
-
Thực hành: Dựng Tam giác Pascal bằng std::vector<std::vector<long long>>
-
Thực hành: Nhập và thống kê bảng dữ liệu răng cưa theo từng hàng
-
Thực hành: Xoay ma trận vuông 90 độ theo chiều kim đồng hồ bằng hàm
-
Kiểm tra nhanh: Mảng hai chiều động với std::vector<std::vector<T>>
-
Lưới 2D và mảng dịch chuyển lân cận 4 hướng, 8 hướng
-
Đọc code: Đếm ô lân cận 4 hướng với hàm kiểm tra biên in_bounds
-
Tìm lỗi: Truy cập ngoài biên lưới, thiếu hướng dịch chuyển và đếm nhầm ô tâm
-
Thực hành: Tạo bảng gợi ý mìn 8 hướng (Minesweeper)
-
Thực hành: Đếm số đỉnh cực đại địa phương trên bản đồ 2D
-
Thực hành: Kiểm tra trạng thái thắng thua bàn cờ Tic-Tac-Toe 3x3
-
Khám phá tương tác: Trò chơi Tic-Tac-Toe 3x3 hai người chơi trên Terminal
-
Thiết kế chương trình mô-đun hoá với ma trận vector<vector<double>>
-
Thực hành: Truy vấn tổng ma trận con nhiều lần
-
Thực hành: Chuỗi phép biến đổi lưới lật ngang, lật dọc và chuyển vị
-
Thực hành: Tính điểm trung bình bảng điểm lớp học và lọc học viên
-
Rà soát lỗi tổng hợp Module 4: Tham số mảng tĩnh, tham chiếu vector, ragged size và đoản mạch biên
-
Mini-project: Quản lý Bảng điểm Lớp học trên Ma trận 2D
-
Hệ thống hoá Module 4: So sánh mảng 2D tĩnh, vector 2D và bẫy thường gặp
-
Sơ đồ tư duy: Toàn cảnh Mảng hai chiều và Ma trận trong C++
-
Tổng kết Module 4
Module 5. Thuật toán Tìm kiếm và Sắp xếp cơ bản
7 bài học · 49 hoạt động-
Thuật toán Tìm kiếm tuyến tính (Linear Search)
-
Đọc code: Lần vết hàm tìm kiếm tuyến tính và số lần so sánh
-
Thực hành: Tìm vị trí đầu tiên và cuối cùng của phần tử k
-
Các biến thể Linear Search: Đếm, lọc vị trí và dừng sớm
-
Tìm lỗi: Bẫy vòng lặp tìm kiếm tuyến tính và trả về -1
-
Thực hành: Liệt kê tất cả chỉ số xuất hiện của phần tử x
-
Thực hành: Tìm kiếm trên mảng tĩnh và đếm số phép so sánh
-
Nguyên lý Tìm kiếm nhị phân và công thức mid chống tràn số
-
Đọc code: Lần vết các giá trị mid trong Tìm kiếm nhị phân
-
Thực hành: Cài đặt Tìm kiếm nhị phân trả về chỉ số hoặc -1
-
Tự cài đặt lower_bound và upper_bound bằng vòng lặp
-
Tìm lỗi: Bẫy vòng lặp vô tận và sai biên trong Tìm kiếm nhị phân
-
Thực hành: Tự cài đặt lower_bound và upper_bound trên dãy có phần tử trùng
-
Thực hành: Đếm số phần tử thuộc đoạn [L, R] bằng tìm kiếm nhị phân
-
Sắp xếp chọn (Selection Sort) và hàm std::swap
-
Đọc code: Lần vết mảng sau từng lượt của Selection Sort
-
Thực hành: Cài đặt Selection Sort và thống kê phép so sánh, hoán đổi
-
Sắp xếp nổi bọt (Bubble Sort) và cờ swapped tối ưu dừng sớm
-
Tìm lỗi: Lỗi biên j + 1, quên reset cờ swapped và sai chiều Bubble Sort
-
Thực hành: Cài đặt Bubble Sort tối ưu cờ swapped và đếm số lượt thực thi
-
Thực hành: Sắp xếp giảm dần bằng Selection Sort và in trạng thái từng lượt
-
Sắp xếp chèn (Insertion Sort): Ý tưởng xếp bài và dịch chuyển
-
Đọc code: Lần vết biến key và số bước dịch chuyển trong Insertion Sort
-
Thực hành: Cài đặt Insertion Sort và thống kê phép so sánh, dịch phần tử
-
Vì sao Insertion Sort nhanh trên dãy gần sắp xếp và So sánh 3 thuật toán
-
Tìm lỗi: Sai thứ tự điều kiện while và mất biến key ở Insertion Sort
-
Thực hành: Chèn từng phần tử mới vào dãy để duy trì thứ tự tăng dần
-
Thực hành: Sắp xếp một đoạn con [L, R] theo thứ tự giảm dần bằng Insertion Sort
-
Thuật toán Trộn hai dãy đã sắp xếp bằng kỹ thuật Hai chỉ số
-
Đọc code: Lần vết hai chỉ số i, j khi trộn và xử lý phần tử dư
-
Thực hành: Trộn hai dãy tăng dần thành một dãy tăng dần
-
Kiểm thử tính đúng đắn (is_sorted, hoán vị) và Đánh giá hiệu năng thực nghiệm
-
Thực hành: Viết hàm kiểm tra is_sorted và tính hoán vị sau sắp xếp
-
Thực hành: Tìm hợp và giao của hai dãy đã sắp xếp bằng Hai chỉ số
-
Khám phá tương tác: Đo số phép so sánh và thời gian chạy khi kích thước N tăng
-
Hàm std::sort trong <algorithm> và phạm vi [v.begin(), v.end())
-
Viết hàm so sánh tuỳ biến bool cmp(T a, T b) cho std::sort
-
Đọc code: Dự đoán thứ tự sau khi gọi std::sort với comparator tiêu chí kép
-
Tìm lỗi: Sai dấu >= trong comparator, lỗi logic tiêu chí kép và truyền cmp()
-
Thực hành: Sắp xếp số nguyên theo trị tuyệt đối tăng dần
-
Thực hành: Sắp xếp danh sách từ theo độ dài và thứ tự từ điển
-
Thực hành: Sắp xếp theo tổng chữ số tăng dần và giá trị giảm dần
-
Thực hành: Loại bỏ phần tử trùng lặp sau khi sắp xếp
-
Thực hành: Thống kê tần suất và tìm phần tử phổ biến nhất
-
Thực hành: Phần tử lớn thứ k và lớn thứ k phân biệt
-
Thực hành: Trả lời nhiều truy vấn với Sắp xếp và Tìm kiếm nhị phân
-
Thực hành: Sắp xếp bảng xếp hạng trên hai vector song song
-
Sơ đồ tư duy: Tổng hợp Tìm kiếm và Sắp xếp cơ bản
-
Tổng kết Module 5
Module 6. Xử lý Ký tự và Chuỗi (C-string và std::string)
7 bài học · 49 hoạt động-
Thư viện ký tự (cctype) và cấu trúc Chuỗi kiểu C (C-string)
-
Đọc code: Ký tự kết thúc chuỗi và chuyển đổi hoa thường
-
Thực hành cơ bản: Bảng chuyển đổi chữ thường sang hoa với <cctype>
-
Khởi tạo C-string, phân biệt 'a' với "a" và truyền mảng char vào hàm
-
Tìm lỗi: Truyền sai kiểu vào <cctype>, thiếu '\0' và quên ép kiểu
-
Thực hành: Thống kê chữ cái, chữ số và khoảng trắng trong chuỗi
-
Thực hành: Tự viết hàm đếm độ dài và đảo hoa thường trên C-string
-
Nhập chuỗi với cin.getline và đo, so sánh C-string với strlen, strcmp
-
Đọc code: Lần vết cin.getline, strlen và strcmp trên mảng ký tự
-
Thực hành: So sánh độ dài và thứ tự từ điển của hai dòng văn bản với <cstring>
-
Sao chép, nối chuỗi (strcpy, strcat) và Bẫy tràn bộ đệm
-
Tìm lỗi: Tràn bộ đệm, thiếu '\0' và so sánh mảng ký tự sai cách
-
Thực hành: Ghép họ và tên bằng strcpy, strcat kèm kiểm tra sức chứa
-
Thực hành: Tìm từ nhỏ nhất và lớn nhất theo thứ tự từ điển trong mảng C-string
-
Khởi tạo, nhập chuỗi có khoảng trắng với getline và so sánh từ điển std::string
-
Đọc code: Lần vết phép gán, kích thước và so sánh từ điển trên std::string
-
Thực hành: Nhập danh sách họ tên với getline(cin >> ws, s) và tìm tên dài nhất
-
Nối chuỗi (+, +=), truy cập ký tự ([], .at) và duyệt chuỗi với for (char& c : s)
-
Tìm lỗi: Nối hai chuỗi hằng, thiếu tham chiếu & khi sửa và lỗi size_t khi chuỗi rỗng
-
Thực hành: Loại bỏ dấu câu và viết hoa chữ cái đầu mỗi từ trong chuỗi
-
Thực hành: Mã hoá dãy số sang chuỗi thập lục phân qua bảng tra ký tự
-
Tìm kiếm trong std::string: find, rfind, find_first_of và hằng số string::npos
-
Đọc code: Lần vết vòng lặp find và find_first_of tìm mọi vị trí khớp
-
Thực hành: Liệt kê toàn bộ vị trí xuất hiện không chồng lấn của chuỗi con
-
Trích xuất và chỉnh sửa chuỗi với substr, insert, erase, replace
-
Tìm lỗi: Quên kiểm tra string::npos, vòng lặp replace vô tận và sai tham số substr
-
Thực hành: Tách thư mục, tên tệp và phần mở rộng từ đường dẫn bằng rfind và substr
-
Thực hành: Thay thế toàn bộ chuỗi con xuất hiện trong văn bản bằng replace
-
Chuyển đổi giữa Số và std::string với stoi, stoll, stod và to_string
-
Thực hành: Trích xuất và cộng dồn giá trị số lớn từ chuỗi dạng nhãn:giá_trị
-
Tách từ và phân tích chuỗi theo dấu phân cách: find/substr và std::istringstream
-
Đọc code: Lần vết tách trường dữ liệu dấu phân cách và đọc token với istringstream
-
Tìm lỗi: Bẫy tràn int ở stoi, bỏ sót phần tử cuối khi tách chuỗi và truyền chuỗi không hợp lệ
-
Thực hành: Phân tích bảng điểm CSV dấu chấm phẩy bằng find, substr và stod
-
Thực hành: Đếm số từ và tính tổng các số nguyên đứng riêng trong câu bằng istringstream
-
Kiểm tra đối xứng (Palindrome), Chuẩn hoá họ tên và Đảo chữ (Anagram)
-
Đọc code: Lần vết mảng tần suất ký tự và phép dịch vòng chữ cái
-
Thực hành: Kiểm tra chuỗi đối xứng (Palindrome) bỏ qua dấu câu, khoảng trắng và hoa thường
-
Đếm tần suất ký tự với mảng freq[26] và Mật mã dịch vòng Caesar
-
Thực hành: Chuẩn hoá họ tên (xoá khoảng trắng thừa và viết hoa chữ đầu mỗi từ)
-
Thực hành: Kiểm tra hai chuỗi có phải đảo chữ (Anagram) không
-
Thực hành: Mã hoá và giải mã văn bản theo mật mã Caesar
-
Thực hành tổng hợp 1: Nén chuỗi ký tự liên tiếp (Run-Length Encoding)
-
Thực hành tổng hợp 2: Đảo ngược thứ tự các từ trong câu
-
Thực hành tổng hợp 3: Kiểm tra độ mạnh mật khẩu theo bộ tiêu chí ký tự
-
Thực hành tổng hợp 4: Thống kê tần suất từ trong đoạn văn kết hợp std::sort
-
Khám phá tương tác: Bộ công cụ xử lý và biến đổi văn bản trực tiếp
-
Sơ đồ tư duy: Hệ thống hoá Ký tự và Chuỗi trong C++
-
Tổng kết Module 6
Module 7. Con trỏ, Bộ nhớ động và Dự án cuối khoá
8 bài học · 50 hoạt động-
Địa chỉ bộ nhớ (&), biến con trỏ (*) và nullptr
-
Đọc code: Lần vết địa chỉ và giá trị qua con trỏ
-
Con trỏ chưa khởi tạo (Wild Pointer) và quy tắc an toàn
-
Tìm lỗi: Con trỏ chưa khởi tạo, lệch kiểu và giải tham chiếu nullptr
-
Thực hành: Hoán đổi hai số thông qua con trỏ kiểm tra nullptr
-
Thực hành: Cập nhật biến mục tiêu an toàn qua con trỏ và nullptr
-
Kiểm tra nhanh: Địa chỉ bộ nhớ, con trỏ và nullptr
-
Con trỏ với const: Đọc từ phải sang trái
-
Theo dõi giá trị qua const int* và int* const
-
Tìm lỗi: Vi phạm quy tắc const trên con trỏ
-
Truyền con trỏ vs Truyền tham chiếu vào hàm
-
Thực hành: Tìm Min/Max với tham số đầu ra tùy chọn
-
Thực hành: Hàm trả về con trỏ chọn phần tử lớn hơn
-
Kiểm tra nhanh: Con trỏ với const và Tham số hàm
-
Con trỏ, Array-to-Pointer Decay và Số học con trỏ
-
Theo dõi số học con trỏ p++, *(a + i) và hiệu q - p
-
Duyệt mảng qua khoảng [begin, end) và Chuỗi kiểu C
-
Tìm lỗi: Vượt biên one-past-the-end, sửa chuỗi hằng và thiếu '\0'
-
Thực hành: Đảo ngược và tìm Max trên khoảng con trỏ [first, last)
-
Thực hành: Kiểm tra Palindrome trên chuỗi kiểu C bằng hai con trỏ
-
Thực hành: Chuyển chữ thường và so sánh chuỗi kiểu C thuần con trỏ
-
Kiểm tra nhanh: Con trỏ, Mảng 1D và Chuỗi kiểu C
-
Stack vs Free Store (Heap): Vòng đời bộ nhớ
-
Cấp phát và giải phóng biến đơn với new / delete
-
Theo dõi biến động new/delete, toán tử -> và safe_delete
-
Tìm lỗi: Trả về địa chỉ Stack, quên khởi tạo và rò rỉ Heap
-
Thực hành: Hàm tạo biến Heap và dọn dẹp qua T*&
-
Thực hành: Quản lý vector động trên Heap với toán tử ->
-
Kiểm tra nhanh: Stack vs Heap và new / delete đơn lẻ
-
Cấp phát và giải phóng mảng động với new[] / delete[]
-
Sao chép sâu và Kỹ thuật thay đổi kích thước mảng động
-
Theo dõi sao chép sâu và mở rộng mảng động
-
Tìm lỗi: Sai delete[], thiếu khởi tạo và gán nông mảng động
-
Thực hành: Thay đổi kích thước mảng động (Dynamic Resize)
-
Thực hành: Ma trận động 2D (int**) và hoán đổi con trỏ hàng
-
Thực hành: Ma trận động 2D làm phẳng trên mảng 1D (r * cols + c)
-
Kiểm tra nhanh: Mảng động, Resize và Ma trận động
-
Bốn lỗi bộ nhớ kinh điển và Quy tắc quản lý sở hữu Heap
-
Tìm lỗi: Memory Leak, Dangling Pointer, Double Free và sai delete[]
-
Thực hành tổng hợp 1: Gộp và lọc mảng động trên Heap
-
Thực hành tổng hợp 2: Mảng chuỗi động tự mở rộng và sắp xếp
-
Thực hành tổng hợp 3: Mảng răng cưa (Jagged Array) bằng int**
-
Thực hành tương tác: Trình quản lý danh sách động không rò rỉ
-
Tổng kết Module 7: Con trỏ và Bộ nhớ động
-
Tổng kết hành trình C++ Cơ bản 2 và Định hướng sang OOP
-
Sơ đồ tư duy toàn khoá: C++ Cơ bản 2
-
Hướng dẫn kiến trúc Dự án cuối khoá trên Mảng động song song
-
Luyện tập tiền dự án: Thao tác đồng bộ trên Mảng động song song
-
Dự án cuối khoá: Hệ thống Quản lý Danh bạ & Điểm Sinh viên trên Mảng Động
-
Bài kiểm tra cuối khoá: C++ Cơ bản 2
Khóa học liên quan
Bootcamp Preparation
Khoá học BootCamp Preparation giúp học viên làm chủ các kiến thức lập trình cơ bản và tư duy giải quyết vấn đề. Hoàn thành khoá học, học viên có đủ ki...
Học cách học - C8
Nếu bạn gặp một bài toán khó, dù cố gắng nhiều mà giải mãi không xong, thì làm thế nào? Câu trả lời phổ biến nhất là cố gắng tìm ra chỗ sai trong lập...
Hoàn thành mọi việc với Kanban
“Tôi bận”, “Tôi không có đủ thời gian” hay “Ước gì một ngày 48 tiếng” gần như đã trở thành những câu cửa miệng trong cuộc sống của chúng ta ngày nay....
Sử dụng Generative AI - Biến AI thành Trợ lý Đắc lực của bạn
Bạn có đang nghe về AI, ChatGPT ở khắp mọi nơi và cảm thấy mình sắp bị bỏ lại phía sau? Bạn lo lắng rằng AI quá phức tạp, chỉ dành cho dân công nghệ, hay đơn giản là không biết bắt đầu từ đâu để ứng dụng vào công việc và cuộc sống? Nếu có, khóa học "GenAI Essential" chính là điểm khởi đầu hoàn hảo dành cho bạn. Khóa học này giới thiệu cho bạn về trí tuệ nhân tạo tạo sinh (GenAI) và giải thích cách thức hoạt động của các mô hình ngôn ngữ lớn và các công cụ AI tạo sinh, như ChatGPT. Khám phá việc sử dụng GenAI một cách hiệu quả cho các nhiệm vụ từ đơn giản tới phức tạp. Các kiến thức và kỹ năng học được có ý nghĩa cho cả hiện tại lẫn đáp ứng các thay đổi trong tương lai. Đây là chiếc chìa khóa để bạn không chỉ hiểu, mà còn tự tin biến AI thành trợ lý đắc lực, một đồng minh sáng tạo, và một lợi thế cạnh tranh thực sự trong kỷ nguyên số.
Prompt Engineering: Khai thác hiệu quả Generative AI
Bạn có đang nghe về AI, ChatGPT ở khắp mọi nơi và cảm thấy mình sắp bị bỏ lại phía sau? Bạn lo lắng rằng AI quá phức tạp, chỉ dành cho dân công nghệ, hay đơn giản là không biết bắt đầu từ đâu để ứng dụng vào công việc và cuộc sống? Nếu có, khóa học "GenAI Essential" chính là điểm khởi đầu hoàn hảo dành cho bạn. Khóa học này giới thiệu cho bạn về trí tuệ nhân tạo tạo sinh (GenAI) và giải thích cách thức hoạt động của các mô hình ngôn ngữ lớn và các công cụ AI tạo sinh, như ChatGPT. Khám phá việc sử dụng GenAI một cách hiệu quả cho các nhiệm vụ từ đơn giản tới phức tạp. Các kiến thức và kỹ năng học được có ý nghĩa cho cả hiện tại lẫn đáp ứng các thay đổi trong tương lai. Đây là chiếc chìa khóa để bạn không chỉ hiểu, mà còn tự tin biến AI thành trợ lý đắc lực, một đồng minh sáng tạo, và một lợi thế cạnh tranh thực sự trong kỷ nguyên số.
Học cách học
Nếu bạn gặp một bài toán khó, dù cố gắng nhiều mà giải mãi không xong, thì làm thế nào? Câu trả lời phổ biến nhất là cố gắng tìm ra chỗ sai trong lập...
Advanced Programming with Java
Module Advanced Programming with Java giúp học viên nắm vững các khái niệm và kỹ thuật cốt lõi trong lập trình, nâng cao tư duy và kỹ năng lập trình....
Lập trình Web với Java
Khóa học Lập trình Web với Java được thiết kế chuyên sâu để xây dựng nền tảng vững chắc nhất cho một Backend Developer. Khóa học giúp học viên làm chủ...
Web Front-end Devlopment with ReactJS
Module Xây dựng ứng dụng Web với ReactJS giúp học viên làm chủ được các kiến thức và kỹ năng lập trình bất đồng bộ, xử lý được các sự kiện, hiệu ứng, giao tiếp được với server. Nội dung về “React JS” giúp bạn tiếp cận với nền tảng công nghệ Front-end hiện đại và phổ biến nhất hiện nay. Kết thúc module, học viên có thể phát triển được các ứng dụng web sử dụng công nghệ JavaScript và thư viện ReactJS. Module "Xây dựng ứng dụng Web với ReactJS" không chỉ giúp học viên làm chủ kỹ thuật Front-end hiện đại nhất mà còn tiên phong cập nhật xu hướng tích hợp Generative AI vào sản phẩm phần mềm. Bên cạnh việc thành thạo kỹ năng lập trình bất đồng bộ, xử lý sự kiện, quản lý state và giao tiếp với server, học viên sẽ được trang bị tư duy sử dụng AI làm đòn bẩy công nghệ. Kết thúc module, học viên có khả năng phát triển các ứng dụng web thông minh, hiệu suất cao, sẵn sàng cho thị trường lao động công nghệ mới.
Git và Github từ căn bản đến nâng cao
Để bắt đầu hành trình trở thành một lập trình viên chuyên nghiệp, việc hiểu và sử dụng thành thạo hai công cụ là Git và GitHub là điều kiện tiên quyết.