You are on page 1of 28

IT001 – NHẬP MÔN LẬP TRÌNH

BÀI 6 – VÒNG LẶP


Nội dung
1. Câu lệnh while
2. Câu lệnh do … while
3. Câu lệnh for
4. Câu lệnh break
5. Câu lệnh continue
6. Bài tập bắt buộc
7. Bài tập về nhà

2
1. Câu lệnh While
Cú pháp:
while(dieu_kien){
cau_lenh;
}
dieu_ Sai
kien Ví dụ:
#include <iostream>
Đúng
int main(){
cau_lenh
int dem = 0;
while (dem < 10){
std::cout<<dem<<" ";
dem++;
}
std::cout<<"\nKet thuc\n";
system("pause");
return 0;
}

01234567 89
Ket thuc
3
1. Vòng lặp 0 lần và vòng lặp vô hạn
Vòng lặp 0 lần Vòng lặp vô hạn
#include <iostream> #include <iostream>
int main(){ int main(){
int dem = 15; int dem = 0;
while (dem < 10){ while (dem < 10){
std::cout<<dem<<" "; std::cout<<dem<<" ";
dem++;
} }
std::cout<<"\nKet thuc\n"; std::cout<<"\nKet thuc\n";
system("pause"); system("pause");
return 0; return 0;
} }
Khi biểu thức điều kiện sai Khi biểu thức điều kiện luôn đúng
Giá trị biến dem = 15 biến dem luôn bằng 0
15 < 10 0<10
 false  luôn luôn true
 thoát khỏi vòng lặp  vô hạn

4
1. Biến đếm
- Dùng để đếm số lần vòng lặp thực thi
- Thông thường các biến đếm sẽ được đặt tên là i, j, k.
- Lưu ý: kiểu dữ liệu của biến đếm: không nên sử dụng unsigned
- Ví dụ: Chương trình sau sẽ lặp vô tận.
#include <iostream>
int main(){
unsigned int dem = 10;
while (dem >= 0){
std::cout<<dem<<" ";

}
dem--; Why?
std::cout<<"\nKet thuc\n";
system("pause");
return 0;
}

5
1. Biến trong vòng lặp
• Biến được khởi tạo trong khối lệnh chỉ tồn tại trong khối lệnh. Khi kết thúc khối
lệnh biến sẽ được hủy
• Lưu ý: Biến đếm nên được khai báo trước vòng lặp.

#include <iostream> - Biến x được khai


int main(){ báo 5 làn và hủy 5
int dem = 1, tong = 0; lần.
while (dem <= 5){
int x = 0;
std::cout<<"Nhap so thu "<<dem<<": ";  Khai báo, khởi
std::cin>>x; tạo và hủy nhiều lần
tong += x; như vậy có ảnh
dem++; hưởng đén
} performace hay
std::cout << "Tong: "<<tong<<"\n"; không?
system("pause");
return 0;
}

6
1. Vòng lặp lồng nhau
10 #include <iostream>
#define CHIEU_DAI 5
#define CHIEU_RONG 10
int main(){
5 int i = 1;
while (i <= CHIEU_DAI)
{
int j = 1;
while (j <= CHIEU_RONG){
std::cout <<"* ";
j++;
}
std::cout << "\n";
i++;
}
system("pause");
return 0;
}

7
1. Vòng lặp lồng nhau
#include <iostream>
#define CANH 5
5 int main(){
int i = 1;
while (i <= CANH)
{
int j = 1;
while (j <= i){
std::cout <<"* ";
j++;
}
std::cout << "\n";
i++;
}
system("pause");
return 0;
}

8
1. Vòng lặp lồng nhau
#include <iostream>
#define CANH 5
5 int main(){
int i = CANH;
while (i > 0)
{
int j = 1;
while (j <= i){
std::cout <<"* ";
j++;
}
std::cout << "\n";
i--;
}
system("pause");
return 0;
}

9
1. Bài tập
Viết chương trình in ra bảng số sau:
1 54321 ****1 1
12 4321 ***21 21
123 321 **321 321
1234 21 *4321 4321
12345 1 54321 54321

10
2. Câu lệnh do … while
Cú pháp:
do{
cau_lenh;
}while(dieu_kien);

