Các cấu trúc lặp
Các chương trình thường cần phải lặp đi lặp
lại một hoạt động nào đó. Ví dụ, một chương trình xếp loại học lực
sẽ chứa các lệnh rẽ nhánh để gán xếp loại A, B, C... cho một sinh viên
tùy theo điểm số của sinh viên này. Để xếp loại cho cả một lớp,
chương trình sẽ phải lặp lại thao tác đó cho từng sinh viên trong lớp.
Phần chương trình lặp đi lặp lại một lệnh hoặc một khối lệnh được
gọi là một vòng lặp. Lệnh hoặc khối lệnh được lặp đi lặp lại được
gọi là thân của vòng lặp. Cấu trúc lặp cho phép lập trình viên chỉ thị
cho chương trình lặp đi lặp lại một hoạt động trong khi một điều kiện
nào đó vẫn được thỏa mãn.
Khi thiết kế một vòng lặp, ta cần xác định
thân vòng lặp thực hiện hành động gì. Ngoài ra, ta còn cần một cơ chế
để quyết định khi nào vòng lặp sẽ kết thúc.
Mục này sẽ giới thiệu về các lệnh lặp mà
Java cung cấp.
Vòng while
Vòng while lặp đi lặp lại chuỗi hành động,
gọi là thân vòng lặp, nếu như điều
kiện lặp vẫn còn được thỏa mãn. Cú pháp
của vòng lặp while như sau:
while (điều_kiện_lặp) thân_vòng_lặp
Cấu trúc này bắt đầu bằng từ khóa while,
tiếp theo là điều kiện lặp đặt trong một cặp ngoặc đơn, cuối cùng là
thân vòng lặp. Thân vòng lặp hay chứa nhiều hơn một lệnh và khi đó thì
phải được gói trong một cặp ngoặc { }.
Khi thực thi một cấu trúc while, đầu tiên
chương trình kiểm tra giá trị của biểu thức điều kiện, nếu biểu
thức cho giá trị false thì nhảy đến điểm kết thúc lệnh while, còn nếu
điều kiện lặp có giá trị true thì tiến hành thực hiện tập lệnh trong
thân vòng lặp rồi quay trở lại kiểm tra điều kiện lặp, nếu không thỏa
mãn thì kết thúc, nếu thỏa mãn thì lại thực thi thân vòng lặp rồi quay
lại... Tập lệnh ở thân vòng lặp có thể làm thay đổi giá trị của biểu
thức điều kiện từ true sang false để dừng vòng lặp.
Ví dụ, xét một chương trình có nhiệm vụ
đếm từ 1 đến một ngưỡng number cho trước. Đoạn mã đếm từ 1 đến
number có thể được viết như sau:
count = 1;
while(count <= number){
System.out.println(count
+ ", ");
count++;
}
Giả sử biến number có giá trị bằng 2, đoạn
mã trên hoạt động như sau: Đầu tiên, biến count được khởi tạo bằng 1.
Vòng while bắt đầu bằng việc kiểm tra điều kiện (count <= number),
nghĩa là 1 ≤ 2, điều kiện thỏa mãn. Thân vòng lặp được thực thi lần
thứ nhất: giá trị 1 của count được in ra màn hình kèm theo dấu phảy,
sau đó count được tăng lên 2. Vòng lặp quay về điểm xuất phát: kiểm tra
điều kiện lặp, giờ là 2 ≤ 2, vẫn thỏa mãn. Thân vòng lặp được chạy
lần thứ hai (in giá trị 2 của count và tăng count lên 3) trước khi quay
lại điểm xuất phát của vòng lặp. Tại lần kiểm tra điều kiện lặp này,
biểu thức 3 ≤ 2 cho giá trị false, vòng lặp kết thúc do điều kiện lặp
không còn được thỏa mãn, chương trình chạy tiếp ở lệnh nằm sau cấu
trúc while đang xét.
Cấu trúc while trong đoạn mã trên có thể
được biểu diễn bằng sơ đồ như sau:
Chương trình hoàn chỉnh cách sử dụng vòng lặp
while để in ra các số nguyên (biến count) từ 1 cho đến một ngưỡng giá
trị do người dùng nhập vào từ bàn phím (lưu tại biến number). Kèm theo
là kết quả của các lần chạy khác nhau với các giá trị khác nhau của
number. Đặc biệt, khi người dùng nhập giá trị 0 cho number, thân vòng
while không chạy một lần nào, thể hiện ở việc không một số nào được
in ra màn hình. Lí do là vì nếu number bằng 0 thì biểu thức count <=
number ngay từ đầu vòng while đã có giá trị false.
public class WhileExample {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int count, number;
System.out.println("Enter a number: ");
number = input.nextInt();
count = 1;
while(count <= number){
System.out.println(count + ", ");
count++;
}
System.out.println("BOOOOOM!");
}
}
Kết quả chạy
chương trình
Đăng nhận xét