1.Vòng lặp là gì?
Đôi khi trong một công việc, bạn cần phải lặp đi lặp lại các bước thực hiện của công việc đó. Nếu việc thực hiện lại là ít thì bạn có thể tự lặp lại các công việc đó bằng cách thủ công, hay trong lập trình bạn có thể tự gõ lại các dòng lệnh đó vài lần. Tuy nhiên nếu số lượng lặp lại quá nhiều thì sao? Chúng ta cần phải suy nghĩ đến việc dùng một cách nào đó để lặp lại các bước theo một cách tự động mà không phải tốn sức làm thủ công lại nhiều lần. Và đó là lí do vòng lặp ra đời để giải quyết các vấn đề cần lặp lại nhiều lần.
Ta hiểu nôm na về vòng lặp trong lập trình chính là việc lặp lại một câu lệnh theo số lần nhất định với một điều kiện thỏa mãn nhất định.
Trong ngôn ngữ C ta sẽ thường gặp và sử dụng một số vòng lặp sau:
- For loop
- While loop
- Do….while
2.Vòng lặp for loop
Cú pháp của vòng lặp For loop:
for ( init; condition; increment ) { CodeBlock(s); }
Trong đó:
- Init: Là giá trị khởi tạo ban đầu của vòng lặp
- Condition: Là điều kiện để vòng lặp tiếp tục chạy
- CodeBlock: Là câu các khối lệnh được thực hiện lặp
- Increment: Là việc cập nhật giá trị để vòng lặp, lặp cho đến một số lần nhất định thỏa mãn điều kiện của Condition và dừng lại
Lưu ý: Các bước vòng lặp for thực hiện:
Xét ví dụ dưới đây, tôi dùng vòng lặp for để in ra màn hình dòng chữ Laptrinhtudau0, Laptrinhtudau1, Laptrinhtudau2……Laptrinhtudau10
#include <stdio.h> int main () { // Khai bao bien khoi tao i co gia tri bang 0 trong vong lap // Dung vong for de hien thi dong chu "Laptrinhtudau0", "Laptrinhtudau1", "Laptrinhtudau2"..."Laptrinhtudau10" for(int i = 0; i <= 10; i++ ){ printf("Laptrinhtudau%d \n", i); } return 0; }
Laptrinhtudau0
Laptrinhtudau1 Laptrinhtudau2 Laptrinhtudau3 Laptrinhtudau4 Laptrinhtudau5 Laptrinhtudau6 Laptrinhtudau7 Laptrinhtudau8 Laptrinhtudau9 Laptrinhtudau10 |
Khi vòng lặp for ở trên được chạy, thứ tự thực hiện sẽ là:
Giải thích chi tiết các bước:
- Giá trị khởi tạo của vòng lặp là i bằng 0
- Điều kiện tiếp tục lặp là giá trị i bé hơn hoặc bằng 10, nếu đúng thì tiếp tục lặp, nếu sai dừng lại
- Câu lệnh trong vòng lặp là in ra dòng chữ Laptrinhtudau kèm theo số i của mỗi lần lặp
- Sau mỗi lần lặp giá trị i tăng lên một đơn vị
3.Lồng các vòng lặp for
Cũng giống như câu lệnh if-else có thể được lồng vào bên trong một câu lệnh if-else khác, chúng ta có thể lồng bất kỳ một vòng lặp trong một vòng lặp khác.
Ví dụ, một vòng lặp for có thể được lồng vào bên trong một vòng lặp for khác hoặc bên trong vòng lặp while hoặc do while. Tương tự, while và do while cũng có thể được lồng vào nhau.
Chương trình dưới đây, được sử dụng 2 vòng lặp for lồng nhau để in ra màn hình một hình vuông có kích thước cạnh bằng 5 ngôi sao:
#include<stdio.h> int main() { //khai bao do dai canh bang 0 int row = 0, col = 0; //duyet cac hang tu 0 den 5 for(row = 0; row < 5; row++) { //duyet cac cot tu 0 den 5 for(col = 0; col < 5; col++) { //hien thi ra ngoi sao printf(" * "); } printf("\n"); } }
* * * * *
* * * * * * * * * * * * * * * * * * * * |
Giải thích ví dụ:
Ta coi hình vuông này tương tự như một bảng gồm 5 hàng và 5 cột.
Ở vòng lặp for đầu tiên (bên ngoài) được sử dụng để duyệt các giá trị ngôi sao từ các hàng theo thứ tự từ 1->5 hay từ trên suống dưới.
Ở vòng for thứ 2 (vòng for bên trong vòng for đầu tiên) được sử dụng để duyệt các giá trị ngôi sao theo cột từ 1->5 hay từ trái qua phải.
Các ví dụ lồng các vòng lặp for thường được sử dụng để duyệt các mảng 2 chiều (với 2 vòng for) hoặc mảng nhiều chiều với N vòng for lồng nhau!