Ví dụ:
#include <iostream>
int main(){ cau_lenh
int lua_chon = 0;
do{
std::cout<<"1) Chuc nang 1\n"; Đúng
dieu_
std::cout<<"2) Chuc nang 2\n"; kien
std::cout<<"3) Chuc nang 3\n";
std::cout<<"Vui long chon chuc nang: "; Sai
std::cin>>lua_chon;
} while (lua_chon<1 || lua_chon > 3);
system("pause");
return 0;
}
11
2. Câu lệnh do … while
Chương trình nhập 1 số nguyên trong khoảng xác định
#include <iostream>
#define MIN 2000
#define MAX 2020
int main()
{
int n = 0;
do {
std::cout<<"Nhap n: ";
std::cin>>n;
if (n<MIN || n>MAX){
std::cout<<"Vui long nhap trong khoang
["<<MIN<<","<<MAX<<"]\n";
}
} while (n<MIN || n>MAX);
system("pause");
return 0;
}

12
3. Câu lệnh for
Cú pháp: for (khoi_tao;dieu_kien;tang_bien_dem){
cau_lenh;
}

khoi_tao

dieu_ Sai
kien
Đúng
cau_lenh

tang_bien_dem

13
3. Ví dụ
Chương trình in ra dãy số từ 1 đến 10
#include <iostream>
int main(){
for (int i = 1; i <= 10; i++){
std::cout<<i<<" ";
}
system("pause");
return 0;
}

Chương trình in ra dãy số từ 10 đến 1


#include <iostream>
int main(){
for (int i = 10; i > 0; i--){
std::cout<<i<<" ";
}
system("pause"); i -= 2
return 0;
}
14
3. For và câu lệnh while
for (khoi_tao;dieu_kien;tang_bien_dem){
cau_lenh;
}

khoi_tao;
while(dieu_kien){
cau_lenh;
tang_bien_dem;
}

for (int i = 0; i <10; i++){


std::cout<<i<<" ";
}

int i = 0;
while (i<10){
std::cout<<i<<" ";
i++;
}

15
3. Câu lệnh for và lược giản
for (khoi_tao;dieu_kien;tang_bien_dem){
cau_lenh;
}

• Trong câu lệnh for có thể sẽ không có những thành phần sau:
khoi_tao, dieu_kien, tang_bien_dem
• Ví dụ:
#include <iostream>
int main(){
int dem=1;
for ( ;dem <= 10; ){
std::cout << dem << " ";
dem++;
}
system("pause");
return 0;
}

16
3. Vòng lặp vô hạn
• Câu lệnh for
for ( ;; ){
cau_lenh;
}

• Câu lệnh while


while(true){
cau_lenh;
}

• Câu lệnh do … while


???

17
3. Câu lệnh for và việc định nghĩa nhiều biến
C++ cho phép định nghĩa và sử dụng nhiều biến trong vòng lặp for.
Ví dụ:

#include <iostream>
int main(){
for (int i = 0, j = 9; i<10, j>=0; i++, j--){
std::cout<<i<<" "<<j<<"\n";
}
system("pause");
return 0;
}

18
3. Ví dụ

• Cho đoạn chương trình sau. Hỏi chương trình in ra thế nào
A. 45 10 #include <iostream>
int main(){
B. 45 9 int tong = 0;
for (int i = 0; i < 10; i++){
C. 45 11 tong += i;
}
D. Báo lỗi std::cout<<tong<<“\t";
std::cout<<i<<"\n";
system("pause");
return 0;
}

19
3. Ví dụ

• Cho đoạn chương trình sau. Hỏi chương trình in ra thế nào
A. 3 2 1 #include <iostream>
int main(){
B. 3 2 1 0 for (unsigned int i=3;i >= 0;i--){
std::cout << count << " ";
C. Vô tận }
system("pause");
D. Báo lỗi return 0;
}

20
4. Câu lệnh break
• Trong vòng lặp, câu lệnh break dùng để kết thúc sớm vòng lặp.
• Câu lệnh break được dùng nhiều trong các vòng lặp vô tận

#include <iostream>
int main(){
for (int i=9;i >= 0;i--){ cau_lenh
std::cout << i << " ";
if (i==5){
break;
Đúng dieu_
} break
kien
}
system("pause"); Sai
return 0;
}

21
5. Câu lệnh continue
• Câu lệnh continue dùng để kết thúc bước lặp hiện tại và chuyển
sang bước lặp tiếp theo.

#include <iostream>
int main(){ cau_lenh
for (int i=9;i >= 0;i--){
if (i&1){
continue; continue
} Đúng dieu_
std::cout << i << " "; kien
}
system("pause"); Sai
return 0;
}

