06/04/2021, 14:47

Vòng lặp for trong C++ (có bài tập thực hành) - Học C++ căn bản và nâng cao

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 một 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ể. ...

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 một 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é.

1. Cấu trúc vòng lặp for trong C++

Vòng lặp for trong C++ dùng để lặp lại một đoạn code nào đó theo số lần lặp nhất định. Thường thì ta sẽ biết trước được tổng số lần lặp, và giá trị lặp sẽ là tăng dần hoặc giảm dần theo một bước nhảy xác định.

Cú pháp vòng lặp for

Cú pháp của vòng lặp for trong C++ như sau:

Cú pháp
for ( init; condition; increment ) {
   statement(s);
}

Trong đó:

  • init: là tham số dùng để khai báo và khởi tạo biến điều khiển và chỉ được chạy một lần duy nhất trong vòng lặp for.
  • condition: là điều kiện để quyết định vòng lặp tiếp tục hay kết thúc.
  • increment: biến dùng để tăng số đếm vòng lặp.
  • statement: Các câu lệnh bên trong vòng lặp for sẽ được thực thi khi điều kiện đúng.

Cả 3 tham số này là không bắt buộc, chúng ta có thể bỏ trống bất cứ tham số nào. Tuy nhiên chúng ta không được bỏ dấu ; trong cú pháp của vòng lặp for.

Trước khi đi vào các ví dụ cụ thể chúng ta cùng tìm hiểu về luồng điều khiển của vòng lặp for trong cú pháp trên như sau:

  • Bước init được thực hiện trước tiên và chỉ được thực hiện đúng duy nhất một lần. Bước này cho phép bạn khai báo và khởi tạo giá trị cho biến điều khiển trong vòng lặp for.
  • Tiếp theo, kiểm tra condition. Nếu condition là đúng, phần thân của vòng lặp for sẽ được thực thi. Nếu condition là sai, phần thân của vòng lặp for sẽ không được thực thi và vòng lặp for kết thúc.
  • Sau khi phần thân của vòng lặp for được thực thi, thì luồng điều khiển sẽ nhảy trở lại câu lệnh increment.
  • Kiểm tra condition lại lần nữa. Nếu condition là đúng, thực thi đoạn code bên trong vòng lặp và quá trình lặp lại cứ tiếp tục (phần thân của vòng lặp, sau đó đến increment, và sau đó lại kiểm tra condition). Sau khi condition trở thành sai, vòng lặp for chấm dứt.

Để hiểu rõ hơn về luồng điều kiển của vòng lặp for trong C++. Chúng ta cùng xem lưu đồ hoạt động của nó trong phần tiếp theo nhé.

Lưu đồ hoạt động

Sau đây là lưu đồ hoạt động của vòng lặp for trong C++.

for PNG

2. Ví dụ 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:

ex for JPG

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.

3. Vòng lặp for lồng nhau trong C++

Một vòng lặp for nằm trong một vòng lặp for khác, chúng ta gọi đó là lồng lặp for lồng nhau. Chúng ta cùng xem ví dụ về vòng lặp for lồng nhau sau đây:

Ví dụ
#include <iostream>  
using namespace std;  
   
int main () {  
    for(int i=1;i<=3;i++) {      
        for(int j=1;j<=3;j++) {      
            cout << "Gia tri i = " << i << " , j = " << j<< "
";      
        }     
    } 
    return 0;
} 

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

for long nhau JPG

Các bạn có thể có 3, 4 hoặc nhiều hơn vòng lặp for lồng nhau như sau:

Ví dụ
#include <iostream>  
using namespace std;  
   
int main () {  
    for(int i=1;i<=3;i++) {   
        cout << "Vong lap for cap 1" << "
";
        for(int j=1;j<=3;j++) {      
            cout << "Vong lap for cap 2" << "
";
            for(int j=1;j<=3;j++) {      
                cout << "Vong lap for cap 3" << "
";   
                for(int j=1;j<=3;j++) {      
                    cout << "Vong lap for cap 4" << "
";      
                }  
            }  
        }     
    } 
    return 0;
} 

Tuy nhiên trong thực tế các bạn nên hạn chế dùng vòng lặp for lồng nhau vì nó làm chậm chương trình của các bạn.

4. Vòng lặp for bị lặp vô hạn

