1. Những vòng lặp trong cuộc đời chúng ta
Rất thường xuyên, cuộc sống của chúng ta đòi hỏi chúng ta phải thực hiện nhiều lần những hành động giống nhau. Ví dụ: giả sử tôi cần quét một tài liệu gồm nhiều trang. Rằng chúng tôi lặp đi lặp lại cùng một quy trình:
- Đặt trang đầu tiên trên máy quét
- Nhấn nút quét
- Đặt trang tiếp theo trên máy quét
Điều này rất khó thực hiện thủ công. Sẽ thật tuyệt nếu quá trình này có thể được tự động hóa bằng cách nào đó.
Hoặc xem xét một ví dụ khác: giả sử tôi muốn đánh dấu tất cả các email chưa đọc trong hộp thư đến của mình là thư rác. Ngày xửa ngày xưa, tôi phải chọn từng email một và đánh dấu nó là thư rác.
Nhưng các lập trình viên lười biếng, vì vậy họ đã tự động hóa quy trình này từ lâu: bây giờ bạn chỉ cần chọn bất kỳ danh sách thư nào và nhấp vào "đánh dấu là thư rác", sau đó ứng dụng email của bạn chạy qua danh sách và chuyển từng email vào thư mục thư rác.
Chúng ta có thể nói gì ở đây? Thật tiện lợi khi một máy tính hoặc chương trình có thể thực hiện hàng trăm hoặc hàng nghìn thao tác đơn điệu chỉ bằng một cú nhấp chuột. Và bây giờ bạn cũng sẽ học cách làm điều này.
2. while
vòng lặp
Câu lệnh if-else đã mở rộng đáng kể khả năng lập trình của chúng ta, giúp chúng ta có thể viết các chương trình thực hiện các hành động khác nhau trong các tình huống khác nhau. Nhưng có một điều nữa sẽ làm cho các chương trình của chúng ta trở nên mạnh mẽ hơn - các vòng lặp .
Java có 4 loại vòng lặp: while
, for
, for-each
và do-while
. Bây giờ chúng ta sẽ đi sâu vào điều đầu tiên trong số này.
Một while
vòng lặp rất đơn giản. Nó chỉ bao gồm hai phần: điều kiện và thân vòng lặp . Thân vòng lặp được thực hiện lặp đi lặp lại miễn là điều kiện là true
. Nói chung, một while
vòng lặp trông như thế này:
while (condition)
statement;
while (condition)
{
block of statements
}
Nó rất đơn giản. Câu lệnh hoặc khối câu lệnh được thực hiện lặp đi lặp lại miễn là điều kiện vòng lặp bằng true
.
Đây là cách nó hoạt động: đầu tiên, điều kiện được kiểm tra. Nếu nó đúng, thì thân vòng lặp được thực thi ( câu lệnh hoặc khối câu lệnh ). Sau đó, điều kiện được kiểm tra lại và thân vòng lặp được thực hiện lại. Và cứ như vậy cho đến khi điều kiện trở thành sai.
Nếu điều kiện luôn đúng thì chương trình sẽ không bao giờ ngừng chạy. Nó sẽ bị mắc kẹt vĩnh viễn trong vòng lặp.
Nếu điều kiện sai ngay lần đầu tiên được kiểm tra , thì phần thân của vòng lặp sẽ không được thực hiện dù chỉ một lần.
3. Ví dụ về vòng lặp
Dưới đây là một số ví dụ thực tế về các vòng lặp đang hoạt động.
Mã số | Giải trình |
---|---|
|
5 dòng sẽ được hiển thị trên màn hình:
|
Mã số | Giải trình |
---|---|
|
10 dòng sẽ được hiển thị trên màn hình:
|
Mã số | Giải trình |
---|---|
|
Chương trình đọc các số từ bàn phím miễn là các số được nhập vào. |
Mã số | Giải trình |
---|---|
|
Chương trình sẽ in vô tận ký tự C trên màn hình. |
Mã số | Giải trình |
---|---|
|
Chương trình sẽ đọc các dòng từ bàn phím
cho đến khi |
Trong ví dụ trước, equals()
phương thức này được sử dụng để so sánh các chuỗi. Nếu các chuỗi bằng nhau, hàm sẽ trả về true
. Nếu các chuỗi không bằng nhau, thì nó sẽ trả về false
.
4. Vòng lặp trong một vòng lặp
Khi tìm hiểu về câu lệnh điều kiện, bạn đã thấy rằng bạn có thể sử dụng chúng để thực hiện logic phức tạp bằng cách kết hợp nhiều câu lệnh điều kiện. Nói cách khác, bằng cách sử dụng một if
câu lệnh bên trong một if
câu lệnh.
Bạn có thể làm điều tương tự với các vòng lặp. Để viết một vòng lặp bên trong một vòng lặp, bạn cần viết vòng lặp thứ hai bên trong phần thân của vòng lặp đầu tiên. Nó sẽ trông giống như thế này:
while (condition for outer loop)
{
while (condition for inner loop)
{
block of statements
}
}
Hãy xem xét ba nhiệm vụ.
Nhiệm vụ 1 . Giả sử chúng ta muốn viết một chương trình hiển thị từ đó Mom
trên màn hình 4 lần. Một vòng lặp chính xác là những gì chúng ta cần. Và mã của chúng tôi sẽ trông giống như thế này:
Mã số | Giải trình |
---|---|
|
4 dòng sẽ được hiển thị trên màn hình:
|
Nhiệm vụ 2 . Chúng tôi muốn viết một chương trình hiển thị 5 chữ cái A
s trên một dòng. Để làm điều này, chúng ta cần lặp lại một lần nữa. Đây là những gì mã sẽ trông như thế nào:
Mã số | Giải trình |
---|---|
|
Thay vì println() , chúng tôi sẽ sử dụng print() . Nếu không, mỗi chữ cái A sẽ kết thúc trên một dòng riêng biệt. Đầu ra màn hình sẽ là:
|
Nhiệm vụ 3 . Chúng tôi muốn hiển thị một hình chữ nhật bao gồm chữ A
s. Hình chữ nhật phải bao gồm 4 hàng 5 cột. Để thực hiện điều này, bây giờ chúng ta cần một vòng lặp lồng nhau. Chúng ta sẽ chỉ lấy ví dụ đầu tiên (ví dụ mà chúng ta xuất 4 dòng) và thay thế mã để xuất một dòng bằng mã từ ví dụ thứ hai.
Mã số | Giải trình |
---|---|
|
Vòng ngoài màu tím. Nó sử dụng n biến để đếm số lần lặp của vòng lặp. Vòng lặp bên trong có màu xanh lá cây. Nó sử dụng m biến để đếm số lần lặp của vòng lặp. Chúng ta phải di chuyển con trỏ đến dòng tiếp theo một cách rõ ràng sau khi hoàn thành vòng lặp bên trong. Nếu không, tất cả các chữ cái mà chương trình in sẽ kết thúc trên một dòng. Đầu ra màn hình sẽ là:
|
Các vòng lặp bên ngoài và bên trong phải sử dụng các biến khác nhau để đếm số lần lặp lại vòng lặp. Chúng tôi cũng phải thêm System.out.println()
lệnh sau vòng lặp bên trong, vì vòng lặp đó hiển thị chữ cái A
s trên cùng một dòng. Khi các chữ cái trên một dòng được hiển thị, ai đó phải di chuyển con trỏ đến một dòng mới.
5. So sánh vòng lặp Java vs Pascal
Nhiều bạn đã học Pascal ở trường phổ thông. Để giúp bạn hiểu tài liệu ở đây dễ dàng hơn, hãy xem so sánh while
các vòng lặp được viết bằng Pascal và Java này. Nếu bạn không biết Pascal thì có thể bỏ qua phần này.
pascal | Java |
---|---|
|
|
|
|
|
|
|
|
|
|
GO TO FULL VERSION