Vòng Lặp For Trong C++

Vòng Lặp For Trong C++

Trong bài này chúng ta sẽ cùng tìm hiểu về vòng lặp for trong C++, kết thúc bài học mình cũng có soạn 1 số bài tập vòng lặp for trong C++ có lời giải nhé.

Vòng lặp là một khái niệm khá trừu tượng, nó thể hiện cho một hành động được lặp đi lặp lại nhiều lần và sẽ có một số lần lặp cụ thể.

Ví dụ hằng ngày các em học sinh sẽ đi học, đó là một hành động được lặp đi lặp lại nhiều lần trong 9 tháng, và điều kiện dừng vòng lặp là khi đến mùa hè. Đó là thực tế, còn trong lập trình C++ thì như thế nào? Chúng ta cùng tìm hiểu ngay nhé.

I. Vòng Lặp For Trong C++ Là Gì

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

Cú pháp

Cú pháp của 1 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 sao 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 đến 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 tính 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òng Lặp For Trong C++ Là Gì
Vòng Lặp For Trong C++ Là Gì

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 For Trong C++ Là Gì
Vòng Lặp For Trong C++ Là Gì

II. Cú Pháp Về 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 được sử dụng để thực thi số lần lặp cụ thể.

Cú pháp

Cú pháp của vòng lặp for trong ngôn ngữ lập trình C là:

for (khoi_tao_bien ; check_dieu_kien ; tang/giam_bien) {  
    // Khối lệnh được thực thi
}

Luồng điều khiển trong vòng lặp for:

  • Bước khoi_tao_bien được thực thi đầu tiên, và chỉ 1 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 cũng có thể không cần phải đặt 1 khai báo ở đây, miễn sao khai báo dấu chấm phảy (;).
  • Tiếp theo, check_dieu_kien được đánh giá. Nếu nó là true, phần thân của vòng lặp được thực thi. Nếu nó là false, phần thân của vòng lặp không thực thi và luồng điều khiển nhảy tới câu lệnh kế tiếp ngay sau vòng lặp for.
  • Sau khi phần thân của vòng lặp for được thực thi, luồng điều khiển nhảy ngược lại lên câu lệnh tang/giam_bien. Câu 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. Câu lệnh này có thể để trống, miễn là khai báo dấu chấm phảy (;)
  • check_dieu_kien được đánh giá lại. Nếu nó là true, vòng lặp thực hiện và quá trình lặp lại chính nó (phần thân của vòng lặp, sau đấy là bước tang/giam_bien, và sau đó lại check_dieu_kien). Sau khi điều kiện là false, vòng lặp for kết thúc.
Cú Pháp Về Vòng Lặp For Trong C++
Cú Pháp Về Vòng Lặp For Trong C++

III. Cách Dùng Vòng Lặp For Trong C++

 

IV. Ví Dụ Về Vòng Lặp For Trong C++

Ví dụ 1: Mình sẽ lấy một ví dụ về vòng lặp for đơn giản nhất đó là in các giá trị từ 1 đến 4 ra màn hình.

Ví dụ

#include <iostream>
using namespace std;
  
int main () {
   
    for( int i = 1; i < 5; i = i + 1 ) {
    cout << "Gia tri cua bien i: " << i << endl;
    }
  
    return 0;
}

Và kết quả sau khi thực thi đoạn code trên:

Ví Dụ Về Vòng Lặp For Trong C++
Ví Dụ Về Vòng Lặp For Trong C++

Mình xin được giải thích kết quả trên như sau:

  • Khởi tạo biến i = 1, kiểm tra điều kiện 1 < 5, điều kiện đúng nên thực thi đoạn code bên trong vòng lặp for
  • Tăng biến i lên 1, lúc này i = 2, kiểm tra điều kiện 2 < 5, điều kiện vẫn còn đúng nên tiếp tục thực thi đoạn code bên trong vòng lặp for
  • Tương tự tiếp tục tăng biến i lên 1, lúc này i = 3, 4, kiểm tra điều kiện 3, 4 < 5, điều kiện vẫn còn đúng nên tiếp tục thực thi đoạn code bên trong vòng lặp for
  • Khi biến i tăng lên bằng 5, kiểm tra điều kiện 5 < 5 là sai, nên kết thúc vòng lặp for.

