Vòng lặp for trong Java

Trong bài này, tôi sẽ hướng dẫn các bạn tìm hiểu về cấu trúc của vòng lặp cuối cùng đó là vòng lặp for. Khác với 2 vòng lặp while và do - while (lặp với số lần chưa xác định trước) thì vòng lặp for là một cấu trúc lặp có số lần lặp được xác định trước. Sau đây chúng ta sẽ đi vào tìm hiểu về cấu trúc lặp này.

1. Cú pháp, cách hoạt động và công dụng vòng lặp for

Công dụng

Vòng lặp for là cấu trúc điều khiển lặp được dùng để thực hiện một lệnh hay một khối lệnh với số lần lặp được xác định trước. Vì vậy, cấu trúc lặp này rất mạnh và có thể sử dụng rất linh động trong nhiều tình huống khi viết chương trình.

Cú pháp

for ([biểu_thức_1]; [biểu_thức_2]; [biểu_thức_3]) {
	// Các lệnh
}
// Lệnh kế tiếp
trong đó:

  • biểu_thức_1 là biểu thức tính ra giá trị khởi đầu cho biến của for.
  • biểu_thức_2 là biểu thức tính ra giá trị điều kiện lặp của for.
  • biểu_thức_3 là bước nhảy của biến sau mỗi lần lặp.
  • Các lệnh là lệnh thực hiện trong thân của vòng lặp for.

Lưu ý: Các biểu thức có thể vắng mặt trong cấu trúc của vòng lặp for nhưng các dấu chấm phẩy vẫn phải có. Mỗi biểu thức trong cấu trúc for có thể là một hoặc nhiều biểu thức đơn. Nếu trong trường hợp một biểu thức có nhiều biểu thức đơn thì các biểu thức đơn được viết cách nhau bởi dấu phẩy (,) và các biểu thức đơn đó được thực hiện từ trái qua phải.

Cách hoạt động

Lưu đồ hoạt động của vòng lặp for như sau:

Quy trình thực hiện trải qua các bước như sau:

Bước 1: Các lệnh ở biểu_thức_1 được thực hiện trước tiên. Trong biểu thức này có thể có nhiều biểu thức đơn và viết ngăn cách nhau bởi dấu phẩy.

Bước 2: Kiểm tra giá trị của biểu_thức_2 (điều kiện lặp). Nếu biểu thức này có giá trị đúng (true) thì chuyển sang Bước 3, ngược lại thì chuyển đến Bước 6.

Bước 3: Lần lượt thực hiện các lệnh trong thân vòng lặp.

Bước 4: Thực hiện các lệnh trong biểu_thức_3. Trong biểu thức này có thể có nhiều biểu thức đơn và viết ngăn cách nhau bởi dấu phẩy.

Bước 5: Quay lại Bước 2.

Bước 6: Thực hiện các lệnh bên ngoài vòng lặp for.

Ví dụ

Ví dụ này sẽ in ra màn hình 5 số nguyên đầu tiên.

public static void main(String[] args) {

		for (int i = 1; i <= 5; i++) {
			System.out.println(i);
		}
	}
Kết quả sau khi biên dịch chương trình:

Giải thích hoạt động của chương trình trên.

Bước 1: Khởi tạo biến i = 1 và vì 1 < 5 nên thực hiện câu lệnh bên trong for (hiển thị số 1 ra màn hình).

Bước 2: Tăng i lên 1 đơn vị, lúc này i = 2 < 5 nên hiển thị số 2 ra màn hình.

Bước 3: Tăng i lên 1 đơn vị, lúc này i = 3 < 5 nên hiển thị số 3 ra màn hình

Bước 4: Tăng i lên 1 đơn vị, lúc này i = 4 < 5 nên hiển thị số 4 ra màn hình.

Bước 5: Tăng i lên 1 đơn vị, lúc này i = 5 = 5 nên hiển thị số 5 ra màn hình.

Bước 6: Tăng i lên 1 đơn vị, lúc này i = 6 > 5 nên không thực hiện câu lệnh bên trong for. Chương trình kết thúc.

2. Các dạng thường gặp của vòng lặp for

Dạng 1: Vòng lặp for không có biểu_thức_1biểu_thức_3 (ý nghĩa giống vòng lặp while).

int sum = 0, k = 1;
for (; sum < 100; ) {
	sum += k;
	k++;
}
Dạng 2: Vòng lặp for không có biểu_thức_1.

int sum = 0, k = 1;
for (; sum < 100; k++) {
	sum += k;
}
Dạng 3: Vòng lặp for vắng mặt cả 3 biểu thức, khi đó thân của vòng lặp sẽ được thực hiện liên tục. Lúc đó, trong thân của vòng lặp phải có lệnh để thoát ra ngoài vòng for (chi tiết về phần này tôi sẽ giới thiệu trong bài sau).

for (;;) {
	// các lệnh
	// lưu ý: phải có lệnh để thoát ra ngoài vòng lặp
}

Dạng 4: Vòng lặp for đầy đủ.

int sum = 0, k;
for (k = 1; sum < 100; k++) {
	sum += k;
}

Dạng 5: Vòng lặp for đầy đủ và biểu_thức_1 có 2 biểu thức đơn.

int sum, k;
for (sum = 0, k = 1; sum < 100; k++) {
	sum += k;
}

Dạng 6: Vòng lặp for lồng nhau.

