Nhập môn Tư duy Lập trình/Tổng kết module — bạn đã có một quy trình lặp lại được
24/31
Bài 24 / 31~9 phútTừ đề bài tới thuật toánMiễn phí lượt xem

Tổng kết module — bạn đã có một quy trình lặp lại được

Bóc đề, giải tay, vẽ lưu đồ, phân rã, đặt tên hàm, soi ca biên. Nhìn lại bảy bài, và tự chấm trước khi sang module cuối: chuyện gì xảy ra khi code sai.

TL;DR: Module này không thêm cấu trúc nào vào cỗ máy trong đầu bạn — nó thêm một thứ tự thao tác để đi từ đề tiếng Việt tới lời giải. Sáu khâu: bóc ba ô vào–xử lý–ra, giải tay ba ca để quy luật lộ ra, ghi bằng lưu đồ bốn ký hiệu, phân rã tới mức mỗi bước gõ được ngay, đặt tên cho nhóm bước xứng đáng có tên, rồi soi năm ca biên. Điểm chung của mọi lỗi trong module: chúng nằm ở chỗ bạn bỏ qua một khâu, không phải ở chỗ bạn gõ sai cú pháp. Đây là trang để bookmark và tự chấm trước khi sang module cuối.

1. Đã đi qua những gì

Bảy bài vừa rồi không phải bảy mẹo rời nhau. Chúng là một vòng, và vòng đó khép lại được:

Sơ đồ vòng: sáu hộp xếp hai cột ba hàng, hàng trên là bóc ba ô vào gì ra gì ràng buộc gì nối sang giải tay ba ca để quy luật tự lộ ra, hàng giữa là vẽ lưu đồ bốn ký hiệu không tự chế thêm nối sang phân rã tới mức mỗi bước gõ được ngay, hàng dưới hai hộp nhấn màu xanh là đặt tên cho nhóm bước gọi được bằng một động từ nối sang soi ca biên rỗng một phần tử số 0 số âm trùng; dưới cùng là hộp xanh lá ghi gãy ở ca biên nào thì quay lại bước một sửa ô ràng buộc, có một mũi tên chạy vòng bên phải quay ngược lên hộp đầu tiên, và một mũi tên mờ đi xuống hộp module sau khi code sai ba loại lỗi và cách chẩn đoán

Cạnh quay lui bên phải là phần nhiều người bỏ sót. Soi ca biên mà thấy lời giải gãy thì bạn không vá tạm ở chỗ gãy — bạn quay về ô ràng buộc ở khâu một và sửa ở đó, vì gãy ở ca biên gần như luôn có nghĩa là ô VÀO của bạn viết thiếu.

2. 🗺️ Cheat sheet — sáu khâu dán lên tường

KhâuLàm gìBiết là xong khi
① Bóc đềviết ba ô VÀO / XỬ LÝ / RAô VÀO có đủ kiểuràng buộc của từng dữ liệu; ô RA là đúng một kết quả cụ thể
② Giải taytự tính đáp án bằng giấy cho ba caba ca trả lời ba câu hỏi khác nhau, và bạn phát biểu được quy luật thành một câu
③ Ghi bằng lưu đồvẽ bằng bầu dục, bình hành, chữ nhật, thoimỗi hình thoi có đủ hai cạnh đi ra, kể cả cạnh chỉ để thoát
④ Phân rãchia bước còn mơ hồ xuống tầng dướimỗi bước gõ thành một lệnh Python được ngay, không phải "gần được"
⑤ Đặt têngói nhóm bước thành hàmnhóm đó gọi tên được bằng một động từ; tham số là ô VÀO, return là ô RA
⑥ Soi ca biênthử rỗng, một phần tử, 0, âm, trùngmỗi ca bạn nói được nó chạy đúng hay gãy, và gãy ở dòng nào

Bốn ký hiệu của khâu ③, không có hình thứ năm: bầu dục mở và đóng · bình hành vào và ra · chữ nhật tính và gán · thoi hỏi một câu đúng/sai.

3. 📖 Từ vựng module

TừNghĩa trong module này
I-P-O (vào – xử lý – ra)khung ba ô để bóc một đề; cũng chính là khung của một hàm ở quy mô nhỏ
Ràng buộcđiều kiện dữ liệu vào phải thoả (từ 0 tới 10, có thể rỗng) — có ràng buộc đề nói thẳng, có ràng buộc bạn phải tự suy ra và ghi thành giả định
Giải taytự tính đáp án bằng giấy bút cho một ca cụ thể, xong hẳn trước khi gõ code
Lưu đồ có cấu trúcký pháp bốn ký hiệu ghi lời giải, không phụ thuộc ngôn ngữ nào
Cạnh quay luimũi tên đi ngược lên trên trong lưu đồ — chính là vòng lặp
Phân rãchia một bước lớn thành các bước nhỏ hơn, dừng khi mỗi bước gõ được ngay
Tham sốô nhớ mới do lời gọi hàm tạo ra, độc lập với biến bên ngoài
Ca biêngiá trị nằm ở rìa vùng hợp lệ — nơi lời giải chạy đúng với ca thường vẫn gãy

4. ⚠️ Sáu lỗi im lặng của module

