Dưới đây là giáo trình học lập trình về vòng lặp while và for với các ví dụ thực tế dựa trên văn hóa Việt Nam, giúp các bạn dễ hình dung và áp dụng.


Giáo Trình Học Vòng Lặp While và For

Mục tiêu Bài học

Sau bài học này, bạn sẽ:

  • Hiểu rõ khái niệm và mục đích sử dụng của vòng lặp trong lập trình.
  • Nắm vững cú pháp và cách hoạt động của vòng lặp while.
  • Nắm vững cú pháp và cách hoạt động của vòng lặp for.
  • Phân biệt được sự khác nhau giữa vòng lặp while và for và biết khi nào nên sử dụng loại nào.
  • Áp dụng vòng lặp để giải quyết các vấn đề thực tế, đặc biệt là các ví dụ gần gũi với văn hóa Việt Nam.

1. Vòng lặp là gì?

Trong lập trình, vòng lặp (loop) là một cấu trúc điều khiển cho phép bạn thực hiện một khối lệnh (hoặc một đoạn mã) lặp đi lặp lại nhiều lần cho đến khi một điều kiện nào đó không còn đúng nữa. Vòng lặp giúp bạn tiết kiệm thời gian và công sức khi cần thực hiện các tác vụ lặp lại mà không phải viết lại cùng một đoạn mã.

Hãy hình dung việc đếm số lượng bánh chưng trong một nồi lớn, hay việc bạn phải liên tục làm đi làm lại một công việc nào đó cho đến khi hoàn thành. Đó chính là ý tưởng cơ bản của vòng lặp.


2. Vòng lặp while

Vòng lặp while (trong khi) được sử dụng khi bạn muốn thực hiện một khối lệnh miễn là một điều kiện còn đúng. Bạn không biết trước chính xác số lần lặp, mà nó sẽ lặp cho đến khi điều kiện trở thành False.

Cú pháp cơ bản

Python

Ví dụ 1: Nấu nồi bánh chưng

Hãy tưởng tượng bạn đang nấu một nồi bánh chưng lớn. Bạn cần đun liên tục trong 8 giờ.

Python

Giải thích:

  • thoi_gian_da_nau < thoi_gian_can_nau: Đây là điều kiện của vòng lặp. Vòng lặp sẽ tiếp tục chạy miễn là thời gian đã nấu chưa đạt 8 giờ.
  • thoi_gian_da_nau += 1: Đây là lệnh quan trọng giúp thay đổi điều kiện. Nếu không có lệnh này, thoi_gian_da_nau sẽ không bao giờ tăng, và vòng lặp sẽ chạy mãi mãi (vòng lặp vô hạn), khiến chương trình bị treo.

Ví dụ 2: Hái hết quả bưởi trong vườn

Bạn có một cây bưởi trĩu quả và muốn hái cho đến khi không còn quả nào trên cây nữa.

Python

Giải thích:

  • Vòng lặp tiếp tục chạy miễn là so_qua_buoi_tren_cay lớn hơn 0.
  • Mỗi lần lặp, bạn "hái" đi một quả (so_qua_buoi_tren_cay -= 1) làm cho điều kiện ngày càng tiến gần đến False.



3. Vòng lặp for

Vòng lặp for (cho) được sử dụng khi bạn muốn thực hiện một khối lệnh một số lần lặp xác định hoặc duyệt qua từng phần tử trong một tập hợp (như danh sách, chuỗi, dải số).

Cú pháp cơ bản

Python

Hàm range():

  • range(n): Tạo ra một chuỗi số từ 0 đến n-1. (Ví dụ: range(5) sẽ cho 0, 1, 2, 3, 4)
  • range(bat_dau, ket_thuc): Tạo chuỗi số từ bat_dau đến ket_thuc-1.
  • range(bat_dau, ket_thuc, buoc_nhay): Tạo chuỗi số với bước nhảy xác định.

Ví dụ 1: Đếm số lượng món ăn trong mâm cỗ Tết

Bạn có một mâm cỗ Tết với các món ăn đã chuẩn bị sẵn. Bạn muốn liệt kê từng món.