Nếu chúng ta sử dụng dấu chấm phẩy kép trong vòng lặp for, nó sẽ được thực hiện vô hạn lần. Chúng ta cùng xem ví dụ đơn giản sau:

Ví dụ
#include <iostream>  
using namespace std;  
   
int main () {  
    for (; ;) {    
         cout << "Vong lap vo han";    
    }    
}

Chúng ta cùng xem một ví dụ khác về vòng lặp for vô hạn nữa, đó là điều kiện luôn luôn đúng, ví dụ như sau:

Ví dụ
#include <iostream>  
using namespace std;  
   
int main () {
    for(int i=5;i>0;i++){      
        cout << "Vong lap for vo han"; 
    }  
} 

Lưu ý: Các bạn không nên sử dụng vòng lặp for vô hạn trong chương trình nhé, rất là quy hiểm. Để tránh vòng lặp for chạy vô hạn các bạn nên xem xét kỹ lưởng điều kiện dừng của vòng lặp, hãy chắc chắn rằng sau một số vòng lặp nhất định điều kiện dừng của các bạn đưa ra sẽ sai và kết thúc vòng lặp.

5. Khởi tạo nhiều biến điều khiển trong vòng lặp for

Chúng ta có thể khởi tạo giá trị cho nhiều biến điều khiển của vòng lặp for, các biến ngăn cách nhau bởi dấu phẩy như ví dụ sau đây:

Ví dụ
#include <iostream>  
using namespace std;  
   
int main () {
    for(int i = 1, j = 5, z = 1; i < 5; i++, j++, z++) {      
        cout << "Gia tri i = " << i << ", j = " << j << ", z = " << z <<endl;
    }  
} 

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

for init JPG

6. Vòng lặp for bị khuyết các tham số

Chúng ta cùng xem một ví dụ đơn giản về vòng lặp for bị khuyết các tham số trong C++ như sau:

Ví dụ
#include <iostream>  
using namespace std; 
 
int main() { 
    int i = 1;
    cout << "Vong lap for thieu tham so thu nhat: " << endl; 
    for(;i<=3;i++){      
       cout << "Gia tri bien i = " << i << "
";      
    } 
    
    cout << "Vong lap for thieu tham so thu ba: " << endl; 
    for(int j = 1;j <= 3;) {      
        cout << "Gia tri bien j = " << j << "
"; 
        j++;
    }
    
    cout << "Vong lap for thieu tham so thu nhat va thu 3: " << endl; 
    int z = 1;
    for(;z <= 3;) {      
        cout << "Gia tri bien z = " << z << "
";
        z++;
    } 
} 

Và kết quả của đoạn code trên:

t JPG

Lưu ý: Nếu vòng lặp for thiếu tham số thứ hai sẽ trở thành vòng lặp vô hạn như ở ví dụ 3.

7. Lặp qua các phần tử mảng bằng vòng lặp for C++

Mảng là một kiểu dữ liệu có nhiều phần tử, mỗi phần tử có một số chỉ mục duy nhất và được sắp xếp thứ tự tăng dần và bắt đầu từ 0. Vì vậy ta có thể sử dụng vòng lặp for để duyệt qua các phần tử một cách dễ dàng.

#include <iostream>
using namespace std;

int main()
{
    int numbers[6] = {1, 3, 5, 7, 9, 11};
    for (int i = 0; i < 6; i++){
	cout << numbers[i] << endl;   	
    }
    return 1;
}

Kết quả:

vong lap for lap mang JPG

Kết luận: Như vậy chúng ta đã tìm hiểu xong về vòng lặp for trong C++. Ý nghĩa, cấu trúc và cách sử dụng của vòng lặp for trong C++ thì khá đơn giản như mình đã giải thích ở trên. Vì vậy các bạn không cần phải lo lắng khi mới tiếp cận nhé. Một điểm cần lưu ý khi các bạn sử dụng vòng lặp for đó là các bạn hạn chế sử dụng vòng lặp for lồng nhau, và nên tránh vòng lặp for vô hạn nhé.

Trong bài học tiếp theo mình sẽ tìm hiểu về một loại vòng lặp khác trong C++ đó là vòng lặp while. Các bạn nhớ xem tiếp nhé.

Trần Trung Dũng

15 chủ đề

2610 bài viết

Cùng chủ đề
0