Không lỗi nào trong sáu lỗi này làm chương trình báo lỗi. Chúng chỉ làm kết quả sai.

  1. Ô VÀO chỉ ghi tên dữ liệu. "Một danh sách" thay vì "một danh sách số, mỗi số từ 0 tới 10, có thể rỗng" — và ba ca biên ở bài 6 chui lọt qua đúng khe hở đó.
  2. Bỏ khâu giải tay. Với đề "đếm bạn trên trung bình", ca 8, 8 cho ra 0 bạn; ai không cầm bút giải sẽ viết lời giải trả lời sai đúng ca đó.
  3. Hình thoi nhiều hơn hai cạnh. if/elif/else là một chuỗi hình thoi nối tiếp nhau, không phải một hình thoi ba nhánh — vẽ sai chỗ này thì code viết ra cũng sai cấu trúc.
  4. Chia quá tay hoặc chia lệch tầng. Bản phân rã thành ra một bản chép code, hoặc một nhánh chi tiết tới lệnh còn nhánh kia vẫn là ý tưởng.
  5. Quên return. Hàm âm thầm trả về None; chương trình chạy trơn tru, giá trị dùng lại thì sai.
  6. Khởi tạo mốc bằng hằng số 0. cao_nhat = 0 thay vì lấy một phần tử thật của dữ liệu — đúng với mọi ca dương, sai câm với dữ liệu âm.

✅ Self-assessment

Tick được cả sáu ý dưới thì bạn sẵn sàng qua module cuối. Ô nào còn ngập ngừng, đọc lại đúng chỗ được gợi ý ngay dưới nó rồi quay lại tick.

  • Tôi bóc được một đề văn xuôi thành ba ô vào–xử lý–ra: ô vào ghi đủ kiểu lẫn ràng buộc của từng dữ liệu, ô ra nêu đúng một kết quả.
    • Nếu chưa chắc: đọc lại bài 01 mục 3 và tự bóc lại đề ở mục 5.
  • Tôi giải tay ba ca cụ thể trước khi viết bước, và rút được quy luật chung từ ba ca đó.
    • Nếu chưa chắc: đọc lại bài 02 mục 5 và 6, rồi làm lại đề ở mục 7.
  • Tôi kể được bốn ký hiệu của lưu đồ có cấu trúc, và nói được hai chỗ lưu đồ bất lực.
    • Nếu chưa chắc: đọc lại bài 03 mục 2 và mục 6.
  • Tôi phân rã được một đề nhiều bước bằng lưu đồ, tới mức mỗi bước gõ được ngay.
    • Nếu chưa chắc: đọc lại bài 04 mục 2 và 3, rồi làm lại đề ở mục 5.
  • Tôi chọn được ranh giới hàm cho một lời giải đã phân rã — tham số nào vào, giá trị nào ra — theo tiêu chí nhóm bước đó có gọi tên được bằng một động từ hay không.
    • Nếu chưa chắc: đọc lại bài 05 mục 3 và làm lại bài chọn ranh giới ở mục 6.
  • Tôi chỉ ra được chỗ lời giải gãy ở năm ca biên: rỗng, một phần tử, số 0, số âm, giá trị trùng.
    • Nếu chưa chắc: đọc lại bài 06 mục 3 và 4, rồi làm lại bài ở mục 5.

Còn một phép thử thật hơn cả sáu ô trên: quay lại bài 07 sau vài ngày, che phần đối chiếu, và chạy lại trọn sáu khâu trên chính đề đó. Làm được lần thứ hai khi đã quên chi tiết mới là dấu hiệu bạn nắm quy trình, chứ không phải nhớ đáp án.

5. 🚀 Sắp tới

Module cuối — Khi code sai — là module chống bỏ cuộc.

Bạn vừa có một quy trình để viết ra lời giải đúng. Nhưng lần đầu gõ ra code, nó sẽ sai. Không phải vì bạn học chưa kỹ — code sai là trạng thái mặc định của mọi người viết chương trình, kể cả người viết hai mươi năm. Cái phân biệt không phải là ai ít sai hơn, mà là ai chẩn đoán nhanh hơn: ba loại lỗi cần ba cách soi khác nhau, thông báo lỗi chỉ chỗ báo chứ thường không chỉ chỗ gây, và cách thoát kẹt là đặt giả thuyết rồi kiểm chứng, không phải sửa mò.

Bắt đầu ở Tổng quan module — khi code sai. Và trước khi sang, thứ đáng làm nhất là cầm một đề bất kỳ bạn tự nghĩ ra — tính tiền điện theo bậc, đếm ngày công trong tháng — và chạy trọn sáu khâu lên nó. Quy trình này chỉ thành của bạn khi bạn dùng nó lên một đề không ai giao.

6. 📚 Đọc thêm

📚 Tài liệu tham chiếu (không bắt buộc)

Bài tiếp theo: Tổng quan module — khi code sai

Bài này đáng gửi cho bạn học cùng?

Copy link đã gắn nguồn — dán group, chat, hoặc LinkedIn.

Bài này có giúp bạn hiểu bản chất không?

Hỏi đáp về bài này

Chưa có câu hỏi

Đặt câu hỏi

Có gì chưa rõ trong bài? Đặt câu hỏi đầu tiên — câu trả lời từ cộng đồng giúp bạn (và người sau).

Đặt câu hỏi đầu tiên

Bài tiếp theo

Tổng quan module — chẩn đoán lỗi và thoát kẹt khi code sai