Cấu trúc lặp (tiếp theo)Cấu trúc lặp (tiếp theo)
Ngôn Ngữ Lập TrìnhC++
2Vòng lặp
Đề mụcĐề mục
Câu lệnh forCâu lệnh do-whileSo sánh while, for và do-whileVòng lặp lồng nhauGỡ rối vòng lặpCác lỗi lập trình thường gặp
Câu lệnh forCâu lệnh do-whileSo sánh while, for và do-whileVòng lặp lồng nhauGỡ rối vòng lặpCác lỗi lập trình thường gặp
3Vòng lặp
Câu lệnh forCâu lệnh for
Câu lệnh for thích hợp với vòng lặp thực hiện cáccô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;while (dem < 20){
cout<<‘*’<<endl;dem ++;
}
Câu lệnh for thích hợp với vòng lặp thực hiện cáccô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;while (dem < 20){
cout<<‘*’<<endl;dem ++;
}
for (dem = 0; dem < 20; dem++)cout<<‘*’<<endl;
for (dem = 0; dem < 20; dem++)cout<<‘*’<<endl;
4Vòng lặp
Giải thích quá trình thực hiện:
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 = 1quay 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 = 19quay lại kiểm tra (dem < 20) thấy đúng, vậy in ra dấu ‘*’tăng dem ++ vậy dem = 20quay lại kiểm tra (dem < 20) thấy sai, vậy ra khỏi vòng lặp
Giải thích quá trình thực hiện:
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 = 1quay 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 = 19quay lại kiểm tra (dem < 20) thấy đúng, vậy in ra dấu ‘*’tăng dem ++ vậy dem = 20quay lại kiểm tra (dem < 20) thấy sai, vậy ra khỏi vòng lặp
Câu lệnh forCâu lệnh for
for (dem = 0; dem < 20; dem++)cout<<‘*’<<endl;
for (dem = 0; dem < 20; dem++)cout<<‘*’<<endl;
5Vòng lặp
Câu lệnh forCâu lệnh for
Ví dụ 2 : Tính lương cho các công nhânfor (dem_cn = 0; dem_cn < 10; dem_cn ++){
cout<<“So san pham lam duoc : ";cin>>SoSP;Luong = SoSP * 5;cout<<“Luong cua ban la : "<<Luong<<" nghin dong"<<endl;
}
Ví dụ 2 : Tính lương cho các công nhânfor (dem_cn = 0; dem_cn < 10; dem_cn ++){
cout<<“So san pham lam duoc : ";cin>>SoSP;Luong = SoSP * 5;cout<<“Luong cua ban la : "<<Luong<<" nghin dong"<<endl;
}
6Vòng lặp
Bài tậpBà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.02 4 1.43 9 1.74 16 2.05 25 2.26 36 2.47 49 2.6
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.02 4 1.43 9 1.74 16 2.05 25 2.26 36 2.47 49 2.6
7Vòng lặp
Lời giảiLờ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ảngcout.setf(ios::fixed); // hien thi theo ki phap dau chamcout.precision(1); // lay 1 so le sau dau chamcout<<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;
Tính tổng S = 13 + 23 + 33 + ... + 103
tong = 0;for (i = 1; i <= 10; i++)
tong += i*i*i;
In bảngcout.setf(ios::fixed); // hien thi theo ki phap dau chamcout.precision(1); // lay 1 so le sau dau chamcout<<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;
8Vòng lặp
Câu lệnh forCâu lệnh for
Biến điều khiển trong lệnh for có thể tăng giảm vớimột lượng bất kỳ.Ví dụ: Tính tổng các số lẻ nằm từ 1 đến Nsum = 0;for (le = 1; le <= N; le += 2)
sum += le;
Biến điều khiển trong lệnh for có thể tăng giảm vớimột lượng bất kỳ.Ví dụ: Tính tổng các số lẻ nằm từ 1 đến Nsum = 0;for (le = 1; le <= N; le += 2)
sum += le;
9Vòng lặp
Bài tậpBài tập
In ra màn hình bảng đổi nhiệt độ từ độ C sang độ FCelsius Fahrenheit
20 68.0015 59.0010 50.005 41.000 32.00-5 23.00
-10 14.00-15 5.00-20 -4.00
Công thức: F = 1.8*C + 32
In ra màn hình bảng đổi nhiệt độ từ độ C sang độ FCelsius Fahrenheit
20 68.0015 59.0010 50.005 41.000 32.00-5 23.00
-10 14.00-15 5.00-20 -4.00
Công thức: F = 1.8*C + 32
10Vòng lặp
Câu lệnh forCâ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
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
11Vòng lặp
Câu lệnh do-whileCâu lệnh do-while
Câu lệnh do-while thích hợp với những vòng lặp cầnthự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ápdo{
<Câu lệnh>;} while (biểu thức điều kiện)
Giải thíchLà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.
Câu lệnh do-while thích hợp với những vòng lặp cầnthự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ápdo{
<Câu lệnh>;} while (biểu thức điều kiện)
Giải thíchLà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.
12Vòng lặp
Câu lệnh do-whileCâ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);
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);
13Vòng lặp
Câu lệnh do-whileCâu lệnh do-while
Kiểm tra lệnh nhiều lầndo{
cout<<“Nhap ban kinh: ”;cin>>ban_kinh;ket_qua = chu_vi_ht(ban_kinh);cout<<“Chu vi la: “<<ket_qua;
} while (ban_kinh != 0);
Kiểm tra lệnh nhiều lầndo{
cout<<“Nhap ban kinh: ”;cin>>ban_kinh;ket_qua = chu_vi_ht(ban_kinh);cout<<“Chu vi la: “<<ket_qua;
} while (ban_kinh != 0);
14Vòng lặp
Break và ContinueBreak và Continue
Lệnh break dùng để thoát ngay ra khỏi vòng lặpLệnh continue dùng để quay trở lại ngay đầu vòng lặpdo{
cout<<“Nhap mot so: ”;cin>>so;if (so == 0)
break;cout<<“Hello”<<endl;
} while (so != 0);
Lệnh break dùng để thoát ngay ra khỏi vòng lặpLệnh continue dùng để quay trở lại ngay đầu vòng lặpdo{
cout<<“Nhap mot so: ”;cin>>so;if (so == 0)
break;cout<<“Hello”<<endl;
} while (so != 0);
15Vòng lặp
So sánh các câu lệnh lặpSo 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ặpCâu lệnh trong while có thể không được thực hiện1 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
while: Thích hợp với vòng lặp chưa biết trước số lần lặpCâu lệnh trong while có thể không được thực hiện1 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
16Vòng lặp
Vòng lặp lồng nhauVò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í 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;}
17Vòng lặp
Vòng lặp lồng nhauVò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í 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;}
18Vòng lặp
Gỡ rối vòng lặpGỡ rối vòng lặp
Lần theo giá trị các biến trong sau từng bước lặpLập bảng vết – ví dụ:tong = 0;gt = 1;for (i = 1; i <= 6; i++){
gt = gt*i;tong = tong + gt;
}cout<<“Tong: “<<tong;Tong = 1! + 2! +... + 6!
Lần theo giá trị các biến trong sau từng bước lặpLập bảng vết – ví dụ:tong = 0;gt = 1;for (i = 1; i <= 6; i++){
gt = gt*i;tong = tong + gt;
}cout<<“Tong: “<<tong;Tong = 1! + 2! +... + 6!
873720615312053324496332211101
tonggti
19Vòng lặp
Gỡ rối vòng lặpGỡ rối vòng lặp
In ra các giá trị trung gian trong từng bước lặptong = 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;
In ra các giá trị trung gian trong từng bước lặptong = 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;
20Vòng lặp
Bài tậpBài tập
Vòng lặp sau cho kết quả như thế nào ?tong = 0;for (i = 1; i <= 7; i++){
if (i % 2) == 1tong = tong + i*i;
elsetong = tong – i*i;
}cout<<“Tong: “<<tong;Tong = 12 – 22 + 32 – 42 + 52 – 62 + 72
Vòng lặp sau cho kết quả như thế nào ?tong = 0;for (i = 1; i <= 7; i++){
if (i % 2) == 1tong = tong + i*i;
elsetong = tong – i*i;
}cout<<“Tong: “<<tong;Tong = 12 – 22 + 32 – 42 + 52 – 62 + 72
tongi
11
-32
63
-104
155
-216
287
21Vòng lặp
Bài tậpBài tập
Vòng lặp sau cho kết quả như thế nào ?for (i = 1; i <= 7; i++){
for (j = 1; j <= i; j++)cout<<setw(3)<<j;
cout<<endl;}
Vòng lặp sau cho kết quả như thế nào ?for (i = 1; i <= 7; i++){
for (j = 1; j <= i; j++)cout<<setw(3)<<j;
cout<<endl;}
7654321i / j
11
212
3213
43214
543215
6543216
76543217
22Vòng lặp
Các lỗi lập trình thường gặpCác lỗi lập trình thường gặp
Nhầm giữa if và whileSai ở điều kiện lặp
So sánh sự bằng nhau giữa hai số thựcThiếu { } ở câu lệnh gộpBiến chưa khởi tạo giá trị
Nhầm giữa if và whileSai ở điều kiện lặp
So sánh sự bằng nhau giữa hai số thựcThiếu { } ở câu lệnh gộpBiến chưa khởi tạo giá trị
23Vòng lặp
Bài tậpBài tập
Viết chương trình tính giá trịA = 1/n + 2/(n-1) + 3/(n-2) + ... + n/1Viế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
** ** * ** * * ** * * * ** * * * * ** * * * * * *
Viết chương trình tính giá trịA = 1/n + 2/(n-1) + 3/(n-2) + ... + n/1Viế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
** ** * ** * * ** * * * ** * * * * ** * * * * * *
Recommended