for (int row = 1; row <= 2; row++) {
	for (int col = 1; col <= 2; col++) {
		System.out.println(row + ", " + col);
	}
}

3. Ví dụ vòng lặp for

Vòng lặp for không có biểu_thức_1biểu_thức_3

package vong_lap_for;

public class InCacSoNhoHon3 {

	public static void main(String[] args) {
		int number = 0;
		
		/*
		 * Trong trường hợp biến number còn nhỏ hơn 3
		 * thì in ra giá trị của biến và sau đó tăng lên 1.
		 */
		for (; number <3; ) {
			System.out.println(number);
			number++;
		}
	}

}
Kết quả sau khi biên dịch chương trình:

Vòng lặp for có biểu_thức_1biểu_thức_3 có 2 biểu thức đơn

package vong_lap_do_while;

import java.util.Scanner;

public class HienThiHaiSoKhacNhau {

	public static void main(String[] args) {
		int number1, number2;
		Scanner scanner = new Scanner(System.in);
		
		/*
		 * Khởi tạo biến number1 = 0 và number2 = number1 + 3.
		 * Nếu number2 còn nhỏ hơn 8 thì hiển thị biến number1 và number2
		 * Tăng biến number1 và number2 lên 1 và tiếp tục kiểm tra.
		 */
		for (number1 = 0, number2 = number1 + 3; number2 < 8; number1++, number2++) {
			System.out.println(number1 + ", " + number2);
		}
	}

}
Kết quả sau khi biên dịch chương trình:

Vòng lặp for lồng nhau

package vong_lap_do_while;

import java.util.Scanner;

public class HienThiHaiSoKhacNhau {

	public static void main(String[] args) {
		int number1, number2;
		Scanner scanner = new Scanner(System.in);
		
		// Vòng lặp for bên ngoài thực thi 3 lần với row = 1, 2, 3.
		for (number1 = 1; number1 <= 3; number1++) {
			// Mỗi lần lặp for bên ngoài 
			// thì vòng lặp for trong sẽ thực thi 2 lần với col = 1, 2.
			for (number2 = 1; number2 <= 2; number2++) {
				System.out.println("number1 = " + number1 + ", number2 = " + number2);
			}
		}
	}
}

Kết quả sau khi biên dịch chương trình:

Giải thích hoạt động của chương trình trên:

Bước 1: Vòng lặp for bên ngoài khởi tạo biến number1 =  1 và vì 1 < 3 nên chuyển sang Bước 2.

Bước 2: Vòng lặp for bên trong khởi tạo biến number2 = 1 và vì 1 < 2 nên sẽ hiển thị dòng number1 = 1, number2 = 1 ra màn hình.

Bước 3: Thực hiện biểu thức number2++, lúc này number2 = 2 và vì 2 = 2 nên sẽ hiển thị dòng number1 = 1, number2 = 2 ra màn hình.

Bước 4: Quay lại vòng lặp for bên ngoài thực hiện biểu thức number1++, lúc này biến number1 = 2 và vì 2 < 3 nên chuyển sang Bước 5.

Bước 5: Vòng lặp for bên trong khởi tạo biến number2 = 1 và vì 1 < 2 nên sẽ hiển thị dòng number1 = 2, number2 = 1 ra màn hình.

Bước 6: Thực hiện biểu thức number2++, lúc này number2 = 2 và vì 2 = 2 nên sẽ hiển thị dòng number1 = 2, number2 = 2 ra màn hình.

Bước 7: Quay lại vòng lặp for bên ngoài thực hiện biểu thức number1++, lúc này biến number1 = 3 và vì 3 = 3 nên chuyển sang Bước 8.

Bước 8: Vòng lặp for bên trong khởi tạo biến number2 = 1 và vì 1 < 2 nên sẽ hiển thị dòng number1 = 3, number2 = 1 ra màn hình.

Bước 9: Thực hiện biểu thức number2++, lúc này number2 = 2 và vì 2 = 2 nên sẽ hiển thị dòng number1 = 3, number2 = 2 ra màn hình.

Bước 10: Quay lại vòng lặp for bên ngoài thực hiện biểu thức number1++, lúc này biến number1 = 4 và vì 4 > 3 nên kết thúc vòng lặp.

4. Lời kết

Đây là bài vòng lặp cuối cùng trong Java - vòng lặp for. Sang bài sau, tôi sẽ giới thiệu đến các bạn các từ khóa break continue dùng để thoát khỏi vòng lặp. Các bạn cố gắng nắm chắc chương này vì đây là một phần kiến thức rất quan trọng được sử dụng trong hầu hết các chương trình Java. Cuối bài này, tôi sẽ đưa ra các bài tập để các bạn luyện tập, các bạn theo dõi nhé!

GIẢM GIÁ CUỐI TUẦN

Nhân dịp sinh nhật Cường ngày 18/08, mình giảm giá cực mạnh các khóa học fedu đến hết tuần này, các bạn tranh thủ nhé :)

Nguồn: freetuts.net

TỰ TẠO COMBO ĐỂ TIẾT KIỆM CHI PHÍ

Nếu bạn muốn tự tạo combo theo ý mình thì hãy sử dụng chức năng dưới đây, nó cho phép bạn chọn bất kì khóa học nào và cuối cùng là nhấn vào nút tạo combo, nếu mua càng nhiều thì chi phí càng rẻ.

Lập trình Backend

Lập trình Frontend

Thiết kế - Đồ họa