1.Vòng lặp while

Cũng giống như câu lệnh if-else , vòng lặp while bắt đầu với một điều kiện. Đầu tiên, giá trị điều kiện được đánh giá, nếu nó là true thì các câu lệnh trong phần thân của while được thực thi.

Sau khi thực hiện bên trong của vòng lặp while, điều kiện được kiểm tra lại, nếu nó vẫn đúng thì một lần nữa các câu lệnh trong của vòng lặp while được thực thi. Quá trình này tiếp tục lặp lại cho đến khi điều kiện trở thành sai.

Vì vậy, bạn phải luôn cần bao gồm một câu lệnh làm thay đổi giá trị của điều kiện để nó kết thúc vòng lặp.

Cú pháp vòng lặp while loop:

while(condition) {
   CodeBlook(s);
   Increment;
}

Trong đó:

  • 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

Xét ví dụ dưới đây, tôi dùng vòng lặp while để in ra màn hình dòng chữ Laptrinhtudau0, Laptrinhtudau1, Laptrinhtudau2……Laptrinhtudau10

#include <stdio.h>
int main () {
   // Khoi tao bien i bang 0
   int i = 0;
   // Dung vong lap while de hien thi dong chu "Laptrinhtudau0", "Laptrinhtudau1", "Laptrinhtudau2"..."Laptrinhtudau10"
   while(i <= 10 ) {
      printf("Laptrinhtudau%d \n", i);
      i++;
   }
   return 0;
}
Laptrinhtudau0

Laptrinhtudau1

Laptrinhtudau2

Laptrinhtudau3

Laptrinhtudau4

Laptrinhtudau5

Laptrinhtudau6

Laptrinhtudau7

Laptrinhtudau8

Laptrinhtudau9

Laptrinhtudau10

Giải thích ví dụ:

  • Tạo một biến i bên ngoài vòng lặp có giá trị bằng 0 (biến điều kiện)
  • Điều kiện lặp của vòng lặp là 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ặp
  • Câu lệnh trong vòng lặp là in ra màn hình Laptrinhtudau kèm theo giá trị i của lần lặp đó
  • Tăng biến i lên một đơn vị

2.Vòng lặp do while

Trong vòng lặp do while ở phần trên các câu lệnh trong phần trong vòng lặp được thực thi sau đó điều kiện được kiểm tra. Nếu điều kiện là đúng thì một lần nữa các câu lệnh trong phần thân được thực thi.

Quá trình này tiếp tục lặp lại cho đến khi điều kiện trở thành sai. Lưu ý rằng không giống như vòng lặp while , trong do while một dấu chấm phẩy ( 😉 được đặt sau điều kiện.

Một điều đặc biệt của do while là thực hiện các khối lệnh lần đầu tiên trước khi kiểm tra điều kiện của vòng lặp. Điều đó nghĩa là các khối lệnh sẽ được chạy ít nhất 1 lần kể cả trong trường hợp điều kiện của vòng lặp là sai ngay từ ban đầu.

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

do {
   statement(s);
   Increment;
} while( condition );

Trong đó:

  • 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

Xét ví dụ tương tự ví dụ trên, tuy nhiên lần này tôi sử dụng do while và các bạn cùng xem sự khác biệt giữa while và do while:

#include <stdio.h>
int main () {
   // Khai bao bien i co gia tri bang 0
   int i = 0;
   // Dung vong lap do while de hien thi dong chu "Laptrinhtudau0", "Laptrinhtudau1", "Laptrinhtudau2"..."Laptrinhtudau10"
   do {
      printf("Laptrinhtudau%d \n", i);
      i++;
   }while( i <= 10 );
   return 0;
}
Laptrinhtudau0

Laptrinhtudau1

Laptrinhtudau2

Laptrinhtudau3

Laptrinhtudau4

Laptrinhtudau5

Laptrinhtudau6

Laptrinhtudau7

Laptrinhtudau8

Laptrinhtudau9

Laptrinhtudau10

Giải thích:

  • Khởi tạo giá trị i bên ngoài vòng lặp có giá trị bằng 0
  • Chạy câu lệnh thực hiện hiển thị ra màn hình dòng chữ Laptrinhtudau kèm theo giá trị i ở lần lặp đó
  • Tăng biến i lên một đơn vị
  • Kiểm tra điều kiện i phải nhỏ hơn hoặc bằng 10, nếu đúng thì tiếp tục lặp, nếu sai dừng lặp

Ta thấy rằng kết quả thực thi là như nhau tuy nhiên lại có một sự khác biệt của while và do while khi chương trình được thực thi.

Sự khác biệt đó là: ngay cả khi giá trị i khởi tạo ban đầu lớn hơn 10 (lớn hơn điều kiện lặp) thì vòng lặp do while trên vẫn thực hiện câu lệnh dưới đây một lần rồi mới kết thúc vòng lặp:

printf("Laptrinhtudau%d \n", i);
i++;

Giả sử ta có giá trị khởi tạo i bằng 11, kết quả chạy chương trình sẽ là:

#include <stdio.h>
int main () {
   // Khai bao bien i co gia tri bang 11
   int i = 11;
   // Dung vong lap do while de hien thi dong chu "Laptrinhtudau0", "Laptrinhtudau1", "Laptrinhtudau2"..."Laptrinhtudau10"
   do {
      printf("Laptrinhtudau%d \n", i);
      i++;
   }while( i <= 10 );
   return 0;
}
Laptrinhtudau11

Mặc dù i khởi tạo ban đầu có giá trị là 11 tuy nhiên khi chương trình chạy đến vòng lặp do while nó vẫn sẽ thực thi câu lệnh ở trong do{} rồi mới kiểm tra điều kiện, và tất nhiên điều kiện i = 11 là sai so vơi điều kiện trong while(i <= 10);

Vì thế khi chương trình thực thi ta chỉ nhận được kết quả “Laptrinhtudau11” đây cũng chính là kết quả của điều kiện sai!

3.Vòng lặp vô hạn

Trong vòng lặp khi sử dụng một điều kiện nào đó thì được ngầm hiểu là vòng lặp có điều kiện dừng (hay vòng lặp hữu hạn). Ngược lại với vòng lặp có điều kiện dừng ta có một loại vòng lặp khác là vòng lặp không điều kiện (hay vòng lặp vô hạn).

Vòng lặp vô hạn có thể là một vòng lặp for nhưng không có biểu thức điều kiện dừng bên trong.

Hay đơn giản vòng lặp vô hạn cũng có thể là vòng lặp while khi có điều kiện bên trong là true:

Việc sử dụng vòng lặp vô hạn là không nên vì việc lặp vô hạn sẽ gây ra việc tràn bộ nhớ và dẫn đến hiện tượng giật, lag khi chạy chương trình. Vì thế khi sử dụng thao tác đến vòng lặp ta luôn cần kiểm tra điều kiện dừng trước khi thực hiện chương trình! Nếu bạn đọc vẫn còn tò mò vòng lặp vô hạn là cái quái gì thì hãy thử ngay với các ví dụ trên khi thay đó hãy thay đổi while(i <= 10) bằng while(true).