Vòng lặp trong C++ gần như đã rất đỗi thân quen với tất cả những nhà phát triển ứng dụng hay game. Tuy nhiên, để nắm rõ nó bạn cần phải đầu tư thời gian và công sức cũng như trải nghiệm với nhiều dự án thực tế. Trong phạm vi bài viết này, chúng tôi xin phép đề cập đến những thông tin cơ bản và các ví dụ minh họa kèm theo để người đọc dễ hình dung và áp dụng sau này.
Vòng lặp trong C++ là gì?
Vòng lặp trong C++ được hiểu đơn giản là một cấu trúc điều khiển hỗ trợ người lập trình thực thi một tập lệnh mang tính lặp với một số lần tương ứng hay lặp đến khi điều kiện bất kỳ được thỏa mãn.
Có bao nhiêu dạng vòng lặp trong C++?
Trong ngôn ngữ lập trình C++, sẽ có ba dạng vòng lặp cơ bản: vòng lặp ‘For’, vòng lặp ‘While’, và vòng lặp ‘Do-While’. Để giúp bạn tìm hiểu kỹ và sâu hơn về ba dạng vòng lặp này, chúng tôi xin trình bày cụ thể chúng ngay sau đây.
1. Vòng lặp ‘For’
Vòng lặp ‘For’ này sẽ giúp bạn lặp lại một khối lệnh cho một tập hợp với nhiều giá trị bất kỳ. Cú pháp của vòng lặp ‘For’ trong C++ là:
for (initialization; condition; increment) { // code to be executed }
Chú thích:
– ‘initialization’: là biểu thức được dùng cho việc tạo giá trị ban đầu cho biến đếm nằm trong vòng lặp.
– ‘Condition’: là biểu thức dùng cho việc kiểm tra vòng lặp có thực hiện được hay không. Trong trường hợp biểu thức trả về kết quả ‘True’ thì tiếp tục thực hiện vòng lặp. Ngược lại, chúng ta sẽ dừng vòng lặp.
– ‘Increment’: là biểu thức sử dụng cho việc biến đổi giá trị trên biến đếm nằm bên trong vòng lặp.
Ví dụ: Sau đây hãy dùng vòng lặp để tính tổng các số từ một đến 10.
int sum = 0; for (int i = 1; i <= 10; i++) { sum += i; } cout << "Sum: " << sum << endl;
Lúc này, biến ‘sum’ sẽ được tạo với giá trị là 0. Vòng lặp dùng biến đếm ‘i’ để lặp khối lệnh cho những giá trị chạy từ 1 đến 10. Khi xét đến mỗi lần lặp, giá trị của biến ‘i’ sẽ được thêm vào biến ‘sum’.
Đến khi kết thúc vòng lặp, giá trị của biến ‘sum’ sẽ được xuất ra màn hình. Kết quả trả về cho bài toán tính tổng những số từ 1 đến 10 là:
Sum: 55
2. Vòng lặp ‘While’
Dạng vòng lặp tiếp theo mà chúng tôi muốn nói đến là vòng lặp ‘While. Nó được dùng để thực hiện lặp một khối lệnh cho tới khi một điều kiện bất kỳ trả giá trị là ‘False’. Sau đây, cú pháp của vòng lặp ‘While’:
while (condition) { // code to be executed }
Chú thích:
– ‘condition’: là biểu thức được dùng để kiểm tra vòng lặp có nên thực hiện tiếp hay không. Trong trường hợp, giá trị của biểu thức là ‘True’ thì khối lệnh nằm trong vòng lặp sẽ thực thi và ngược lại vòng lặp sẽ dừng.
Ví dụ: Hãy dùng vòng lặp ‘While’ để tính tổng những số nguyên dương từ bàn phím cho tới khi bạn nhập vào số 0.
int num, sum = 0; cout << "Enter a number (0 to stop): "; cin >> num; while (num != 0) { sum += num; cout << "Enter a number (0 to stop): "; cin >> num; } cout << "Sum: " << sum << endl;
Biến ‘num’ trong đoạn code trên đã được dùng để lưu trữ những giá trị nguyên dương khi bạn nhập từ bàn phím. Dùng biến ‘sum’ để tính tổng các giá trị nguyên dương. Khi đó, vòng lặp ‘While’ sẽ có chức năng lặp lại việc nhập vào những giá trị nguyên dương từ bàn phím cho tới khi bạn nhập vào số 0.
Bên cạnh đó, ứng với mỗi lần lặp, giá trị trên biến ‘num’ sẽ được thêm vào biến ‘sum’. Ngay khi hoàn tất vòng lặp, giá trị của biến ‘sum’ sẽ hiển thị ra màn hình.
3. Vòng lặp Do-While
Về cơ bản, thì vòng lặp Do-While khá giống với vòng lặp ‘While’. Nhưng khối lệnh nằm trong vòng lặp sẽ có thể được thực thi tối thiểu một lần trước khi kiểm tra điều kiện và xem xét có lặp lại hay không.
Cú pháp của vòng lặp Do-While như sau:
do { // code to be executed } while (condition);
Chú thích:
– ‘condition’: là biểu thức dùng để kiểm tra vòng lặp có tiếp tục được thực thi hay không. Khi biểu thức trả kết quả về ‘True’ thì khối lệnh trong vòng lặp sẽ chạy còn ngược lại sẽ kết thúc vòng lặp.
Ví dụ: Hãy dùng vòng lặp Do-While để tính tổng các số nguyên dương từ bàn phím cho đến khi người sử dụng nhập vào số 0.
int num, sum = 0; do { cout << "Enter a number (0 to stop): "; cin >> num; sum += num; } while (num != 0); cout << "Sum: " << sum << endl;
Từ đoạn mã trên, các bạn sẽ thấy được biến ‘num’ được dùng để lưu trữ những giá trị nguyên dương được người dùng nhập từ bàn phím. Biến ‘sum’ hỗ trợ việc tính tổng những giá trị nguyên dương.
Vòng lặp ‘Do-While’ sẽ được dùng để lặp lại quá trình nhập những giá trị nguyên dương từ bàn phím tới khi người dùng nhập vào số 0. Lúc này, giá trị của biến ‘sum’ sẽ xuất ra màn hình sau khi kết thúc vòng lặp.
Hãy nhớ là khối lệnh trong vòng lặp sẽ được chạy tối thiểu một lần trước khi kiểm tra điều kiện vì vậy các bạn phải nhập tối thiểu một giá trị để vòng lặp thực hiện nhé.
Những lệnh điều khiển vòng lặp trong C++
Những lệnh điều khiển vòng lặp thường được dùng để biến đổi luồng thực thi trong vòng lặp. Trong C++, chúng ta sẽ làm quen với ba lệnh điều khiển chính: ‘break’, ‘continue’, và ‘goto’.
1. Lệnh ‘break’: chức năng thoát khỏi vòng lặp và chuyển đổi khả năng kiểm soát tới câu lệnh sau vòng lặp.
Ví dụ:
for (int i = 0; i < 10; i++) { if (i == 5) { break; // thoát khỏi vòng lặp khi i = 5 } cout << i << " "; }
Kết quả:
Đoạn code này sẽ in ra những giá trị như: ‘0 1 2 3 4’.
2. Lệnh ‘Continue’: thường được dùng để loại bỏ những câu lệnh phía dưới nó trong vòng lặp và tiếp tục thực hiện vòng lặp sau đó.
Ví dụ:
for (int i = 0; i < 10; i++) { if (i == 5) { continue; // bỏ qua câu lệnh bên dưới nó khi i = 5 } cout << i << " "; }
Kết quả:
Đoạn code này xuất ra những giá trị: ‘0 1 2 3 4 6 7 8 9’
3. Lệnh ‘goto’: dùng để thay đổi quyền kiểm soát tới một nhãn được đặt trước đó trong dự án C++.
Ví dụ:
int i = 0; loop: cout << i << " "; i++; if (i < 10) { goto loop; // chuyển quyền kiểm soát đến nhãn "loop" }
Kết quả:
Đoạn code này hiển thị kết quả với những giá trị: ‘0 1 2 3 4 5 6 7 8 9’.
Hãy nhớ dùng lệnh ‘goto’ sẽ gây ra tình trạng mã lộn xộn và khó bảo trì về sau nên các bạn cần phải chú ý đến điều này.
Tổng kết
Vòng lặp trong C++ thật ra không quá phức tạp như bạn nghĩ. Chúng tôi đã tổng hợp và điểm qua từng dạng vòng lặp với mong muốn giúp các bạn cảm thấy hứng thú hơn trong việc nghiên cứu và thực hành chúng về sau. Xin chân thành cám ơn quý đọc giả đã theo dõi và ủng hộ cho blog trong suốt thời gian vừa qua.