D
DevStart

Vòng lặp trong C++: for, while và do while

20 phútTrung bình

Vòng lặp trong C++ là gì?

Vòng lặp trong C++ giúp bạn chạy một đoạn code nhiều lần mà không cần viết lặp tay. Đây là công cụ rất quan trọng khi in danh sách, tính tổng nhiều số, hoặc xử lý mảng.

Ba loại vòng lặp người mới cần nắm là for, while, và do while.

Nếu if else giúp chương trình đưa ra quyết định, thì vòng lặp trong c++ giúp chương trình lặp lại hành động.

Cú pháp cơ bản của vòng lặp for trong C++

for phù hợp khi bạn biết trước số lần lặp.

cpp
#include <iostream>
using namespace std;

int main() {
for (int i = 1; i <= 5; i++) {
cout << "Lan lap thu " << i << endl;
}
return 0;
}

Ba phần trong for gồm:

  • Giá trị khởi tạo

  • Điều kiện lặp

  • Cập nhật sau mỗi vòng


Ví dụ, trong for (int i = 1; i <= 5; i++):
  • int i = 1 chạy một lần lúc bắt đầu

  • i <= 5 được kiểm tra trước mỗi vòng

  • i++ chạy sau khi thân vòng lặp kết thúc


for trong c++ là lựa chọn tự nhiên khi bạn cần lặp từ 1 đến 10, duyệt mảng hoặc in bảng cửu chương.

Cách dùng while và do while trong C++

while phù hợp khi bạn chưa biết trước sẽ lặp bao nhiêu lần.

cpp
int dem = 1;

while (dem <= 3) {
cout << dem << endl;
dem++;
}

do while sẽ chạy ít nhất một lần trước khi kiểm tra điều kiện.

cpp
int n = 1;

do {
cout << "Gia tri: " << n << endl;
n++;
} while (n <= 2);

Điểm khác nhau quan trọng nhất là:

  • while kiểm tra điều kiện trước

  • do while chạy thân vòng lặp trước rồi mới kiểm tra điều kiện


Điều này hữu ích trong các tình huống cần nhập dữ liệu ít nhất một lần trước khi quyết định dừng.

So sánh for và while trong C++

Hãy dùng for khi:

  • Biết rõ số lần lặp

  • Có biến đếm tăng hoặc giảm đều

  • Muốn gom khởi tạo, điều kiện và cập nhật vào một dòng


Hãy dùng while khi:
  • Chưa biết số lần lặp

  • Việc dừng phụ thuộc vào dữ liệu nhập hoặc trạng thái thay đổi

  • Muốn logic điều kiện rõ ràng hơn biến đếm


Ví dụ nhập mật khẩu cho đến khi đúng:

cpp
#include <iostream>
#include <string>
using namespace std;

int main() {
string matKhau;

while (matKhau != "123456") {
cout << "Nhap mat khau: ";
cin >> matKhau;
}

cout << "Dang nhap thanh cong" << endl;
return 0;
}

Cách dùng break và continue trong C++

cpp
for (int i = 1; i <= 10; i++) {
    if (i == 5) {
        continue;
    }
    if (i == 8) {
        break;
    }
    cout << i << endl;
}
  • continue bỏ qua lần lặp hiện tại.
  • break thoát khỏi vòng lặp ngay lập tức.
Hai từ khóa này rất hữu ích, nhưng nếu lạm dụng thì code sẽ khó theo dõi.

Ví dụ vòng lặp C++ trong bài toán thực tế

Giả sử bạn muốn tính tổng các số từ 1 đến 100:

cpp
#include <iostream>
using namespace std;

int main() {
int tong = 0;

for (int i = 1; i <= 100; i++) {
tong += i;
}

cout << tong << endl;
return 0;
}

Đây là ví dụ cơ bản nhưng rất quan trọng. Nhiều bài toán sau này như đếm phần tử hay tính trung bình cộng đều dựa trên ý tưởng này.

Một ví dụ khác với do while:

cpp
#include <iostream>
using namespace std;

int main() {
int luaChon;

do {
cout << "Nhap 0 de thoat: ";
cin >> luaChon;
} while (luaChon != 0);

return 0;
}

Chương trình này chắc chắn hỏi người dùng ít nhất một lần, đúng với đặc điểm của do while trong c++.

Những lỗi thường gặp với vòng lặp trong C++

  • Quên tăng hoặc giảm biến đếm nên gây lặp vô hạn.
  • Viết sai điều kiện dừng.
  • Nhầm lẫn giữa <<=.
  • Dùng break quá sớm khiến kết quả thiếu dữ liệu.
Ví dụ dễ gây lỗi:
cpp
int i = 0;

// Neu quen i++ thi vong lap se khong dung
while (i < 5) {
cout << i << endl;
i++;
}

Một lỗi khác là truy cập sai chỉ số khi duyệt mảng:

cpp
int so[3] = {10, 20, 30};

for (int i = 0; i <= 3; i++) {
cout << so[i] << endl;
}

Ở đây i <= 3 là sai vì chỉ số hợp lệ chỉ đến 2.

Bài tập thực hành

Viết chương trình in bảng cửu chương 7 bằng vòng lặp for.

Gợi ý:

cpp
for (int i = 1; i <= 10; i++) {
    // viet code o day
}

Làm thêm nếu bạn muốn luyện chắc hơn: dùng while để nhập các số cho đến khi người dùng nhập 0, rồi tính tổng các số đã nhập.

Câu hỏi thường gặp về vòng lặp trong C++

Khi nào nên dùng for thay vì while?

Hãy dùng for khi bạn biết rõ số lần lặp, ví dụ lặp từ 1 đến 10. Dùng while khi việc dừng phụ thuộc vào một điều kiện thay đổi trong lúc chạy.

do while khác gì while?

do while luôn chạy thân vòng lặp ít nhất một lần. while thì kiểm tra điều kiện trước, nên có thể không chạy lần nào.

Vì sao vòng lặp bị lặp vô hạn?

Thường là vì điều kiện dừng không bao giờ sai, hoặc bạn quên cập nhật biến điều khiển như i++.

Tóm tắt

Bạn đã học cách dùng for, while, do while, cùng với breakcontinue trong C++. Ở bài tiếp theo, chúng ta sẽ học hàm trong C++ để tổ chức code thành từng khối dễ tái sử dụng.