22
6. Bài tập bắt buộc

1. Viết chương trình nhập vào số nguyên dương n. Tính tổng:

2. Viết chương trình nhập vào số nguyên dương n. Tính tổng:


S= 1 + 1.2 + . . . . + 1.2.3….n

3. Viết chương trình liệt kê tất cả các số nguyên tố nhỏ hơn giá trị N nhập
từ bàn phím.

4. Tính tổng các chữ số trong 1 số


Ví dụ: số 1234 có tổng S = 1 + 2 + 3 + 4 = 10

5. Tìm ước số chung lớn nhất của 2 số nguyên dương a và b

23
7. Bài tập về nhà
1. Hãy tìm các số Amstrong nhỏ hơn 1000. Biết rằng số Amstrong là
một số có đặc điểm sau: số đó gồm n chữ số, tổng các lũy thừa
bậc n của các chữ số của nó bằng với chính nó. Ví dụ: 153 = 1^3 +
5^3 + 3^3.
2. Tính giai thừa của số nguyên dương n.
3. Viết chương trình tính n!!.
Biết rằng n!! = 1.3.5..n nếu n lẻ, và n!! = 2.4.6…n nếu chẵn.
4. Viết chương trình cho phép người dùng có thể chọn chức năng
tương ứng để tính diện tích , chu vi các hình: tam giác, đường
tròn, hình chữ nhật.
5. Viết chương trình nhập vào số nguyên n, kiểm tra số n có phải là
số nguyên tố không?

24
7. Bài tập về nhà
6. Một số hoàn hảo là một số có tổng các ước số của nó bằng chính
số đó. Hãy tìm số hoàn hảo nhỏ hơn 5000.
Ví dụ: 6 có các ước số là 1, 2, 3 và 6 = 1 + 2 + 3.
7. Viết chương trình in dãy số Fibonanci nhỏ hơn giá trị n. Biết rằng:
f(0) = f(1) = 1
f(n) = f(n – 1) + f(n – 2)
8. Lập chương trình tính sin(x) với độ chính xác 0.0001 theo công
thức:
sin(x) = x – x^3/3! + x^5/5! – …+(-1)^n.x^(2n+1)/(2n+1)!
9. Nhập một số c>0 (ví dụ c = 0.0001) và một số thực x rồi tính:
cos(x)= 1 – x^2/2! + x^4/4! – …+(-1)^n.x^(2n)/(2n)!
10. Nhập 1 số c > 0 (sai số) và 1 số thực x rồi tính :
e^x = 1 + x/1! + x^2/2! + …+x^n/n!

25
7. Bài tập về nhà
11. Tính PI với sai số 0.0001 theo công thức: PI/4 = 1 – 1/3 + 1/5 – 1/7 +…
12. Viết chương trình nhập vào số nguyên dương n. Tính tổng: S = 1 + 1/2
+ 1/3 + 1/4 +… 1/n
13. Viết chương trình in ra tam giác Pascal
1
11
121
1331
…..
14. Dùng vòng lặp for, in ra màn hình các hinh vẽ sau:
*
**
***
****
*****
15. Chuyển đổi từ số la mã sang số thập phân. Biết Bảng số la mã
I V X L C D M
1 5 10 50 100 500 1000

26
7. Bài tập về nhà
16. Đổi từ hệ nhị phân sang hệ thập phân
17. Đổi từ hệ thập phân sang nhị phân
Ví dụ: 15 (hệ thập phân) = 1111 (hệ nhị phân)
18. Đảo ngược các chữ số trong số nguyên đó.
19. Số đối xứng hay còn gọi là “palindrome”.
Ví dụ: 123321 là số đối xứng, 12012 không phải số đối xứng.
20. Viết chương trình Nhập một số nguyên dương n. Tính:
S=1+2+…+n
S = 12 + 22 + … + n2
S = 1 + 1/2 + … + 1/n
S = 1*2*…*n = n!
S = 1! + 2! + … + n!

27
7. Bài tập về nhà
21. Nhập một số nguyên dương n. Xuất ra số ngược lại.
Ví dụ: Nhập 1706  Xuất 6071.
22. Tìm và in lên màn hình tất cả các số nguyên trong phạm vi từ 10
đến 99 sao cho tích của 2 chữ số bằng 2 lần tổng của 2 chữ số đó.

28

You might also like