Nhập môn Tư duy Lập trình/Tổng quan module — rẽ nhánh và lặp
8/31
Bài 8 / 31~8 phútRẽ nhánh & lặpMiễn phí lượt xem

Tổng quan module — rẽ nhánh và lặp

Máy đã biết chạy tuần tự từng dòng. Module này thêm hai việc còn lại: chọn đường đi và làm lại nhiều lần — cùng hai loại lỗi ngốn nhiều giờ nhất của người mới.

TL;DR: Module này thêm hai cấu trúc điều khiển cuối cùng vào cỗ máy bạn dựng ở module trước: rẽ nhánh để chọn đúng một đường trong nhiều đường, và lặp để làm lại một việc tới khi điều kiện hết đúng. Sáu bài đi từ if/elif/else và ba cái bẫy điều kiện kinh điển, qua whilefor, tới vòng lặp lồng nhau và lỗi lệch một đơn vị, rồi kết ở một mini challenge bạn tự trace không có ai điền sẵn hàng nào. Điểm chung của mọi lỗi trong module: chúng không báo lỗi dòng nào, chương trình vẫn chạy, chỉ kết quả là sai.

1. Bạn vừa có gì, và còn thiếu gì

Hết module trước, bạn đã có một cỗ máy trong đầu: nó chạy đúng từng dòng theo thứ tự, giữ giá trị trong những ô nhớ có tên, và bạn tự chạy nó bằng tay được bằng bảng trace.

Nhưng cỗ máy đó mới làm được đúng một kiểu chương trình: chạy thẳng từ dòng đầu tới dòng cuối, không rẽ, không quay lại. Mọi chương trình thật đều cần thêm hai việc nữa. Nó phải chọn đường: nhập sai mật khẩu thì báo lỗi, nhập đúng thì cho vào. Và nó phải làm lại — tính tiền cho một nghìn đơn hàng thì không ai viết một nghìn dòng.

Hai việc đó là toàn bộ nội dung module này.

2. Ba cấu trúc, hết

Điều đáng ngạc nhiên: chỉ có ba cấu trúc điều khiển, và bạn đã học xong một cái rồi.

Bản đồ sáu bài của module xếp thành ba tầng dọc: tầng trên mờ ghi Tuần tự đã có từ module trước, tầng giữa Rẽ nhánh gồm bài 01 điều kiện đúng hoặc sai nối sang bài 02 and or not và ba cái bẫy, tầng dưới Lặp gồm bài 03 while nối sang bài 04 for và danh sách nối sang bài 05 lặp lồng và lệch một đơn vị, cuối cùng đổ xuống ô nhấn bài 06 mini challenge tự trace một vòng lặp lồng

Tuần tự, rẽ nhánh, lặp. Trình duyệt bạn đang mở, game bạn chơi, app ngân hàng bạn chuyển tiền — tất cả chỉ là ba thứ này ghép lại với nhau, nhiều tầng, rất nhiều lần. Không có cấu trúc thứ tư nào đợi bạn ở module sau, và đó là một tin tốt: bạn sắp học nốt phần còn lại của bộ ba.

3. Sáu bài trong module này

  • Bài 1: Rẽ nhánh. Bạn trace được luồng chạy qua if, elif, else, và chỉ ra đúng nhánh nào máy không hề ngó tới.
  • Bài 2: Điều kiện phức hợp. Bạn nhận ra ba lỗi điều kiện kinh điển — trong đó có một lỗi khiến chương trình chạy ngon lành mà kết quả luôn sai, không báo lỗi dòng nào.
  • Bài 3: Vòng lặp while. Bạn đếm đúng số vòng một vòng lặp chạy, và nhận ra ngay từ lúc đọc code khi nào nó sẽ chạy mãi không dừng.
  • Bài 4: for và danh sách. Bạn trace được biến lặp và biến tích luỹ — hai vai khác hẳn nhau mà người mới hay gộp làm một.
  • Bài 5: Lặp lồng nhau. Bạn tính đúng số lần thân trong chạy, và tìm ra chỗ lệch một đơn vị làm vòng lặp thừa hoặc thiếu đúng một vòng.
  • Bài 6: Mini challenge — trace vòng lặp lồng. Không giảng gì thêm: một đoạn code, một tờ giấy, và bạn tự nói đúng nó in ra gì.

Bài cuối — Tổng kết — gom cả sáu bài thành một trang để bạn tự chấm trước khi sang module sau.

4. Học xong module này bạn làm được gì

  • Trace luồng chạy qua if/elif/else và chỉ ra nhánh nào không hề chạy.
  • Diagnose ba lỗi điều kiện kinh điển: viết x == 1 or 2, phủ định sai, và so sánh chuỗi với số.
  • Predict số vòng một vòng lặp while chạy, và nhận ra vòng lặp không bao giờ dừng.
  • Trace biến lặp và biến tích luỹ qua một vòng for trên danh sách.
  • Diagnose lỗi lệch một đơn vị trong vòng lặp, và chỉ ra vòng nào thừa hoặc thiếu.
  • Predict số lần thân trong chạy của một vòng lặp lồng, và giải thích vì sao là n nhân m.

5. Cách học module này hiệu quả

  • Giấy bút vẫn nằm cạnh máy. Bảng trace từ module trước quay lại ngay ở bài 1, và mỗi bài lại thêm cho nó một cột: nhánh nào chạy, vòng thứ mấy, biến tích luỹ tới đâu.
  • Mỗi ô "Thử đoán" trong bài giấu kết quả sau một nút bấm. Viết con số bạn tin ra giấy trước rồi mới bấm — đoán trong đầu rồi gật gù "ừ đúng rồi" là tự lừa mình, và bạn sẽ phát hiện ra điều đó ở bài 6 khi không còn ai đoán hộ.
  • Đọc đúng thứ tự 01 tới 06. Bài 3 dùng lại nguyên khối phép gán của module trước, bài 5 cần cả bài 3 lẫn bài 4.
  • Vẫn không cần cài gì. Mọi output in trong bài là output thật, chép nguyên văn.

Bắt đầu: Bài 1 — Rẽ nhánh.

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

Rẽ nhánh — điều kiện là một biểu thức đúng hoặc sai