V. Thoát Vòng Lặp For Trong C++

Hướng dẫn cách sử dụng lệnh break trong C++. Bạn sẽ học được cách dùng lệnh break để thoát khỏi vòng lặp trong C++ sau bài học này.

Lệnh break trong C++

Lệnh break trong C++ được sử dụng để thoát khỏi vòng lặp trong C++ khi điều kiện chỉ định được thỏa mãn. Các vòng lặp trong C++ như vòng lặp while hoặc vòng lặp for sẽ buộc phải kết thúc khi câu lệnh break được thực thi.

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

break;

Câu lệnh break trong C++ được sử dụng kết hợp với câu lệnh if trong C++ và được miêu tả trong khối lệnh while hoặc khối lệnh for giống như sau đây:

while (biểu thức điều kiện while) {
    Câu lệnh 1 ;
    Câu lệnh 2 ;
    if (biểu thức điều kiện if){
        break;
        }
}

Sử dụng lệnh break để thoát khỏi vòng lặp for trong C++

Chúng ta sử dụng lệnh break để thoát khỏi vòng lặp for trong C++ theo điều kiện mà bạn muốn. Lệnh for sẽ dừng lại khi lệnh break được thực hiện, tất cả các xử lý sau lệnh break cũng như các lượt lặp còn lại trong lệnh for đều bị dừng giữa chừng.

Ví dụ, chúng ta dừng lệnh tính tổng một dãy số nguyên dương nhỏ hơn 10 khi tổng đó lớn hơn 5 như sau:

#include <iostream>
using namespace std;
int main(){
    int sum = 0;
    for (int i = 1; i <=10; i++){
        sum += i ;
        cout << i << endl;
        if (sum >= 5){
            break;
        }
        
    }
    cout << "Tong: "<<sum;

    return 0;
}

// 1
// 2
// 3
// Tong: 6
Thoát Vòng Lặp For Trong C++
Thoát Vòng Lặp For Trong C++

VI. Cách Sử Dụng Vòng Lặp For Trong C++

Trong bài hôm nay, mình sẽ giới thiệu cho các bạn về cấu trúc vòng lặp thứ 3, và cũng là một cấu trúc vòng lặp được sử dụng nhiều nhất trong C++, đó là Vòng lặp For trong C++ (For statements).

Vòng lặp for (for statements)

Vòng lặp for là một cấu trúc lặp được sử dụng nhiều nhất trong ngôn ngữ C++, nó hoàn toàn có thể thay thế cho vòng lặp while. Lập trình viên thường sử dụng vòng lặp for khi biết trước số lần lặp của vòng lặp.

Cú pháp của vòng lặp for:

for (init-statement; condition-expression; end-expression)
{
    statements;
}

Để dễ hình dung, vòng lặp for sẽ tương đương với vòng lặp while bên dưới:

{ // note the block here
   init-statement;
   while (condition-expression)
   {
      statements;
      end-expression;
   }
} // variables defined inside the loop go out of scope here

Nguyên lý hoạt động của vòng lặp for gồm 3 bước thực thi:

  1. init-statement: phần này có mục đích định nghĩa và khởi tạo biến, chỉ được thực thi 1 lần duy nhất trong lần lặp đầu tiên.
  2. condition-expression: phần này gồm các biểu thức điều kiện, nếu biểu thức điều kiện đúng, các câu lệnh trong vòng lặp sẽ được thực thi.
  3. end-expression: phần này được thực thi cuối mỗi lần lặp, sau khi các câu lệnh trong vòng lặp for được thực thi. Phần này thường có mục đích tăng hoặc giảm giá trị các biến vòng lặp. Sau khi thực thi xong, vòng lặp quay lại kiểm tra điều kiện lặp ở bước 2.
    Ví dụ: bên dưới là vòng lặp for có mục đích xuất các số từ 0 đến 9.

Ví dụ: bên dưới là vòng lặp for có mục đích xuất các số từ 0 đến 9.

for (int count = 0; count < 10; ++count)
   cout << count << " ";

Chuyển ví dụ trên về vòng lặp while:

{ // dấu ngoặc này là bắt buộc
   int count = 0;
   while (count < 10)
   {
      cout << count << " ";
      ++count;
   }
}

Output: 0 1 2 3 4 5 6 7 8 9

Trong ví dụ trên, vòng lặp for và while là như nhau, nhưng cách trình bày của vòng lặp while dài và phức tạp hơn. Cặp dấu ngoặc nhọn bên ngoài vòng lặp while là bắt buộc, vì biến count có phạm vi vòng lặp, nó sẽ bị hủy khi vòng lặp kết thúc.

Một số ví dụ khác về vòng lặp for:

#include <iostream>  
using namespace std;

int main() 
{
   for (int i = 10; i > 0; i--) {
      cout << i << ' ';
   }
   // Output: 10 9 8 7 6 5 4 3 2 1  

   for (int i = 10; i < 20; i = i + 2) {
      cout << i << ' ';
   }
   // Output: 10 12 14 16 18  

   return 0;
}

Lược bỏ các thành phần trong vòng lặp for

Vòng lặp for cho phép bỏ qua một hoặc tất cả các thành phần nếu không sử dụng chúng.

Ví dụ: bên dưới là chương trình xuất các số từ 0 đến 9.

#include <iostream>
using namespace std;

int main()
{
   int count = 0;
   for (; count < 10; )
   {
      cout << count << " ";
      ++count;
   }

   return 0;
}

Output: 0 1 2 3 4 5 6 7 8 9

Trong ví dụ trên, biến vòng lặp được khởi tạo bên ngoài, và được tăng giá trị bên trong vòng lặp. Phần khởi tạo và cập nhật giá trị của vòng lặp được để trống.

Không như những vòng lặp khác, vòng lặp for có thể bỏ qua cả 3 thành phần, nó sẽ tạo ra 1 vòng lặp vô hạn:

for (;;)
{
    statements;
}

Cấu trúc trên tương đương với:

while (true)
{
   statements;
}

Ví dụ về vòng lặp for vô hạn:

for (;;)
{
   cout << "infinite loop";
}

Nhiều thành phần trong mỗi phần của vòng lặp for

Trong trường hợp vòng lặp for cần làm việc với nhiều biến, có nhiều điều kiện dừng, hoặc có nhiều biến cần cập nhật giá trị, lập trình viên có thể sử dụng toán tử phẩy “,” để tạo thêm nhiều thành phần trong mỗi phần.

Ví dụ:

#include <iostream>
using namespace std;

int main()
{
   for (int i = 5, j = 10; i + j < 20; i++, j++) 
   {
      cout << i << " + " << j << " = " << (i + j) << '\n';
   }

   return 0;
}
Cách Sử Dụng Vòng Lặp For Trong C++
Cách Sử Dụng Vòng Lặp For Trong C++

VII. Chú Ý Vòng Lặp Vô Hạn Trong C++

Cùng tìm hiểu về vòng lặp vô hạn trong C++. Bạn sẽ biết vòng lặp vô hạn trong C++ là gì, cách tạo ra vòng lặp vô hạn trong C++ cũng như là cách thoát khỏi vòng lặp vô hạn trong C++ sau bài học này.

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

Vòng lặp vô hạn trong C++ là một chuỗi các lệnh mà khi được viết ra sẽ kéo dài vô tận, trừ khi có sự can thiệp từ bên ngoài. Vòng lặp vô hạn có thể được thực hiện một cách có chủ đích.

Đại diện tiêu biểu cho vòng lặp vô hạn trong C++ là lệnh while true trong C++ khi không được kèm điều kiện để thoát vòng lặp.

Dưới đây là một ví dụ:

#include <iostream>
using namespace std;
int main(){
    while(1==1){
      cout << "hello\n";
    }
    return 0;
}

Nếu chạy lệnh trên, do biểu thức điều kiện của lệnh while luôn là True (đúng) mà không có biểu thức nào để thay đổi nó cả, nên dòng chữ hello sẽ được in ra màn hình mãi mãi.

hello
hello
hello
hello
hello
hello
hello
hello
hello
hello
.....
.....

Cách tạo ra vòng lặp vô hạn trong C++

Ngoại trừ những trường hợp đặc biệt thì trong phần lớn các trường hợp, chúng ta đã vô tình tạo ra vòng lặp vô hạn trong C++ trong các lỗi logic khi xử lý vòng lặp.

Ví dụ, bạn có thể vô tình tạo ra vòng lặp vô hạn khi sử dụng lệnh while trong C++. Khác với lệnh for trong C++ chỉ lặp lại đúng số lần bằng chỉ định trong biến đếm thì lệnh while trong C++ sẽ lặp liên tục chừng nào biểu thức điều kiện của nó vẫn còn True (đúng).

Nói cách khác, nếu bạn vô tình chỉ định biểu thức điều kiện trong lệnh while luôn True (đúng), lệnh while lúc này sẽ tạo ra một vòng lặp vô hạn trong C++.

Dưới đây là một ví dụ bạn đã vô tình tạo ra vòng lặp vô hạn trong C++ với lệnh while:

#include <iostream>
using namespace std;
int main(){
    int num = 0;
    while( num < 4 ){
        if (num == 2){
             cout << "!!CONTINUE!!\n";
            continue;
        }
        cout << num << endl;
        num ++;
    }
    return 0;
}


//> 0
//> 1
//> !!CONTINUE!!
//> !!CONTINUE!!
//> !!CONTINUE!!
//>> ...........
//>> ...........

Trong câu lệnh trên, mục đích của chúng ta là bỏ qua lượt lặp khi num = 2, tuy nhiên do giá trị của num trong trường hợp num=2 không được thay đổi và luôn bằng 2, dẫn đến biểu thức điều kiện num <4 luôn đúng và BOOM, bạn đã vô tình tạo ra vòng lặp vô hạn trong C++.

Bạn cũng có thể vô tính tạo ra vòng lặp vô hạn khi sử dụng lệnh for trong C++. Dưới đây là một ví dụ:

#include <iostream>
using namespace std;
int main(){
    int myarray[] = {0, 1}; 
    int length = sizeof(myarray) / sizeof(int);
    
    for (int i = 0; 1 <length ;i++){
        cout << i << endl;
    } 
    return 0;
}
//> 0
//> 1
//> 2
//> 3
//> 4
//> .................
//> .................

Khi thực hiện câu lệnh trên, bạn muốn tạo một vòng lặp với số lần lặp bằng với số phần tử trong mảng. Tuy nhiên bạn đã viết nhầm chữ i thành số 1 trong biểu thức điều kiện của vòng lặp, và BOOM, bạn đã vô tình tạo ra vòng lặp vô hạn trong C++.

Một vòng lặp vô hạn trong C++ sẽ không có điểm dừng, dẫn đến chương trình không bao giờ được kết thúc và vô tình tiêu tốn rất nhiều bộ nhớ máy tính và CPU.. Các tác hại của nó có thể kể đến như:

  • Trình duyệt bị đóng băng
  • Không thể đóng lại trang đang mở
  • Có trường hợp chúng ta phải khởi động lại máy tính

Vòng lặp vô hạn giống như đại dịch covid sẽ tiêu diệt toàn bộ nhân loại nếu chúng ta không để ý đến nó vậy. Do đó khi sử dụng vòng lặp trong C++, hãy chú ý để không vô tình tạo ra một vòng lặp vô hạn. Trong trường hợp bạn cần sử dụng tới vòng lặp vô hạn trong C++, hãy đảm bảo rằng mình đã chuẩn bị một cách để thoát ra khỏi vòng lặp vô hạn đó.

Cách thoát khỏi vòng lặp vô hạn trong C++

Về cơ bản, cách tốt nhất để thoát khỏi vòng lặp vô hạn trong C++ đó là bạn ĐỪNG tạo ra nó. Trong trường hợp bạn cần sử dụng tới vòng lặp vô hạn trong C++, hãy đảm bảo rằng mình đã chuẩn bị một cách để thoát ra khỏi vòng lặp vô hạn đó bằng cách thêm biểu thức điều kiện, dùng lệnh if hoặc lệnh break bên trong vòng lặp.

