Search…

Vòng Lặp For trong C++

06/09/20203 min read
Tìm hiểu về cách thức hoạt động của cấu trúc lặp for trong C++.

Cấu trúc lặp

Khi cần thực hiện một đoạn chương trình nhiều lần liên tiếp, có 2 cách:

  • Copy đoạn chương trình đó cho đủ số lần cần thiết.
  • Sử dụng cấu trúc lặp, viết một lần và sử dụng nhiều lần.

Dễ dàng nhận thấy cách 1 có quá nhiều nhược điểm. Khi đó chương trình sẽ có độ dài “cực khủng”, dẫn đến quá trình build mất nhiều thời gian. Mặt khác, thời gian để sao chép đoạn chương trình đó ra nhiều lần cũng không hề ít. Hơn nữa sau này khi nâng cấp dự án sẽ mất rất nhiều thời gian do chương trình không linh hoạt và khó quản lý. Chưa kể đến trường hợp khi phát hiện ra một đoạn code bị sai, phải sửa thủ công hàng loạt các đoạn code khác.

Do đó, cấu trúc lặp sẽ là giải pháp tối ưu và phù hợp trong trường hợp này. Nguyên tắc của cấu trúc lặp là “Viết một lần và sử dụng nhiều lần”, do đó sẽ khắc phục được những nhược điểm kể trên.

Cấu trúc for

Cấu trúc for trong C/C++ có prototype như sau:

for(Initialization statement; Condition; Update statement)
{
    //Code while condition is true
}

Trong đó:

  • Initialization statement là biểu thức khởi tạo các giá trị ban đầu cho các tham số. Các tham số này dùng để kiểm tra điều kiện trong biểu thức Condition.
  • Condition là biểu thức điều kiện của vòng lặp. Vòng lặp sẽ kết thúc khi biểu thức này trả về giá trị false.
  • Update statement là biểu thức cập nhật giá trị cho các tham số.

Ngoài ra, nếu phần code trong vòng lặp for chỉ có 1 dòng, ta có thể bỏ cặp dấu { }.

Nguyên tắc hoạt động

Bắt đầu với việc khởi tạo giá trị ban đầu cho các biến, quá trình lặp sẽ diễn ra liên tục, cho tới khi biểu thức Condition không còn đúng nữa. Các biến sẽ được cập nhật trong phần Update statement hoặc cả ở trong vòng lặp (nếu có).

Sơ đồ hoạt động của cấu trúc for như sau:

Một số lưu ý

Vòng lặp sẽ kết thúc khi và chỉ khi biểu thức điều kiện trả về giá trị false, do đó cần lưu ý biểu thức Update statement để thu được kết quả mong muốn.

Sau dòng lệnh for không có dấu “;”, nếu có chương trình sẽ báo lỗi hoặc cho kết quả không mong muốn.

Các biến nếu được khai báo trong dòng lệnh for sẽ chỉ có phạm vi sử dụng trong vòng lặp. Cũng giống như các biến được khai báo trong một scope thì chỉ có phạm vi sử dụng trong scope đó.

Các biểu thức Initialization statement, Condition và Update statement có thể có hoặc không, nhưng bắt buộc phải có đủ hai dấu ;. Khi vắng mặt các biểu thức đó thì phải tự định nghĩa chúng để tránh chương trình bị lặp vô hạn. Tuy nhiên, ngoại trừ các trường hợp đặc biệt, nên định nghĩa các biểu thức đó trong dòng lệnh for để tạo tính nhất quán và chuẩn mực chung của các lập trình viên.

Để dừng vòng lặp một cách ép buộc (force exit), ta sử dụng lệnh break. Lệnh này cần được đặt bên trong đoạn code của vòng lặp. Ngoài ra còn có lệnh continue để bỏ qua lần lặp hiện tại và thực hiện lần lặp kế tiếp.

Chương trình minh hoạ:

#include <stdio.h>

int main()
{
	int s1 = 0;
	for (int i = 0; i < 10; i++)	//Full type
		s1 += i;
	printf("%d\n", s1);

	int s2 = 0;
	for (int j = 0;;j++)
	{
		if (j % 2 == 0)
		{
			s2 += j;
		}

		if (j > 20)	//Condition
		{
			break;
		}
	}
	printf("%d\n", s2);

	int s3 = 0;
	int k = 0;		//Initialization
	for (;;)			
	{
		if (k % 3 == 0)
		{
			continue;
		}
		
		if (s3 > 100)	//Condition
		{
			break;
		}

		s3 += k;
		k++;		//Update
	}
	printf("%d\n", s3);

	return 0;
}
IO Stream

IO Stream Co., Ltd

30 Trinh Dinh Thao, Hoa Thanh ward, Tan Phu district, Ho Chi Minh city, Vietnam
+84 28 22 00 11 12
developer@iostream.co

383/1 Quang Trung, ward 10, Go Vap district, Ho Chi Minh city
Business license number: 0311563559 issued by the Department of Planning and Investment of Ho Chi Minh City on February 23, 2012

©IO Stream, 2013 - 2024