Python

Giải thích:

  • Vòng lặp for sẽ duyệt qua từng mon_an trong danh sách mam_co_tet.
  • Mỗi lần lặp, mon_an sẽ nhận giá trị của phần tử tiếp theo trong danh sách và khối lệnh bên trong sẽ được thực hiện.

Ví dụ 2: Rắc muối trên xôi gấc

Bạn muốn rắc muối vừng lên đĩa xôi gấc 5 lần để đảm bảo đều và vừa ăn.

Python

Giải thích:

  • for lan_rac in range(so_lan_rac_muoi): Vòng lặp sẽ chạy 5 lần (từ lan_rac = 0 đến lan_rac = 4).
  • Chúng ta in lan_rac + 1 để hiển thị số lần rắc bắt đầu từ 1 thay vì 0.

Ví dụ 3: Đếm số lượng học sinh xếp hàng chào cờ

Bạn muốn biết số lượng học sinh đang xếp hàng chào cờ, mỗi bạn là một "phần tử" trong hàng.

Python

Giải thích:

  • range(1, so_hoc_sinh + 1): Hàm range được sử dụng để tạo ra một chuỗi số từ 1 đến so_hoc_sinh. Điều này rất tiện lợi khi bạn biết chính xác số lần bạn muốn lặp.



4. So sánh vòng lặp while và for

Đặc điểmVòng lặp whileVòng lặp for
Khi sử dụngKhi không biết trước số lần lặp cụ thể.Khi biết trước số lần lặp hoặc muốn duyệt qua một tập hợp.
Điều kiện dừngDựa vào một điều kiện Boolean (True/False).Dựa vào việc duyệt hết các phần tử hoặc đạt số lần lặp.
Kiểm soát lặpCần đảm bảo có thay đổi biến điều kiện bên trong vòng lặp.Tự động tăng biến đếm hoặc duyệt qua phần tử tiếp theo.
Ví dụChờ đợi nước sôi, tìm kiếm một giá trị.Duyệt danh sách, thực hiện tác vụ N lần.

Nên chọn loại nào?

  • Sử dụng while khi bạn cần lặp cho đến khi một điều kiện nào đó không còn đúng (ví dụ: "tiếp tục nhập dữ liệu cho đến khi người dùng nhập 'thoát'", "tiếp tục di chuyển đến khi đến đích").
  • Sử dụng for khi bạn có một tập hợp các mục để xử lý hoặc bạn biết chính xác số lần bạn muốn lặp (ví dụ: "xử lý từng mục trong danh sách", "lặp 10 lần để tạo 10 bản sao").

Bài tập Thực hành (Dựa trên văn hóa Việt Nam)

Hãy thử viết chương trình cho các tình huống sau:

  1. Đếm pháo hoa đêm giao thừa (for): Viết một chương trình sử dụng vòng lặp for để mô phỏng việc đếm ngược 5 giây trước khi pháo hoa bắn lên vào đêm giao thừa. Sau mỗi giây, in ra "Còn X giây...". Khi kết thúc, in "Bắn pháo hoa!!!".

  2. Đong gạo nấu cơm (while): Bạn đang đong gạo để nấu cơm. Cần đong đủ 3 bát gạo. Mỗi lần đong được 1 bát. Viết chương trình sử dụng vòng lặp while để mô phỏng quá trình này. In ra số bát gạo đã đong sau mỗi lần lặp.

  3. Hái rau muống (while hoặc for): Trong vườn có 20 ngọn rau muống cần hái. Mỗi lần bạn hái được 1 ngọn.

    • Sử dụng vòng lặp for để mô phỏng quá trình hái từng ngọn.
    • Sau đó, thử sử dụng vòng lặp while để làm tương tự. So sánh hai cách làm.
  4. Kiểm tra vé số (while): Bạn đang kiểm tra các tờ vé số cho đến khi tìm thấy một tờ trúng giải (giả sử có 5 tờ vé số, và tờ thứ 3 là tờ trúng). Viết chương trình sử dụng vòng lặp while để kiểm tra từng tờ. Khi tìm thấy tờ trúng, dừng lại và thông báo.