[Bài 18] Vòng Lặp For

[Bài 18] Vòng Lặp For

Trong bài học này các bạn sẽ học kiến thức về vòng lặp For, một kiến thức cơ bản nhưng cực kỳ quan trọng trong ngôn ngữ lập trình C++

1. Vòng Lặp For

Vòng lặp giúp bạn thực hiện các câu lệnh nhiều lần tùy theo ý bạn muốn. Ví dụ bạn muốn in ra 1000 dòng chữ "azbook.org" thì thay vì bạn viết 1000 câu lệnh cout bạn có thể viết 1 câu lệnh cout và cho nó lặp 1000 lần.

Cú pháp : 

for (Câu_lệnh_khởi_tạo ; Điều_kiện_lặp; Câu_lệnh_cập_nhật) {
//code
}

Cách vòng lặp For hoạt động : 

  1. Câu lệnh khởi tạo được thực hiện 1 lần duy nhất khi bắt đầu vào vòng lặp
  2. Sau đó điều kiện lặp được kiểm tra, nếu đúng thì sẽ tiến thành thực hiện các câu lệnh trong for, sai sẽ không thực hiện và kết thúc vòng lặp
  3. Sau khi các câu lệnh trong vòng lặp được thực hiện xong thì tới phần câu lệnh cập nhật được thực thi
  4. Câu lệnh cập nhật được thực hiện xong sẽ tiếp tục kiểm tra điều kiện lặp và nếu đúng tiếp tục thực hiện code trong vòng lặp, sai sẽ kết thúc vòng lặp 

Ví dụ 1 : In ra 4 dòng "azbook.org"

#include <iostream>
using namespace std;

int main() {
int i;
for(i = 1; i <= 4; i++) {
    cout << "azbook.org\n";
}
return 0;

}

 

Output :

azbook.org
azbook.org
azbook.org
azbook.org

Giải thích : 

  1. Biến i được khởi tạo giá trị bằng 1, sau đó kiểm tra điều kiện i <= 4 sẽ có giá trị đúng. Vòng lặp thực hiện lần thứ 1 và in ra azbook.org
  2. Biến i sau câu lệnh cập nhật i++ sẽ có giá trị 2, kiểm tra điều kiện i <= 4 sẽ có giá trị đúng. Vòng lặp thực hiện lần thứ 2 và in ra azbook.org
  3. Biến i sau câu lệnh cập nhật i++ sẽ có giá trị 3, kiểm tra điều kiện i <= 4 sẽ có giá trị đúng. Vòng lặp thực hiện lần thứ 3 và in ra azbook.org
  4. Biến i sau câu lệnh cập nhật i++ sẽ có giá trị 4, kiểm tra điều kiện i <= 4 sẽ có giá trị đúng. Vòng lặp thực hiện lần thứ 4 và in ra azbook.org
  5. Biến i sau câu lệnh cập nhật i++ sẽ có giá trị 5, kiểm tra điều kiện i <= 5 sẽ có giá trị sai. Vòng lặp kết thúc 

2. Sơ Đồ Khối Vòng Lặp For

Sơ đồ khối mô tả trực quan cách vòng for hoạt động 


3. Ví Dụ

Các ví dụ dưới đây sẽ giúp các bạn làm quen với các vòng lặp thường xuyên được sử dụng, bạn cố gắng viết ra giấy từng bước của vòng lặp như phần giải thích của mình ở mục 1 để hiểu rõ hơn cách vòng for chạy.

Ví dụ 1 : In ra các số từ 1 đến n và từ n về 0

Thông thường nếu bạn muốn thực hiện các khối lệnh n lần thì bạn làm vòng for chạy từ 1 tới n.

#include <iostream>
using namespace std;

int main() {
int n = 10;
for (int i = 1; i <= n; i++) {
    cout << i << " ";
}
cout << endl;
for (int i = n; i >= 0; i--) {
    cout << i << " ";
}
return 0;

}

 

Output : 

1 2 3 4 5 6 7 8 9 10
10 9 8 7 6 5 4 3 2 1 0

 

Ví dụ 2 : In ra các ước của N

#include <iostream>
using namespace std;

int main() {
int n = 100;
for (int i = 1; i <= n; i++) {
    if (n % i == 0) {
        cout << i << ' ';
    }
}
return 0;

}

 

Output : 

1 2 4 5 10 20 25 50 100 

 

Ví dụ 3 : Tính tổng các ước của N

#include <iostream>
using namespace std;

int main() {
int n = 100;
int tong = 0;
for (int i = 1; i <= n; i++) {
    if (n % i == 0) {
        tong += i;
    }
}
cout << tong << endl;
return 0;

}

 

Output :

217

 

Ví dụ 4 : Tính N giai thừa (N! = 1.2.3....N)

#include <iostream>
using namespace std;

int main() {
int n = 5;
int giaithua = 1;
for (int i = 1; i <= n; i++) {
    giaithua *= i;
}
cout << giaithua << endl;
return 0;

}

 

Output :

120

 

Ví dụ 5 : Tính tổng và in ra bội số của 3 trong đoạn [a, b]

#include <iostream>
using namespace std;

int main() {
int a = 10, b = 31;
int tong = 0;
for (int i = a; i <= b; i++) {
    if (i % 3 == 0) {
        cout << i << " ";
        tong += i;
    }
}
cout << "\nTong boi cua 3 la : " << tong << endl;
return 0;

}

 

Output :

12 15 18 21 24 27 30
Tong boi cua 3 la : 147

 

4. Một Số Vòng Lặp For Đặc Biệt

Vòng lặp for thường có 3 phần và các câu lệnh, tuy nhiên đôi khi bạn có thể để khuyết các phần này.

Ví dụ 1 : Vòng lặp for không có điều kiện lặp sẽ lặp vĩnh viễn

#include <iostream>
using namespace std;

int main() {
for (int i = 1; ;i++) {
    cout << "azbook" << endl;
    cout << "lap vinh vien\n";
    cout << "lap trinh C++\n";
}
return 0;

}

 

Ví dụ 2 : Vòng lặp không có điều kiện lặp và câu lệnh cập nhật cũng lặp vĩnh viễn

#include <iostream>
using namespace std;

int main() {
for (int i = 1; ;) {
    cout << "azbook" << endl;
    cout << "lap vinh vien\n";
    cout << "lap trinh C++\n";
}
return 0;

}

 

Ví dụ 3 : Vòng lặp for có thể khuyết cả 3 phần, mục đích là tạo vòng lặp vĩnh viễn

Code sau sẽ yêu cầu người dùng nhập số cho tới khi nào nhập số 28 mới dừng vòng lặp.

#include <iostream>
using namespace std;

int main() {
int n;
for(; ;) {
    cout << "Nhap n : ";
    cin >> n;
    if (n == 28) {
        goto nhan;
    }
}
nhan:
cout << n << endl;
cout << "Ket thuc !!!\n";
return 0;
}

Lập trình C++ cơ bản