Vòng lặp trong C++

Có một tình huống mà bạn cần phải thực hiện một đoạn code một vài lần. Nhìn chung, các câu lệnh được thực hiện một cách tuần tự. Câu lệnh đầu tiên của hàm được thực hiện trước, sau đó đến câu thứ 2 và tiếp tục.

Ngôn ngữ lập trình cung cấp cho chúng ta nhiều cấu trúc điều khiển và cho phép bạn thực hiện những phần phức tạp.

Vòng lặp cho phép thực hiện một lệnh và một nhóm lệnh nhiều lần, dưới đây là dạng tổng quát:

C++ hỗ trợ vòng lặp sau đây. Click chuột vào link để xem chi tiết.

Vòng lặp Miêu tả
Vòng lặp while trong C++ Lặp lại một hoặc một nhóm các lệnh trong khi điều kiện đã cho là đúng. Nó kiểm tra điều kiện trước khi thực hiện thân vòng lặp.
Vòng lặp for trong C++ Thực thi một dãy các lệnh nhiều lần và tóm tắt đoạn code mà quản lý biến vòng lặp.
Vòng lặp do…while trong C++ Giống lệnh While, ngoại trừ ở điểm là nó kiểm tra điều kiện ở cuối thân vòng lặp.
Lồng vòng lặp trong C++ Bạn có thể sử dụng một hoặc nhiều vòng lặp trong các vòng lặp while, for hoặc do..while khác.

Vòng lặp while trong C/C++

Một lệnh vòng lặp while trong Ngôn ngữ chương trình C/C++ thực hiện lặp đi lặp lại một lệnh mục tiêu đến khi nào điều kiện đã cho còn là đúng.

Cú pháp

Cú pháp của vòng lặp while trong Ngôn ngữ chương trình C/C++ là:

while(dieu_kien) 
{ 
  cac_lenh; 
}

Ở đây, cac_lenh có thể là lệnh đơn hoặc một khối các lệnh. dieu_kien có thể là bất kỳ biểu thức nào, và giá trị true là bất kỳ giá trị nào khác 0. Vòng lặp lặp đi lặp lại trong khi dieu_kien là true.

Khi điều kiện trở thành false, chương trình điều khiển ngay lập tức chuyển tới dòng lệnh ngay sau vòng lặp.

Sơ đồ

Ở đây, điểm chính của vòng lặp while là nó có thể không chạy. Bởi vì khi kiểm tra điều kiện và kết quả là false, phần thân vòng lặp được bỏ qua và lệnh đầu tiên ngay sau vòng lặp sẽ được thực thi.

Ví dụ

#include <iostream> 
using namespace std; 
int main () 
{ 
   // Khai bao bien cuc bo: 
   int a = 4; 
   // vong lap while 
   while(a < 10) 
   { 
      cout << "Gia tri cua a la: " << a << endl; 
      a++; 
   } 
return 0; 
}

Chạy chương trình C/C++ trên sẽ cho kết quả như hình sau:

Vòng lặp for trong C++

Vòng lặp for trong C++ là một cấu trúc điều khiển lặp đi lặp lại mà cho phép bạn viết một vòng lặp một cách hiệu quả, mà cần thực hiện trong một khoảng thời gian cụ thể nào đó.

Cú pháp

Cú pháp của một vòng lặp for trong Ngôn ngữ chương trình C++ là:

for (bien; dieu_kien; tang_giam) 
{ 
  cac_lenh; 
}

Dưới đây là miêu tả dòng điều khiển trong một vòng lặp for:

Bước bien được thực hiện đầu tiên và chỉ một lần. Bước này cho phép bạn khai báo và khởi tạo bất kỳ biến điều khiển vòng lặp nào. Bạn không được yêu cầu để đặt một lệnh ở đây, miễn là một dấu chấm phảy xuất hiện.

Tiếp theo, dieu_kien được ước lượng. Nếu điều kiện là true, phần thân vòng lặp được thực thi. Nếu nó là false, phần thân vòng lặp không được thực thi và dòng điều khiển nhảy tới lệnh tiếp theo ngay sau vòng lặp for.

Sau khi phần thân vòng lặp for thực thi, dòng điều khiển nhảy tới lệnh tang_giam. Lệnh này cho phép bạn cập nhật bất kỳ biến điều khiển vòng lặp nào. Lệnh này có thể để trống, miễn là một dấu chấm phảy xuất hiện sau điều kiện.

dieu_kien bây giờ được ước lượng lần nữa. Nếu là true, vòng lặp thực thi và tiến trình lặp đi lặp lại chính nó (phần thân vòng lặp, sau đó là tang_giam, và sau đó kiểm tra điều kiện lần nữa). Sau khi điều kiện trở thành false, vòng lặp for kết thúc.

Sơ đồ:

Ví dụ:

#include <iostream> 
using namespace std; 
int main () 
{ 
    //Vòng lặp for 
    for(int a = 5; a < 15; a = a + 1) 
      { 
         cout << "Gia tri cua a la: " << a << endl; 
      } 
return 0; 
}

