Lệnh while và do…while trong C

Lệnh while và do…while

Trong lập trình, một vòng lặp sẽ được sử dụng để lặp lại các câu lệnh cho đến khi gặp một điều kiện đặc biệt.

C có 3 dạng vòng lặp:
1. for
2. while
3. do…while


Lệnh while

while (mệnh đề kiểm tra) 
{
    // các câu lệnh bên trong vòng lặp
}

Lệnh while hoạt động như thế nào?

  1. Lệnh while sẽ đánh giá mệnh đề kiểm tra trong ngoặc () là đúng hay sai.
  2. Nếu mệnh đề là đúng, các câu lệnh bên trong body của while sẽ được thực hiện. Sau đó while sẽ đánh giá lại mệnh đề kiểm tra lần nữa.
  3. Vòng lặp này sẽ được thực hiện cho đến khi while phát hiện ra mệnh đề kiểm tra là sai.
  4. Vòng lặp kết thúc.
    while flowchart

Ví dụ 1: hiển thị số từ 1 đến 5

// Print numbers from 1 to 5

#include <stdio.h>
int main()
{
    int i = 1;

    while (i <= 5)
    {
        printf("%d\n", i);
        ++i;
    }

    return 0;
}

Kết quả

1
2
3
4
5
  1. Biến i được khởi tạo với giá trị 1.
  2. i < 5 nên lệnh printf sẽ được thực hiện, giá trị 1 sẽ được in ra.
  3. ++i được thực hiện, lúc này giá trị i=2
  4. Lặp lại vòng lặp cho đến khi i=6
  5. Lúc này i>5 nên vòng lặp kết thúc, hoàn trả 0 cho hàm main.

Lệnh do…while

Cú pháp

do
{
   // các câu lệnh trong vòng lặp
}
while (mệnh đề kiểm tra);

Lệnh do..while hoạt động như thế nào?

  1. Các câu lệnh trong body của do sẽ được thực hiện trước. Sau đó, while mới kiểm tra mệnh đề đúng hay sai.
  2. Nếu mệnh đề là đúng, vòng lặp dowhile sẽ được tiếp diễn.
  3. Nếu mệnh đề sai, kết thúc vòng lặp.
    do while flowchart

Ví dụ 2: thêm số cho đến khi gặp zero

// Program to add numbers until the user enters zero

#include <stdio.h>
int main()
{
    double number, sum = 0;

    // the body of the loop is executed at least once
    do
    {
        printf("Enter a number: ");
        scanf("%lf", &number);
        sum += number;
    }
    while(number != 0.0);

    printf("Sum = %.2lf",sum);

    return 0;
}

Kết quả

Enter a number: 1.5
Enter a number: 2.4
Enter a number: -3.4
Enter a number: 4.2
Enter a number: 0
Sum = 4.70
Series Navigation<< Lệnh For trong CBreak và Continue trong C >>

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *