Toidicode.com

Toidicode.com

BASIC TO ADVANCE

Bài 8: Vòng lặp trong Java

Phần trước mình đã giới thiệu với mọi người về câu lệnh rẽ nhánh trong Java rồi. Phần này mình sẽ giới thiệu đến mọi người vòng lặp trong Java, cái này cũng được sử dụng rất nhiều trong chương trình.

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

Vòng lặp (tiếng anh là loop) là một thuật ngữ dùng để diễn tả một hành động hay một cụm hành động được lặp đi lặp lại nhiều lần.

VD: Như chúng ta cứ uống nước xong là lại phải đi tiểu và hành động đó cứ xảy ra đến khi chết mới kết thúc :D, hành động này được gọi là vòng lặp.

Trong Java chúng ta có 2 cách chính để tạo ra vòng lặp. Đó chính là sử dụng while, do-whilefor.

2. Vòng lặp while.

Vòng lặp while sẽ thực thi khối lệnh bên trong nó khi khối lệnh điều kiện của while vẫn còn đúng (true).

Cú pháp:

while(dieu_kien) {
    // code
}

Trong đó: dieu_kien là một biểu thức (expression) trả về giá trị true hoặc false. Nếu điều kiện là false thì vòng lặp while sẽ ngừng thực thi.

VD: Sử dụng vòng lặp while, in ra số từ 1 đến 10.

int i = 1;
while (i < 11){
  System.out.println(i);
  i++;
}

Kết quả:

1
2
3
4
5
6
7
8
9
10

Nếu bạn muốn vòng lặp while chạy không bao giờ ngừng (finite loop) thì chỉ cần set giá trị điều kiện của whiletrue.

VD:

while (true){
    // code
}

Bạn cũng có thể lồng các vòng lặp với nhau.

VD:

int i = 1;
while (i <= 10) {
  int j = 1;
  while (j <= 10 - i) {
    System.out.print(j);
    j += 1;
  }
  System.out.println("");
  i += 1;
}

Kết quả:

123456789
12345678
1234567
123456
12345
1234
123
12
1

3. Vòng lặp do-while.

Vòng lặp do-while cũng tương tự như vòng lặp while. Chỉ khác 1 chút về cách thực thi, vòng lặp do-while sẽ thực thi code trong do block rồi mới check đến while. Chính vì điều này mà vòng lặp do-while sẽ luôn luôn thực thi code ít nhất 1 lần dù cho bạn có sét điều kiện của whilefalse.

VD: 

do {
  System.out.println("Da duoc thuc thi");
} while (false);

// Output: Da duoc thuc thi

4. Vòng lặp for.

Vòng lặp for cho phép chúng ta thực thi code với điều kiện thường sẽ là trong một khoảng nào đó.

Cú pháp:

for (initialization; termination; increment) {
    // code
}

Trong đó

  • initialization là biểu thức khởi tạo vòng lặp. Biểu thức này chỉ được thực thi 1 lần, khi bắt đầu vòng lặp.
  • termination là biểu thức kiểm tra điều kiện kết thúc vòng lặp hay tiếp tục lặp. termination sẽ được thực thi sau mỗi lần lặp . termination trả về flase thì vòng lặp sẽ được kết thúc và ngược lại trả về true thì vòng lặp sẽ tiếp tục lặp.
  • increment là biểu thức sẽ được thực thi sau mỗi khi hoàn thành 1 lần lặp.

VD: Mình sẽ in ra số từ 1 đến 10 sử dụng vòng lặp for.

for (int i = 1; i < 11; i++) {
  System.out.println(i);
}

Kết quả:

1
2
3
4
5
6
7
8
9
10

Trong ví dụ trên, mình đã gán giá trị cho i = 1 khi bắt đầu vòng lặp và mình sẽ cho vòng lặp dừng khi giá trị i < 11 (tương ứng với việc giá trị max của i sẽ là 10). Sau mỗi lần lặp mình sẽ tăng giá trị của i lên 1 đơn vị.

Nếu như bạn muốn vòng lặp for lặp vô thời hạn, thì chỉ cần để trống 3 tham số truyền vào for.

VD: Vòng lặp vô tận với for.

for ( ; ; ) {
    // code
}

Ngoài ra, trong Java bạn còn có thể lặp các giá trị như arraycollection với for. Đây là một tính năng giúp chúng ta có thể viết câu lệnh for ngắn gọn và dễ đọc hơn.

Cú pháp:

for (data_type item : list_data) {
    // code
}

Trong đó:

  • data_type là kiểu giá trị của phần tử trong list_data.
  • item là biến sẽ được gán với giá trị của phần tử tương ứng trong list_data.
  • list_data là một array hoặc collection chúng ta cần lặp giá trị.

VD: Mình sẽ khởi tạo một mảng số và lặp từng giá trị bên trong mảng đó với vòng lặp for.

int[] nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

for (int i : nums) {
  System.out.println(i);
}

Kết quả:

1
2
3
4
5
6
7
8
9
10

Bạn cũng có thể lồng các vòng lặp for với nhau.

VD:

int[] nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

for (int i = 1; i < 10; i++) {
  for (int j = 1; j < 10 - i; j++) {
    System.out.print(j);
  }
  System.out.println("");
}

Kết quả:

12345678
1234567
123456
12345
1234
123
12
1

5. Các cách tác động đến vòng lặp.

Thông thường trong một số trường hợp vòng lặp của chúng ta sẽ có thể không cần thực thi tiếp hoặc là cần nhảy sang lần lặp tiếp theo luôn. Và để làm được điều đó thì trong Java có hỗ trợ chúng ta 2 keyword để tác động đến vòng lặp là:

  • break: Giúp chúng ta chấm dứt vòng lặp tại thời điểm nó xuất hiện và các code cùng cấp phía sau nó sẽ không được thực thi nữa.
  • continue: giúp chúng ta nhảy qua lần lặp hiện tại và chuyển đến lần lặp tiếp theo, các code cùng cấp phía sau nó cũng sẽ không được thực hiện.

Để hiểu hơn về 2 keyword này thì các bạn tham khảo 2 ví dụ dưới đây của mình.

VD:

int i = 1;
while (i < 10) {
  System.out.println(i);
  if (i == 5) {
    break;
  }
  i++;
}

// ouput:
// 1
// 2
// 3
// 4
// 5

Trong ví dụ trên mình đã break vòng lặp khi i bằng 5 nên vòng lặp chỉ thực thi đến lần thứ 5 là kết thúc.

VD:

int i = 0;
while (i < 10) {
  i++;
  if (i == 5) {
    continue;
  }
  System.out.println(i);
}

// Output
// 1
// 2
// 3
// 4
// 6
// 7
// 8
// 9
// 10

Trong ví dụ trên mình đã sử dụng continue để nhảy qua lần lặp nếu i bằng 5. Chính vì thế System.out.println(i) sẽ không được thực thi khi i bằng 5

Đăng ký nhận tin.

Chúng tôi chỉ gửi tối đa 2 lần trên 1 tháng. Tuyên bố không spam mail!

Vũ Thanh Tài

About author
The best way to learn is to share
Xem tất cả bài đăng

0 Comments

Bài viết chưa có ai bình luận, hãy là người đầu tiên đi bạn!

Bình luận

Captcha