2. Đề mục
Câu lệnh for
Câu lệnh do-while
So sánh while, for và do-while
Vòng lặp lồng nhau
Gỡ rối vòng lặp
Các lỗi lập trình thường gặp
Vòng lặp 2
3. Câu lệnh for
Câu lệnh for thích hợp với vòng lặp thực hiện các
công việc giống nhau dựa trên biến đếm.
Ví dụ 1: In ra màn hình 20 dấu ‘*’
dem = 0; for (dem = 0; dem < 20; dem++)
for (dem = 0; dem < 20; dem++)
while (dem < 20) cout<<‘*’<<endl;
cout<<‘*’<<endl;
{
cout<<‘*’<<endl;
dem ++;
}
Vòng lặp 3
4. Câu lệnh for
Giải thích quá trình thực hiện:
for (dem = 0; dem < 20; dem++)
for (dem = 0; dem < 20; dem++)
cout<<‘*’<<endl;
cout<<‘*’<<endl;
khởi tạo dem = 0;
kiểm tra (dem < 20) thấy đúng, vậy in ra dấu ‘*’
tăng dem ++ vậy dem = 1
quay lại kiểm tra (dem < 20) thấy đúng, vậy in ra dấu ‘*’
tăng dem ++ vậy dem = 2
...
tăng dem ++ vậy dem = 19
quay lại kiểm tra (dem < 20) thấy đúng, vậy in ra dấu ‘*’
tăng dem ++ vậy dem = 20
quay lại kiểm tra (dem < 20) thấy sai, vậy ra khỏi vòng lặp
Vòng lặp 4
5. Câu lệnh for
Ví dụ 2 : Tính lương cho các công nhân
for (dem_cn = 0; dem_cn < 10; dem_cn ++)
{
cout<<“So san pham lam duoc : quot;;
cin>>SoSP;
Luong = SoSP * 5;
cout<<“Luong cua ban la : quot;<<Luong<<quot; nghin dongquot;<<endl;
}
Vòng lặp 5
6. Bài tập
Tính tổng S = 13 + 23 + 33 + ... + 103
In ra màn hình bảng giá trị
i i*i sqrt(i)
1 1 1.0
2 4 1.4
3 9 1.7
4 16 2.0
5 25 2.2
6 36 2.4
7 49 2.6
Vòng lặp 6
7. Lời giải
Tính tổng S = 13 + 23 + 33 + ... + 103
tong = 0;
for (i = 1; i <= 10; i++)
tong += i*i*i;
In bảng
cout.setf(ios::fixed); // hien thi theo ki phap dau cham
cout.precision(1); // lay 1 so le sau dau cham
cout<<setw(3)<<“i”<<setw(5)<<“i*i” <<setw(7)<<“sqrt(i)”<<endl;
for (i = 1; i <= 7; i++)
cout<<setw(3)<<i<<setw(6)<<i*i<<setw(9)<<sqrt(i)<<endl;
Vòng lặp 7
8. Câu lệnh for
Biến điều khiển trong lệnh for có thể tăng giảm với
một lượng bất kỳ.
Ví dụ: Tính tổng các số lẻ nằm từ 1 đến N
sum = 0;
for (le = 1; le <= N; le += 2)
sum += le;
Vòng lặp 8
9. Bài tập
In ra màn hình bảng đổi nhiệt độ từ độ C sang độ F
Celsius Fahrenheit
20 68.00
15 59.00
10 50.00
5 41.00
0 32.00
-5 23.00
-10 14.00
-15 5.00
-20 -4.00
Công thức: F = 1.8*C + 32
Vòng lặp 9
10. Câu lệnh for
Cú pháp:
for (khởi tạo; biểu thức điều kiện; cập nhật biến điều khiển)
<Câu lệnh>;
Giái thích:
Thực hiện câu lệnh khởi tạo;
Kiểm tra biểu thức điều kiện;
Nếu điều kiện đúng thì
• Thực hiện <Câu lệnh>;
• Thực hiện cập nhật biến điều khiển
• Quay lại kiểm tra điều kiện;
Nếu điều kiện sai thì ra khỏi vòng lặp
Vòng lặp 10
11. Câu lệnh do-while
Câu lệnh do-while thích hợp với những vòng lặp cần
thực hiện ít nhất một lần lặp
Làm thực đơn (menu)
Kiểm tra lệnh nhiều lần
Cú pháp
do
{
<Câu lệnh>;
} while (biểu thức điều kiện)
Giải thích
Làm <Câu lệnh>.
Kiểm tra điều kiện, nếu đúng thì
• Quay lại làm <Câu lệnh>
• Kiểm tra điều kiện
Kiểm tra điều kiện, nếu sai thì
• Ra khỏi vòng lặp.
Vòng lặp 11
12. Câu lệnh do-while
Làm thực đơn:
void thuc_don()
{
cout<<“1. Tinh dien tich hinh tron”<<endl;
cout<<“2. Tinh dien tich tam giac”<<endl;
cout<<“3. Thoat”<<endl;
}
do
{
thuc_don();
cout<<“Chon mot so: ”;
cin>>so;
switch (so)...
} while (so != 3);
Vòng lặp 12
13. Câu lệnh do-while
Kiểm tra lệnh nhiều lần
do
{
cout<<“Nhap ban kinh: ”;
cin>>ban_kinh;
ket_qua = chu_vi_ht(ban_kinh);
cout<<“Chu vi la: “<<ket_qua;
} while (ban_kinh != 0);
Vòng lặp 13
14. Break và Continue
Lệnh break dùng để thoát ngay ra khỏi vòng lặp
Lệnh continue dùng để quay trở lại ngay đầu vòng lặp
do
{
cout<<“Nhap mot so: ”;
cin>>so;
if (so == 0)
break;
cout<<“Hello”<<endl;
} while (so != 0);
Vòng lặp 14
15. So sánh các câu lệnh lặp
while:
Thích hợp với vòng lặp chưa biết trước số lần lặp
Câu lệnh trong while có thể không được thực hiện
1 lần nào nếu điều kiện kiểm tra là sai ngay từ
đầu.
for:
Thích hợp với vòng lặp biết trước số lần lặp
do-while:
Thích hợp với vòng lặp có ít nhất là một lần lặp
Vòng lặp 15
16. Vòng lặp lồng nhau
Ví dụ 1: In ra màn hình 20 dòng và 30 cột các ngôi sao
******************************
******************************
******************************
******************************
...
Lời giải:
for (dong = 1; dong <= 20; dong ++)
{
for (cot = 1; cot <= 30; cot ++)
cout<<‘*’;
cout<<endl;
}
Vòng lặp 16
17. Vòng lặp lồng nhau
Ví dụ 2: In ra màn hình các ngôi sao như sau
*
**
***
****
*****
******
*******
Lời giải:
for (dong = 1; dong <= 7; dong ++)
{
for (cot = 1; cot <= dong; cot ++)
cout<<‘*’;
cout<<endl;
}
Vòng lặp 17
18. Gỡ rối vòng lặp
Lần theo giá trị các biến trong sau từng bước lặp
Lập bảng vết – ví dụ:
tong = 0; i gt tong
gt = 1; 1 0
for (i = 1; i <= 6; i++)
1 1 1
{
gt = gt*i; 2 2 3
tong = tong + gt; 3 6 9
} 4 24 33
cout<<“Tong: “<<tong;
5 120 153
Tong = 1! + 2! +... + 6!
6 720 873
Vòng lặp 18
19. Gỡ rối vòng lặp
In ra các giá trị trung gian trong từng bước lặp
tong = 0;
gt = 1;
for (i = 1; i <= 6; i++)
{
gt = gt*i;
cout<<“gt = “<<gt<<endl;
tong = tong + gt;
cout<<“tong = “<<tong<<endl;
}
cout<<“Tong: “<<tong;
Vòng lặp 19
20. Bài tập
Vòng lặp sau cho kết quả như thế nào ?
tong = 0;
for (i = 1; i <= 7; i++) i tong
{
1 1
if (i % 2) == 1
tong = tong + i*i; 2 -3
else 3 6
tong = tong – i*i; 4 -10
}
5 15
cout<<“Tong: “<<tong;
Tong = 12 – 22 + 32 – 42 + 52 – 62 + 72
2 2 2 2 2 2 2 6 -21
7 28
Vòng lặp 20
21. Bài tập
Vòng lặp sau cho kết quả như thế nào ?
for (i = 1; i <= 7; i++)
{ i/j 1 2 3 4 5 6 7
for (j = 1; j <= i; j++) 1 1
cout<<setw(3)<<j;
2 1 2
cout<<endl;
} 3 1 2 3
4 1 2 3 4
5 1 2 3 4 5
6 1 2 3 4 5 6
7 1 2 3 4 5 6 7
Vòng lặp 21
22. Các lỗi lập trình thường gặp
Nhầm giữa if và while
Sai ở điều kiện lặp
So sánh sự bằng nhau giữa hai số thực
Thiếu { } ở câu lệnh gộp
Biến chưa khởi tạo giá trị
Vòng lặp 22
23. Bài tập
Viết chương trình tính giá trị
A = 1/n + 2/(n-1) + 3/(n-2) + ... + n/1
Viết chương trình nhập vào một số nguyên dương,
sau đó cho biết số đó có bao nhiêu chữ số
Viết chương trình kiểm tra một số có là số nguyên tố
Viết chương trình in ra màn hình cây thông
*
**
***
****
*****
******
*******
Vòng lặp 23