1. So sánh vòng lặp: for
vswhile
Một while
vòng lặp có thể được sử dụng ở bất cứ đâu mà một câu lệnh hoặc một nhóm câu lệnh cần được thực hiện nhiều lần. Nhưng trong số tất cả các tình huống có thể xảy ra, có một tình huống đáng chú ý.
Chúng ta đang nói về tình huống khi lập trình viên (người tạo chương trình) biết trước vòng lặp sẽ được thực hiện bao nhiêu lần. Điều này thường được xử lý bằng cách khai báo một biến đếm đặc biệt, sau đó tăng (hoặc giảm) biến đó theo 1
mỗi lần lặp của vòng lặp.
Mọi thứ dường như hoạt động như bình thường, nhưng nó không thuận tiện lắm. Trước vòng lặp, chúng ta đặt giá trị ban đầu của biến đếm. Sau đó, trong điều kiện, chúng tôi kiểm tra xem nó đã đạt đến giá trị cuối cùng chưa. Nhưng chúng ta thường thay đổi giá trị ở cuối thân vòng lặp.
Và nếu phần thân của vòng lặp lớn thì sao? Hoặc nếu chúng ta có một số vòng lặp lồng nhau? Nói chung, trong những trường hợp này, nên thu thập tất cả thông tin này về các biến bộ đếm ở một nơi. Và đó là lý do tại sao chúng ta có for
vòng lặp trong Java. Nó cũng không có vẻ phức tạp lắm:
for (statement 1; condition; statement 2)
{
block of statements
}
Một while
vòng lặp chỉ có một điều kiện trong ngoặc đơn, nhưng một for
vòng lặp thêm hai câu lệnh, được phân tách bằng dấu chấm phẩy.
Thực tế đơn giản hơn ta tưởng: trình biên dịch chuyển đổi một for
vòng lặp thành một while
vòng lặp thông thường như sau:
statement 1;
while (condition)
{
block of statements
statement 2;
}
Hoặc tốt hơn, hãy chứng minh điều này bằng một ví dụ. Hai đoạn mã dưới đây giống hệt nhau.
lựa chọn 1 | Lựa chọn 2 |
---|---|
|
|
Chúng tôi chỉ tập hợp vào một nơi tất cả các mã liên quan đến i
biến đếm.
Trong một for
vòng lặp, câu lệnh 1 chỉ được thực hiện một lần trước khi vòng lặp bắt đầu. Điều này có thể được nhìn thấy rõ ràng trong đoạn mã thứ hai
câu lệnh 2 được thực thi cùng số lần với phần thân của vòng lặp và mỗi lần nó được thực hiện sau khi toàn bộ phần thân của vòng lặp đã được thực thi
2. Trường hợp for
sử dụng vòng lặp
Vòng for
lặp có lẽ là loại vòng lặp được sử dụng nhiều nhất trong Java. Nó được sử dụng ở mọi nơi, đối với các lập trình viên, nó rõ ràng và thuận tiện hơn một while
vòng lặp. Hầu như bất kỳ while
vòng lặp nào cũng có thể được chuyển đổi thành một for
vòng lặp.
Ví dụ:
trong khi lặp lại | cho vòng lặp |
---|---|
|
|
|
|
|
|
|
|
|
|
Hãy chú ý đến ví dụ cuối cùng. Các câu lệnh để làm việc với bộ đếm vòng lặp bị thiếu. Không có truy cập và không có tuyên bố.
Trong một for
vòng lặp, Java cho phép bạn bỏ qua "câu lệnh khởi tạo bộ đếm" và "câu lệnh cập nhật bộ đếm". Ngay cả biểu thức xác định điều kiện vòng lặp cũng có thể được bỏ qua.
3. Các sắc thái của việc sử dụng for
vòng lặp
Một điểm quan trọng về việc sử dụng for
vòng lặp break
và continue
câu lệnh.
Một break
câu lệnh trong một for
vòng lặp hoạt động giống như trong một while
vòng lặp — nó kết thúc vòng lặp ngay lập tức. Một continue
câu lệnh bỏ qua thân vòng lặp, nhưng không statement 2
(làm thay đổi bộ đếm vòng lặp).
Chúng ta hãy xem xét lại cách thức for
và while
các vòng lặp có liên quan với nhau.
for (statement 1; condition; statement 2)
{
block of statements
}
statement 1;
while (condition)
{
block of statements
statement 2;
}
Nếu một continue
câu lệnh được thực thi trong một for
vòng lặp , thì phần còn lại của khối câu lệnh sẽ bị bỏ qua, nhưng câu lệnh 2 (câu lệnh hoạt động với for
biến đếm của vòng lặp) vẫn được thực thi.
Hãy quay lại ví dụ của chúng ta với việc bỏ qua các số chia hết cho 7.
Mã này sẽ lặp mãi mãi | Mã này sẽ hoạt động tốt |
---|---|
|
|
Mã sử dụng while
vòng lặp sẽ không hoạt động — i sẽ không bao giờ lớn hơn 7. Nhưng mã có vòng for
lặp sẽ hoạt động tốt.
4. So sánh vòng lặp for: Java vs Pascal
Nhân tiện, Pascal cũng có một For
vòng lặp. Nói chung, về cơ bản mọi ngôn ngữ lập trình đều có một. Nhưng trong Pascal thì nó siêu rõ ràng. Ví dụ:
pascal | Java |
---|---|
|
|
|
|
|
|
GO TO FULL VERSION