Tuy nhiên, giả sử nếu bạn lỡ chạy một vòng lặp vô hạn trong C++ thì cũng đừng lo lắng. Chúng ta có thể chấm dứt chương trình đó và thoát khỏi vòng lặp vô hạn trong C++ bằng cách sử dụng các tổ hợp phím tùy vào hệ điều hành như sau:

Windows Ctrl + C++

Mac Control + C++

Chú Ý Vòng Lặp Vô Hạn Trong C++
Chú Ý Vòng Lặp Vô Hạn Trong C++

VIII. Bài Tập Vòng Lặp For Trong C++

Vòng lặp là một khái niệm cơ bản của ngôn ngữ lập trình và được sử dụng rất nhiều trong các giải thuật. Ngoài việc nắm vững lý thuyết, bạn cũng cần luyện tập thường xuyên để nắm vững kiến thức và thuần thục cách sử dụng vòng lặp. Bài viết dưới đây sẽ tổng hợp cho bạn bài tập vòng lặp C++ có lời giải đầy đủ và chi tiết.

Bài tập C++: in các số từ 1-10 theo thứ tự tăng dần

Đây là một bài tập đơn giản giúp bạn làm quen với cách sử dụng vòng lặp for trong C++.

Dưới đây là chương trình C++ để in các số 1-10 theo thứ tự tăng dần.

/**
 * in cac so tu 1 den 10 theo thu tu tang dan
 * 
 * @author viettuts.vn
 */
#include <iostream> 
using namespace std; 
  
int main() {
   int i, start, end;
  
   start = 1;
   end = 10;
     
   cout << "In cac so theo thu tu tang dan:\n";
   for(i = start; i <= end; i++) 
      cout << i << endl;
  
   return 0;
}

Kết quả:

Bài Tập Vòng Lặp For Trong C++
Bài Tập Vòng Lặp For Trong C++

Bài tập C++: In các số từ 1-10 theo thứ tự giảm dần

Yêu cầu là in các số từ 1 tới 10 theo thứ tự giảm dần. Với bài tập C++ này, chúng ta chỉ cần sử dụng một vòng lặp for trong C++.

Dưới đây là chương trình C++ để in các số 1-10 theo thứ tự giảm dần.

/**
 * in cac so tu 1 den 10 theo thu tu giam dan
 * 
 * @author viettuts.vn
 */
#include <iostream> 
using namespace std; 
  
int main() {
   int i, start, end;
  
   start = 1;
   end = 10;
     
   cout << "In cac so theo thu tu giam dan:\n";
   for(i = end; i >= start; i--)  
      cout << i << endl;
  
   return 0;
}

Kết quả:

Bài Tập Vòng Lặp For Trong C++
Bài Tập Vòng Lặp For Trong C++

Bài tập C++: in bảng số từ 1 đến 100

In một bảng số thỏa mãn điều kiện:

  • Bảng số gồm 10 hàng và 10 cột
  • Các giá trị trong C++ột là liên tiếp nhau
  • Các giá trị trong hàng hơn kém nhau 10

Với bài tập C++ này, chúng ta sử dụng lồng vòng lặp: vòng lặp bên ngoài sẽ điều khiển các hàng và vòng lặp bên trong điều khiển các cột.

Dưới đây là chương trình C++ để giải bài tập C++ trên:

/**
 * in bang so tu 1 den 100
 * 
 * @author viettuts.vn
 */
#include <iostream> 
#include <iomanip>
using namespace std; 
  
int main() {
   int i, j, count;
     
   cout << "In bang so: " << endl;
   for(i = 1; i <= 10; i++) {
      for(j = i; j <=100; j += 10 ) {
         cout << setw(5) << j;
      }
      cout << endl;
   }
  
   return 0;
}

Kết quả:

Bài Tập Vòng Lặp For Trong C++
Bài Tập Vòng Lặp For Trong C++

Đánh Giá Chất Lượng Bài Viết

Average rating 5 / 5. Vote count: 1

No votes so far! Be the first to rate this post.

Leave a Reply

Your email address will not be published. Required fields are marked *

Hotline: 0984.876.750
Chat Facebook
Gọi điện ngay