Java loop - Tìm hiểu tổng quan về Vòng lặp Loop trong Java
10/04/2021 03:24
Vòng lặp trong Java (Java Loop) hoạt động tương tự như cách chúng ta bị phạt chép lại bài tập về nhà. Có nghĩa là vòng lặp này sẽ tập hợp các lệnh và lặp đi lặp lại cho đến khi một điều kiện nhất định được thực hiện. Trong Java, vòng lặp còn được gọi là câu lệnh lặp. Để tìm hiểu sâu hơn về vòng lặp loop trong Java, cùng tìm hiểu ngay qua bài viết dưới đây bạn nhé!
Tìm hiểu về vòng lặp loop trong Java
Tại sao lại cần sử dụng vòng lặp loop trong Java?
Trong khi lập trình, đôi khi chúng ta sẽ gặp trường hợp cần thực thi mã nhiều lần. Nói chung, các câu lệnh này thực thi theo cách tuần tự: câu lệnh đầu tiên trong một hàm thực thi đầu tiên, tiếp theo là câu lệnh thứ hai,.. Tuy vậy, việc lặp đi lặp lại cũng làm cho quá trình trở nên phức tạp cũng như tốn thời gian hơn. Do đó, các ngôn ngữ lập trình cung cấp các cấu trúc điều khiển khác nhau cho phép thực thi các câu lệnh phức tạp như vậy.
Trước khi chuyển sang các loại vòng lặp, trước tiên chúng ta sẽ tìm hiểu về cú pháp chung của một vòng lặp và các phần tử điều khiển một vòng lặp.
Vòng lặp loop trong Java
Trong Java có ba loại vòng lặp là: vòng lặp for, vòng lặp while, vòng lặp do-while. Tất cả ba vòng lặp này thực thi một tập hợp các câu lệnh lặp lại miễn là một điều kiện được chỉ định vẫn đúng. Điều kiện cụ thể này thường được gọi là loop control (điều khiển vòng lặp). Đối với cả ba câu lệnh lặp này, điều kiện true là điều kiện trả về giá trị boolean true và điều kiện false là điều kiện trả về giá trị boolean false.
Các phần tử trong Java Loop
Mỗi vòng lặp đều có các phần tử hoặc biến chi phối việc thực thi của nó. Nói chung, một vòng lặp có bốn phần tử có các mục đích khác nhau:
- (Các) Biểu thức Khởi tạo
- Biểu thức kiểm tra (Điều kiện)
- Cập nhật (các) Biểu thức
- Nội dung của vòng lặp
Chúng ta sẽ thảo luận về từng yếu tố trên để hiểu rõ hơn về hoạt động của các vòng lặp.
Quá trình lặp loop trong Java
>>> Tham khảo: Khóa học lập trình Java
Các biểu thức khởi tạo
Trước khi tham gia vào một vòng lặp, chúng ta phải khởi tạo biến điều khiển của nó. Việc khởi tạo biến điều khiển diễn ra theo biểu thức khởi tạo. Nó khởi tạo (các) biến vòng lặp với giá trị đầu tiên của chúng. Biểu thức khởi tạo chỉ được thực thi một lần khi bắt đầu vòng lặp.
Kiểm tra biểu thức
Biểu thức kiểm tra là một biểu thức có giá trị đúng sai (boolean) quyết định liệu phần thân của vòng lặp có được thực thi hay không. Việc thực hiện hoặc kết thúc vòng lặp phụ thuộc vào biểu thức kiểm tra mà còn được gọi là điều kiện thoát hoặc điều kiện kiểm tra. Nếu biểu thức kiểm tra đánh giá là true, nghĩa là 1, phần thân của vòng lặp được thực thi, ngược lại, vòng lặp bị kết thúc.
Trong vòng lặp kiểm soát lối vào, biểu thức kiểm tra được đánh giá trước khi đi vào vòng lặp trong khi trong vòng lặp kiểm soát lối ra, biểu thức kiểm tra được đánh giá trước khi thoát khỏi vòng lặp. Trong Java, vòng lặp for và vòng lặp while là vòng lặp entry - controlled, và do-while loop là một vòng lặp exit - controlled.
Cập nhập biểu thức
Các biểu thức cập nhật thay đổi giá trị của biến vòng lặp. Việc cập nhập biểu thức được thực hiện ở cuối vòng lặp sau khi thân vòng lặp được thực thi. Ví dụ, một biểu thức cập nhật có thể là câu lệnh tăng hoặc giảm.
Thân vòng lặp
Các câu lệnh thực thi lặp đi lặp lại (miễn là biểu thức kiểm tra khác 0) tạo thành phần thân của vòng lặp. Đoạn mã bên trong thân vòng lặp sẽ được thực thi hay không, phụ thuộc vào giá trị của biểu thức kiểm tra. Nếu giá trị được đánh giá là true thì phần thân của vòng lặp sẽ được thực thi nhiều lần, ngược lại, nó sẽ bị kết thúc.
Sơ đồ dưới đây giải thích vòng lặp/ cấu trúc vòng lặp:
Sơ đồ dưới đây giải thích vòng lặp/ cấu trúc vòng lặp
Các loại vòng lặp trong Java
Trong Java có một số loại vòng lặp cơ bản mà bạn nhất định phải nắm rõ như sau:
Vòng lặp for
Khái niệm vòng lặp for
Vòng lặp for trong Java là một vòng lặp kiểm soát nhập cho phép người dùng để thực hiện một khối của một statement (s) lặp đi lặp lại với một số cố định của thời gian trên cơ sở của biểu thức kiểm tra hoặc kiểm tra điều kiện. Đây là vòng lặp Java dễ hiểu nhất.
Tất cả các phần tử điều khiển vòng lặp của nó được tập hợp tại một nơi, trên đầu vòng lặp trong dấu ngoặc tròn (), trong khi trong các cấu trúc vòng lặp khác của Java, các phần tử vòng lặp nằm rải rác trong chương trình.
Cú pháp hoặc dạng chung của vòng lặp for là:
for(initialization expression(s) ; test-expression ; update-expression(s))
{
body of the loop ;
}
Ví dụ:
int x = 0;
for( x = 1 ; x <= 10 ; x++ )
{
System.out.println(Value of x: “ +x);
}
Code snippet mô tả cách sử dụng vòng lặp/ câu lệnh for:
package com.TechVidvan.loopsDemo;
public class ForLoopDemo
{
public static void main(String args[])
{
int i;
for(i = 10; i >= 1; i--)
{
System.out.println("The value of i is: "+i);
}
}
}
Output
The value of i is: 10
The value of i is: 9
The value of i is: 8
The value of i is: 7
The value of i is: 6
The value of i is: 5
The value of i is: 4
The value of i is: 3
The value of i is: 2
The value of i is: 1
Biến thể vòng lặp for
Java cung cấp một số biến thể trong vòng lặp để tăng tính linh hoạt và khả năng ứng dụng của vòng lặp for . Các biến thể khác nhau của vòng lặp for được thảo luận dưới đây:
1.1.Đa khởi tạo và cập nhật biểu thức
Vòng lặp for có thể chứa nhiều lần khởi tạo và / hoặc cập nhật biểu thức. Nhiều biểu thức này phải được phân tách bằng dấu phẩy. Chúng ta đã thấy một ví dụ về nhiều biểu thức khởi tạo trong chương trình trước. Vòng lặp for của chương trình đó có thể được viết theo cách khác như sau:
for( i = 1, sum = 0 ; i <= 10 ; sum +=i, ++i )
System.out.println(i);
Đoạn mã trên chứa hai biểu thức khởi tạo i = 1 và sum = 0 và hai biểu thức cập nhật sum + = i và ++ i . Đa biểu thức này được thực thi theo trình tự.
1.2. Biểu thức tùy chọn
Trong vòng lặp for, biểu thức khởi tạo, biểu thức kiểm tra và biểu thức cập nhật là tùy chọn, bạn có thể bỏ qua bất kỳ hoặc tất cả các biểu thức này. Ví dụ: giả sử bạn đã khởi tạo các biến vòng lặp và bạn muốn loại bỏ biểu thức khởi tạo thì bạn có thể viết vòng lặp for như sau:
for (; test-expression; update-expression (s))
loop-body
Hãy xem, ngay cả khi bạn bỏ qua biểu thức khởi tạo, dấu chấm phẩy (;) phải theo sau nó.
package com.TechVidvan.loopsDemo;
public class ForLoopDemo
{
public static void main(String args[])
{
int i = 1, sum = 0 ;
for( ; i <= 10 ; sum +=i, ++i )
System.out.println(i);
System.out.println("The sum of first 10 numbers is: " +sum) ;
}
}
Output
1
2
3
4
5
6
7
8
9
10
The sum of first 10 numbers is: 55
1.3. Vòng lặp vô tận
Một vòng lặp vô tận có thể được tạo ra bằng cách bỏ qua biểu thức kiểm tra như dưới đây:
package com.TechVidvan.loopsDemo;
public class ForLoopDemo
{
public static void main(String args[])
{
int x;
for( x = 25 ; ; x-- )
System.out.println(“This is an infinite loop”);
}
}
Kết quả:
This is an infinite loop…
1.4 Vòng lặp rỗng trong Java
Khi không có câu lệnh nào trong phần thân của vòng lặp, thì nó được gọi là vòng lặp rỗng. Trong những trường hợp như vậy, một vòng lặp Java chứa một câu lệnh rỗng nghĩa là một câu lệnh rỗng. Vòng lặp for sau đây là một ví dụ về vòng lặp trống:
for (j = 20; j> = 0; j–); // Xem, phần thân của vòng lặp chứa một câu lệnh null
Vòng lặp for trống có các ứng dụng của nó trong vòng lặp thời gian trễ, nơi bạn cần tăng hoặc giảm giá trị của một số biến mà không cần làm gì khác, chỉ để giới thiệu một số độ trễ.
>>> Đọc thêm: Cú pháp trong Java - Thành thạo cú pháp cơ bản trong Java
1.5 Khai báo biến bên trong vòng lặp
Khi chúng ta khai báo bất kỳ biến nào bên trong vòng lặp for, chúng ta không thể truy cập biến sau khi câu lệnh lặp kết thúc. Lý do là vì biến được khai báo trong một khối câu lệnh, phạm vi của nó sẽ trở thành phần thân của vòng lặp. Do đó, chúng tôi không thể truy cập nó bên ngoài thân vòng lặp.
Ví dụ:
package com.TechVidvan.loopsDemo;
public class ForLoopDemo
{
public static void main(String args[])
{
for(int x = 25 ; x>=0; x -= 5)
{
System.out.println("Inside the loop");
}
System.out.println(x); //Accessing x after the loop body gives an error
}
}
Output
Exception in thread “main” java.lang.Error: Unresolved compilation problem:
x cannot be resolved to a variable
at project1/com.TechVidvan.loopsDemo.ForLoopDemo.main(ForLoopDemo.java:11)
The while Loop
Khái niệm vòng lặp while
Vòng lặp tiếp theo có sẵn trong Java là vòng lặp while. Vòng lặp while là vòng lặp kiểm soát mục nhập.
Cú pháp vòng lặp while
while(test-expression)
loop-body
Trong vòng lặp while, phần thân vòng lặp có thể chứa một câu lệnh đơn, ghép hoặc một câu lệnh trống. Vòng lặp lặp lại trong khi biểu thức hoặc điều kiện kiểm tra được đánh giá là true. Khi biểu thức trở thành sai, điều khiển chương trình sẽ chuyển đến dòng ngay sau phần cuối của mã vòng lặp.
Trong vòng lặp while, một biến vòng lặp phải được khởi tạo trước khi vòng lặp bắt đầu. Và biến vòng lặp nên được cập nhật bên trong phần thân của vòng lặp while.
Ví dụ hoạt động của vòng lặp while:
//program to calculate the factorial of a number
package com.TechVidvan.loopsDemo;
public class WhileLoopDemo
{
public static void main(String args[])
{
long i = 0, fact = 1, num = 5 ;
i = num ;
while(num != 0)
{
fact = fact * num;
--num;
}
System.out.println("The factorial of " + i + " is: " +fact);
}
}
Output
The factorial of 5 is :20
Biến thể vòng lặp while
2.1. Vòng lặp while rỗng
Vòng lặp while rỗng không chứa bất kỳ câu lệnh nào trong phần thân của nó. Nó chỉ chứa một câu lệnh null được biểu thị bằng dấu chấm phẩy sau câu lệnh while:
:
long wait = 0;
while( ++wait < 10000)
; //null statement
:
Đoạn mã trên là một vòng lặp thời gian trễ. Vòng lặp thời gian trễ rất hữu ích để tạm dừng chương trình trong một thời gian. Ví dụ: nếu một tin nhắn quan trọng nhấp nháy trên màn hình và trước khi bạn có thể đọc nó, nó sẽ tắt. Vì vậy, ở đây bạn có thể giới thiệu một vòng lặp thời gian trễ để bạn có đủ thời gian để đọc tin nhắn.
2.2. Vòng lặp while vô hạn
Vòng lặp while có thể là vòng lặp vô hạn nếu bạn bỏ qua việc viết câu lệnh cập nhật bên trong phần thân của nó. Ví dụ, đoạn mã sau là một ví dụ về vòng lặp while vô hạn:
package loopsDemo;
public class WhileLoopDemo
{
public static void main(String args[])
{
int j = 0;
while(j <= 10)
{
System.out.println( j * j);
}
j++;
//writing the update expression outside the loop body makes an infinite loop
}
}
Output
0
0…
Vòng lặp do-while
Không giống như vòng lặp for và while, vòng lặp do-while là vòng lặp được kiểm soát lối ra (exit -controlled), có nghĩa là vòng lặp do-while đánh giá biểu thức kiểm tra hoặc điều kiện kiểm tra của nó ở cuối vòng lặp sau khi thực hiện các câu lệnh trong phần thân vòng lặp. Điều này có nghĩa là vòng lặp do-while luôn thực hiện ít nhất một lần.
Kết luận: Vòng lặp trong Java giúp lập trình viên làm việc nhanh và hiệu quả hơn. Hy vọng bạn có thể tận dụng vòng lặp trong Java để tiết kiệm thời gian và công sức. Tìm hiểu thêm về Java và các ngôn ngữ khác qua các khóa học lập trình tại T3H bạn nhé!