Chạy chương trình C++ trên sẽ cho kết quả như hình sau:

Vòng lặp do…while trong C++

Không giống như các vòng lặp for và while, mà kiểm tra điều kiện vòng lặp ở ngay bước đầu tiên của vòng lặp, vòng lặp do…while trong Ngôn ngữ C++ kiểm tra điều kiện của nó tại phần cuối của vòng lặp.

Một vòng lặp do…while là tương tự như vòng lặp while, ngoại trừ ở điểm một vòng lặp do…while bảo đảm thực hiện vòng lặp ít nhất một lần.

Cú pháp

Cú pháp của một vòng lặp do…while trong Ngôn ngữ chương trình C++ là:

do {cac_lenh;}
while(dieu_kien);

Bạn chú ý rằng, biểu thức điều kiện xuất hiện ở cuối cùng của vòng lặp, vì thế các lệnh trong vòng lặp thực hiện một lần trước khi điều kiện được kiểm tra.

Nếu điều kiện là true, dòng điều khiển vòng lặp quay trở lại, và các lệnh trong vòng lặp được thực hiện lần nữa. Tiến trình này lặp đi lặp lại tới khi nào điều kiện đã cho trở thành false.

Sơ đồ

Ví dụ:

#include <iostream> 
using namespace std; 
int main () 
{ 
   // Khai bao bien cuc bo: 
   int a = 5; 
   // Vong lap do...while 
   do 
      { 
        cout << "Gia tri cua a la: " << a << endl; 
        a = a + 1; 
      }while( a < 15 ); 
return 0; 
}

Chạy chương trình C++ trên sẽ cho kết quả như hình sau:

Lồng vòng lặp trong C++

Ngôn ngữ chương trình C++ cho phép bạn sử dụng một vòng lặp bên trong một vòng lặp. Dưới đây là một số ví dụ minh họa khái niệm này.

Cú pháp

Cú pháp để lồng vòng lặp for trong C++ như sau:

for (bien; dieu_kien; tang_giam) 
{ 
   for (bien; dieu_kien; tang_giam) 
   { 
      cac_lenh;
   } 
   cac_lenh; 
   // ban co the dat nhieu lenh tai day. 
}

Cú pháp để lồng vòng lặp while trong C++ như sau:

while(dieu_kien) 
{ 
   while(dieu_kien) 
   { 
      cac_lenh; 
   } 
   cac_lenh; 
   // ban co the dat nhieu lenh tai day. 
}

Cú pháp để lồng vòng lặp do…while trong C++ như sau:

do 
{ 
   cac_lenh; 
   // ban co the dat nhieu lenh tai day. 
   do 
   { 
      cac_lenh; 
   }while(dieu_kien); 
}while(dieu_kien);

Ví dụ

Chương trình sau sử dụng lồng vòng lặp for để tìm các số nguyên tố từ 2 đến 50:

#include <iostream> 
using namespace std; 
int main () 
{
   int i, j; 
   for(i=2; i<50; i++) { 
      for(j=2; j <= (i/j); j++) 
         if(!(i%j)) break; // neu tim thay he so, thi khong la so nguyen to 
         if(j > (i/j)) cout << i << " la so nguyen to\n"; 
   } 
return 0; 
}

Chạy chương trình C++ trên sẽ cho kết quả như hình sau:

Các lệnh điều khiển vòng lặp trong C++

Các lệnh điều khiển vòng lặp thay đổi sự thực thi lệnh từ dãy thông thường của nó. Khi sự thực thi lệnh rời khỏi một phạm vi, tất cả các đối tượng tự động mà được tạo ra trong phạm vi đó bị hủy.

C++ hỗ trợ các lệnh điều khiển vòng lặp sau đây. Click vào các đường link sau để biết thêm chi tiết.

Lệnh điều khiển Miêu tả
Lệnh break trong C++ Kết thúc vòng lặp hoặc lệnh switch và chuyển sang thực thi vòng lặp hoặc lệnh switch ngay sau nó.
Lệnh continue trong C++ Khi gặp lệnh này thì chương trình sẽ bỏ qua các câu lệnh ở dưới nó (trong cùng một câu lệnh lặp) để thực hiện vòng lặp mới.
Lệnh goto trong C++ Chuyển tới lệnh được gán. Mặc dù vậy, nó được khuyên rằng không nên sử dụng lệnh goto trong chương trình của bạn.

Lệnh break trong C++

Lệnh break trong C++ có hai cách sử dụng:

Khi lệnh break được sử dụng trong vòng lặp, vòng lặp ngay lập tức kết thúc và điều khiển chương trình bắt đầu lệnh tiếp theo sau vòng lặp.

Nó có thể được sử dụng trong lệnh switch (sẽ được nhắc đến trong chương tới).

Nếu bạn đang sử dụng các vòng lặp lồng nhau (ví dụ, một vòng lặp bên trong vòng lặp khác), lệnh break sẽ dừng thực thi một lệnh nào đó trong một vòng lặp và bắt đầu thực thi lệnh tiếp theo của đoạn code sau khối code đó.

