Vòng lặp for trong C++ (có bài tập thực hành)
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.
Bài viết này được đăng tại [free tuts .net]
Cú pháp vòng lặp for
Cú pháp của vòng lặp for
trong C++ như sau:
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ặpfor
.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ặpfor
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++.
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.
#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:
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:
#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<< "\n"; } } return 0; }
Và kết quả sau khi thực thi đoạn code trên:
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:
#include <iostream> using namespace std; int main () { for(int i=1;i<=3;i++) { cout << "Vong lap for cap 1" << "\n"; for(int j=1;j<=3;j++) { cout << "Vong lap for cap 2" << "\n"; for(int j=1;j<=3;j++) { cout << "Vong lap for cap 3" << "\n"; for(int j=1;j<=3;j++) { cout << "Vong lap for cap 4" << "\n"; } } } } 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:
#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:
#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:
#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:
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:
#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 << "\n"; } cout << "Vong lap for thieu tham so thu ba: " << endl; for(int j = 1;j <= 3;) { cout << "Gia tri bien j = " << j << "\n"; 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 << "\n"; z++; } }
Và kết quả của đoạn code trên:
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ả:
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é.
7. Bài tập vòng lặp for trong C++
- C++ - In tất cả các số chẵn từ 1 đến n được nhập từ bàn phím
- C++ - Đảo ngược một số nguyên bất kỳ được nhập từ bàn phím
- C++ - In ra hình tam giác với các ký tự *
- C++ - In ra màn hình bảng cửu chương của một số nhập từ bàn phím
- C++ - Tính giai thừa của một số được nhập từ bàn phím
- C++ - Tìm tất cả ước của một số nguyên được nhập từ bàn phím
- C++ - Tính lũy thừa của một số nguyên được nhập từ bàn phím
- C++ - Tìm ước chung lớn nhất của 2 số nguyên được nhập từ bàn phím