Trong 02 bài viết trước mình đã giới thiệu vòng lặp while và do…while, cả 02 vòng lặp này có một điểm chung là thường được sử dụng khi chưa biết trước số lần lặp. Bài viết này, mình sẽ giới thiệu tới bạn một vòng lặp nữa, đó là vòng lặp for. Đây là vòng lặp thường hay được sử dụng nếu biết trước số lần lặp.
Vòng lặp for
Vòng lặp for là gì?
Vòng lặp for cũng tương tự như while hoặc do…while ở chỗ đều có khả năng lặp thực hiện một khối lệnh nào đó nhiều lần. Nhưng vòng lặp for lại được ưa dùng trong trường hợp biết trước hoặc xác định được số lần lặp.
Sơ đồ hoạt động của vòng lặp for
Về sơ đồ hoạt động thì bạn sẽ thấy rằng vòng lặp for có cách thức lặp gần giống như while:Nhìn sơ đồ trên nếu tinh ý, bạn sẽ thấy gần tương đồng với sơ đồ hoạt động của vòng lặp while. Điều đó cho thấy cách thức hoạt động của vòng lặp for cũng gần giống như while. Vì vậy cũng có thể xem for là một trường hợp đặc biệt của vòng lặp while. Thứ tự hoạt động của vòng lặp for như sau:
- Bước 1: Tạo và khởi gán giá trị bạn đầu cho biến điều khiển. Biến này có vai trò điều khiển, kiểm soát, đếm số lần lặp của vòng lặp for.
- Bước 2: Kiểm tra điều kiện lặp. Thông thường việc kiểm tra này là kiểm tra giá trị của biến điều khiển tại bước 1.
- Nếu điều kiện lặp là đúng (true) thì chương trình sẽ thực hiện khối lệnh trong vòng lặp for. Sau cùng là cập nhật giá trị cho biến điều khiển (tăng hoặc giảm tuỳ trường hợp bài toán).
- Nếu điều kiện lặp là sai (false) thì chương trình sẽ thoát khỏi vòng lặp.
Cú pháp vòng lặp for
Cú pháp vòng lặp for gồm 03 phần (03 biểu thức) và phần thân chứa khối lệnh lặp.
- [khởi gán] : Khởi gán giá trị ban đầu cho biến điều khiển vòng lặp.
- [điều kiện lặp] : Kiểm tra điều kiện lặp trước khi thực hiện vòng lặp.
- [cập nhật] : Cũng là phép gán, nhưng được dùng để cập nhật giá trị của biến điều khiển vòng lặp (tăng hoặc giảm chỉ số lặp).
Bất kỳ biểu thức nào trong 3 biểu thức nói trên đều có thể vắng mặt, thâm chí vắng mặt cả 3 biểu thức mà không sai cú pháp. Tuy nhiên bạn vẫn phải giữ nguyên dấu chấm phẩy “;” ngăn cách giữa 3 biểu thức.
Ví dụ minh hoạ
Để làm quen với vòng lặp for, mình sẽ đưa ra một số ví dụ cơ bản cho nhiều trường hợp. Bạn hãy cùng làm và suy ngẫm để hiểu rõ hơn về vòng lặp for nhé.
Ví dụ 1: Vòng lặp for cơ bản
Ví dụ này là ví dụ cơ bản nhất để minh hoạ cho bạn cách thức quản lý vòng lặp for. Trong ví dụ này, chúng ta sẽ viết chương trình để in các giá trị từ 0 đến 99. Chương trình được viết như sau:
Chương trình này không quá khó để hiểu phải không nào. Bạn hãy thử cài đặt lại chương trình trên và chạy thử để xem kết quả như thế nào nhé.
Ví dụ 2: Vòng lặp for ngược
Thông thường vòng lặp for sẽ đều được sử dụng như trong ví dụ 1, đó là trường hợp “chạy xuôi”. Có nghĩa là biến điều khiển i được gán tăng sau mỗi lần lặp. Tuy nhiên, có một số bài toán đặc thù, bạn sẽ cần “chạy ngược” vòng lặp for. Nhân ví dụ này, mình sẽ hướng dẫn cách “chạy ngược” vòng lặp for luôn nhé.
Chương trình trên chỉ đơn giản là in các số từ 99 về 0. Bạn để ý biến điều khiển i nhé, được thiết lập giảm dần sau mỗi lần lặp. Chỉ cần thay đổi cách viết một chút thôi nhưng bạn đã nhận được kết quả khác hơn rồi phải không nào. Đây chính là vòng lặp for “chạy ngược”.
Ví dụ 3: for và while
Trong phần sơ đồ hoạt động, mình đã viết rằng “for là một trường hợp đặc biệt của vòng lặp while“. Quả thật là vậy, bất kỳ trường hợp nào sử dụng vòng lặp for thì bạn cũng có thể viết lại bằng vòng lặp while. Ví dụ như sau:
Bạn thấy không, cùng một bài toán nhưng đều có thể sử dụng for hoặc while. Trong trường hợp này thì vòng lặp while vẫn giải quyết được bài toán, nhưng cách viết dài dòng hơn so với for. Sẽ không có vòng lặp nào hay hơn hoặc tốt hơn, tuỳ từng sở thích mà sử dụng thôi nhé.
Ví dụ 4: Vòng lặp for nhiều biểu thức
Vòng lặp for có một điểm đặc biệt nữa, đó là cho phép bạn khai báo nhiều biểu thức. Bạn có thể thấy cấu trúc for có 03 thành phần được ngăn cách bởi dấu “;” và đây chính là nơi để bạn có thể chèn thêm nhiều biểu thức khác nếu muốn. Nhưng mỗi một biểu thức chèn thêm sẽ được ngăn cách bởi dấu phẩy “,“. Ví dụ:
Ví dụ trên chỉ đơn giản là khởi tạo 02 biến i và j trong thành phần khởi gán của vòng lặp for. Đồng thời tăng i và giảm j trong thành phần cập nhật, vòng lặp sẽ dừng khi i và j bằng nhau. Ví dụ này chỉ đơn thuần minh hoạ cho bạn thấy cách thức sử dụng nhiều biểu thức trong for mà thôi. Bạn hãy chạy thử để xem kết quả như thế nào nhé.
Ví dụ 5: Vòng lặp for khuyết
Trong cú pháp vòng lặp for, mình đã đề cập đến việc có thể vắng mặt các biểu thức. Để hiểu rõ hơn cách sử dụng, chúng ta hãy cũng làm ví dụ sau nhé.
Chắc bạn thấy ví dụ này quen phải không nào? Đây là ví dụ chúng ta đã cùng làm trong bài học về vòng lặp while. Bạn có thể thấy rằng, dù khuyết biểu thức khởi tạo và biểu thức cập nhật, nhưng vẫn phải giữ nguyên dấu chấm phẩy “;” ngăn cách giữa các biểu thức.
Ví dụ này minh hoạ cách sử dụng một vòng lặp for khuyết mà thôi. Vì tất nhiên là với ví dụ này, bạn có thể viết bằng vòng lặp for thông thường với đầy đủ các biểu thức.
Tổng kết
Đây là vòng lặp cuối cùng trong các vòng lặp của C++ mà mình muốn trình bày tới bạn. Hy vọng rằng bài viết này sẽ giúp bạn hiểu được cách thức sử dụng vòng lặp for. Đây là một vòng lặp rất được ưa dùng vì cú pháp khá gọn. Tuy nhiêm, việc sử dụng vòng lặp nào trong lập trình sẽ tuỳ thuộc vào từng bài toàn và thói quen của từng người.