Download - Bai Giang 4
![Page 1: Bai Giang 4](https://reader034.vdocuments.mx/reader034/viewer/2022052507/55864994d8b42afc6a8b4662/html5/thumbnails/1.jpg)
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++
![Page 2: Bai Giang 4](https://reader034.vdocuments.mx/reader034/viewer/2022052507/55864994d8b42afc6a8b4662/html5/thumbnails/2.jpg)
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
![Page 3: Bai Giang 4](https://reader034.vdocuments.mx/reader034/viewer/2022052507/55864994d8b42afc6a8b4662/html5/thumbnails/3.jpg)
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;
![Page 4: Bai Giang 4](https://reader034.vdocuments.mx/reader034/viewer/2022052507/55864994d8b42afc6a8b4662/html5/thumbnails/4.jpg)
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;
![Page 5: Bai Giang 4](https://reader034.vdocuments.mx/reader034/viewer/2022052507/55864994d8b42afc6a8b4662/html5/thumbnails/5.jpg)
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;
}
![Page 6: Bai Giang 4](https://reader034.vdocuments.mx/reader034/viewer/2022052507/55864994d8b42afc6a8b4662/html5/thumbnails/6.jpg)
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
![Page 7: Bai Giang 4](https://reader034.vdocuments.mx/reader034/viewer/2022052507/55864994d8b42afc6a8b4662/html5/thumbnails/7.jpg)
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;
![Page 8: Bai Giang 4](https://reader034.vdocuments.mx/reader034/viewer/2022052507/55864994d8b42afc6a8b4662/html5/thumbnails/8.jpg)
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;
![Page 9: Bai Giang 4](https://reader034.vdocuments.mx/reader034/viewer/2022052507/55864994d8b42afc6a8b4662/html5/thumbnails/9.jpg)
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
![Page 10: Bai Giang 4](https://reader034.vdocuments.mx/reader034/viewer/2022052507/55864994d8b42afc6a8b4662/html5/thumbnails/10.jpg)
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
![Page 11: Bai Giang 4](https://reader034.vdocuments.mx/reader034/viewer/2022052507/55864994d8b42afc6a8b4662/html5/thumbnails/11.jpg)
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.
![Page 12: Bai Giang 4](https://reader034.vdocuments.mx/reader034/viewer/2022052507/55864994d8b42afc6a8b4662/html5/thumbnails/12.jpg)
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);
![Page 13: Bai Giang 4](https://reader034.vdocuments.mx/reader034/viewer/2022052507/55864994d8b42afc6a8b4662/html5/thumbnails/13.jpg)
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);
![Page 14: Bai Giang 4](https://reader034.vdocuments.mx/reader034/viewer/2022052507/55864994d8b42afc6a8b4662/html5/thumbnails/14.jpg)
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);
![Page 15: Bai Giang 4](https://reader034.vdocuments.mx/reader034/viewer/2022052507/55864994d8b42afc6a8b4662/html5/thumbnails/15.jpg)
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
![Page 16: Bai Giang 4](https://reader034.vdocuments.mx/reader034/viewer/2022052507/55864994d8b42afc6a8b4662/html5/thumbnails/16.jpg)
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;}
![Page 17: Bai Giang 4](https://reader034.vdocuments.mx/reader034/viewer/2022052507/55864994d8b42afc6a8b4662/html5/thumbnails/17.jpg)
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;}
![Page 18: Bai Giang 4](https://reader034.vdocuments.mx/reader034/viewer/2022052507/55864994d8b42afc6a8b4662/html5/thumbnails/18.jpg)
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
![Page 19: Bai Giang 4](https://reader034.vdocuments.mx/reader034/viewer/2022052507/55864994d8b42afc6a8b4662/html5/thumbnails/19.jpg)
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;
![Page 20: Bai Giang 4](https://reader034.vdocuments.mx/reader034/viewer/2022052507/55864994d8b42afc6a8b4662/html5/thumbnails/20.jpg)
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
![Page 21: Bai Giang 4](https://reader034.vdocuments.mx/reader034/viewer/2022052507/55864994d8b42afc6a8b4662/html5/thumbnails/21.jpg)
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
![Page 22: Bai Giang 4](https://reader034.vdocuments.mx/reader034/viewer/2022052507/55864994d8b42afc6a8b4662/html5/thumbnails/22.jpg)
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ị
![Page 23: Bai Giang 4](https://reader034.vdocuments.mx/reader034/viewer/2022052507/55864994d8b42afc6a8b4662/html5/thumbnails/23.jpg)
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
** ** * ** * * ** * * * ** * * * * ** * * * * * *