1.
Lệnh lặp while
a.
Cú pháp
while (điều kiện)
{
khối lệnh lặp ;
[break;]
[continue;]
}
{
khối lệnh lặp ;
[break;]
[continue;]
}
b.
Thực hiện
- Đầu tiên chương trình sẽ kiểm tra điều kiện.
+ Nếu đúng thì thực hiện khối lệnh lặp, sau đó quay lại kiểm tra điều kiện và
tiếp tục.
+ Nếu điều kiện sai thì dừng vòng lặp.
[break]
[continue]
[break]
Dùng để thoát ra khỏi (chấm dứt) các câu lệnh cấu trúc, chương trình sẽ tiếp tục thực hiện các câu lệnh tiếp sau câu lệnh vừa thoát.
[continue]
Lệnh dùng để quay lại đầu vòng lặp mà không chờ thực hiện hết các lệnh trong khối lệnh lặp.
c.
Đặc trưng
-
Khối lệnh lặp có thể không được thực hiện lần
nào nếu điều kiện sai ngay từ đầu.
-
Để vòng lặp không lặp vô hạn thì trong khối lệnh
thông thường phải có ít nhất một câu lệnh nào đó gây ảnh hưởng đến kết quả của
điều kiện, ví dụ làm cho điều kiện đang đúng trở thành sai.
-
Nếu điều kiện luôn luôn nhận giá trị đúng (ví dụ
biểu thức điều kiện là 1) thì trong khối lệnh lặp phải có câu lệnh kiểm tra
dừng và lệnh break.
2. Ví dụ minh hoạ
Ví dụ 1 : Nhân 2 số nguyên theo phương pháp Ấn độ
Cách 1:
void main()
{
long m, n, kq; //
Các số cần nhân và kết quả kq
cout << “Nhập m
và n: “ ; cin >> m >> n ;
kq = 0 ;
while (m)
{
if (m%2)
kq += n ;
m
>>= 1;
n <<=
1;
}
cout << “m nhân
n =” << kq ;
}
Cách 2:
void main()
{
long m, n, kq; //
Các số cần nhân và kết quả kq
cout << “Nhập m
và n: “ ; cin >> m >> n ;
kq = 0 ;
while (1) {
if (m%2)
kq += n ;
m
>>= 1;
n
<<= 1;
if (!m)
break ; // nếu m =
0 thì thoát khỏi vòng lặp
}
cout << “m nhân
n =” << kq ;
}
Ví dụ 2 : Bài toán cổ: vừa gà vừa chó bó lại cho tròn đếm dủ 100 chân. Hỏi có mấy gà và mấy con chó, biết tổng số con là 36.
void main()
{
int g, c ;
g = 0 ;
while (g <= 36) {
c = 0 ;
while (c
<= 50) {
if
(g + c == 36 && 2*g + 4*c == 100) cout << g << c ;
c++;
}
g++;
}
}
Ví dụ 3 : Tìm ước chung lớn nhất (UCLN) của 2 số nguyên m và n.
Áp dụng thuật toán
Euclide bằng cách liên tiếp lấy số lớn trừ đi số nhỏ khi nào 2 số bằng nhau thì
đó là UCLN. Thêm biến
phụ r để tính hiệu của 2 số. Sau đó đặt lại m hoặc n bằng r sao cho m > n và
lặp lại. Vòng lặp dừng khi m = n.
void main()
{
int m, n, r;
cout << "Nhập m, n:
" ; cin >> m >> n ;
if (m < n) { int t = m; m = n;
n = t; } // nếu m < n thì đổi vai
trò hai số
while (m != n) {
r = m - n
;
if (r >
n) m = r; else { m = n ; n = r ; }
}
cout << "UCLN = "
<< m ;
}
0 Comments