Cú pháp

Cú pháp của lệnh break trong C++ như sau:

break;

Sơ đồ

Ví dụ

#include <iostream> 
using namespace std; 
int main () 
{ 
   // Khai bao bien cuc bo: 
   int a = 10; 
   // Vong lap do...while 
   do 
   { 
      cout << "Gia tri cua a la: " << a << endl; 
      a = a + 1; 
      if(a > 15) 
      { 
         // Ket thuc vong lap 
         break; 
      } 
   }while(a < 20); 
   return 0; 
}

Chạy chương trình C++ trên sẽ cho kết quả như hình sau:

Lệnh continue trong C++

Lệnh continue trong C++ làm việc hơi giống với lệnh break. Thay vì bắt buộc kết thúc, nó bắt buộc vòng lặp tiếp theo diễn ra, bỏ qua bất kỳ đoạn code nào ở giữa.

Với vòng lặp for, lệnh continue làm cho bước kiểm tra điều kiện và phần tang_giam của vòng lặp thực thi. Với while và do…while, lệnh continue làm điều khiển chương trình chuyển tới các kiểm tra điều kiện.

Cú pháp

Cú pháp của lệnh continue trong C++ như sau:

continue;

Sơ đồ

Ví dụ

#include <iostream> 
using namespace std; 
int main () 
{ 
    // Khai bao bien cuc bo:   
    int a = 10; 
    // vong lap do...while 
    do 
    { 
       if(a == 15) 
       { 
          // nhay qua buoc lap. 
          a = a + 1; 
          continue; 
       } 
       cout << "Gia tri cua a la: " << a << endl; 
       a = a + 1; 
    }while(a < 20); 
    return 0; 
}

Chạy chương trình C++ trên sẽ cho kết quả như hình sau:

Lệnh goto trong C++

Lệnh goto trong Ngôn ngữ chương trình C++ cung cấp một bước nhảy không điều kiện từ lệnh goto tới lệnh được gán nhãn trong cùng một hàm.

Ghi chú: Sử dụng lệnh goto gây khó khăn cho bất kỳ ngôn ngữ chương trình nào bởi vì nó gây khó khăn cho việc theo dấu dòng điều khiển của một chương trình, làm cho chương trình khó để hiểu và khó để chỉnh sửa. Bất kỳ chương trình nào sử dụng một lệnh goto có thể được viết lại để có thể không cần lệnh goto này.

Cú pháp

Cú pháp của lệnh goto trong C++ như sau:

goto label; 
.. 
. 
label: lenh;

Ở đây, label có thể là bất kỳ phần thuần văn bản nào ngoại trừ các từ khóa trong C++, và nó có thể được thiết lập bất cứ đâu trong chương trình C++, bên trên hoặc dưới lệnh goto này.

Sơ đồ

Ví dụ

#include <iostream> 
using namespace std; 
int main () 
{ 
    // Khai bao bien cuc bo: 
    int a = 10; 
    // Vong lap do...while 
    VONGLAP:do     // tai day lable la VONGLAP, va lenh la do 
    { 
        if(a == 15) 
        { 
           // nhay qua buoc lap. 
           a = a + 1; 
           goto VONGLAP; 
        } 
        cout << "Gia tri cua a la: " << a << endl; 
        a = a + 1; 
    }while(a < 20); 
    return 0; 
}

Chạy chương trình C++ trên sẽ cho kết quả như hình sau:

Một sự sử dụng tốt của lệnh goto là để thoát khỏi một vòng lặp sâu. Ví dụ, bạn xét code sau:

for(...) { 
    for(...) { 
        while(...) { 
            if(...) goto stop; 
            . 
            . 
            . 
         } 
     } 
} 
stop: 
cout << "Xuat hien loi trong chuong trinh.\n";

Với việc không có goto, chương trình sẽ thực hiện thêm nhiều kiểm nghiệm bổ sung. Trong khi đó, một lệnh break sẽ không nên được dùng ở đây, bởi vì nó sẽ chỉ làm chương trình thoát khỏi vòng lặp trong cùng.

Vòng lặp vô hạn trong C++

Một vòng lặp là vòng lặp vô hạn khi một điều kiện không bao giờ false. Vòng lặp for thường được sử dụng cho mục đích này. Khi bạn để ba biểu thức điều kiện trong vòng lặp for trống thì bạn sẽ tạo ra một vòng lặp vô hạn.

#include <iostream> 
using namespace std; i
nt main () 
{ 
     for( ; ; ) 
     { 
          printf("Vong lap nay se chay mai mai.\n"); 
     } 
     return 0; 
}

Khi biểu thức điều kiện vắng mặt, nó được giả sử là luôn đúng. Bạn có thể có một biểu thức khởi tạo và biểu thức tăng, giảm, nhưng các lập trình viên C++ thường sử dụng for(;;) để biểu thị một vòng lặp vô hạn.

Ghi chú: Bạn có thể dừng (kết thúc) một vòng lặp vô hạn bởi nhấn Ctrl + C.