Vòng lặp vô hạn trong ngôn ngữ C/C++ là gì?

Vòng lặp vô hạn là gì?

Vòng lặp vô hạn là chuỗi các câu lệnh được thực hiện lặp đi lặp lại không có điểm dừng. Nguyên nhân có thể là:

  • Vòng lặp chưa có điều kết thúc vòng lặp
  • Vòng lặp có điều điều kiện để kết thúc vòng lặp nhưng điều kiện này không bao giờ được đáp ứng.
  • Hoặc có thể một logic nào đó dẫn đến lặp vô hạn (ví dụ: lệnh goto có thể tạo ra vòng lặp)
  • Chương trình bị dính vòng lặp vô hạn, chương trình có thể bị gây treo PC hoặc bị crash (nếu trong vòng lặp khai bao biến hoặc cấp phát vùng nhớ mà không giải phóng vùng nhớ).
  • Do vậy, cần tránh để xảy ra vòng lặp vô hạn trong chương trình.
  • Trong một số trường hợp (requirement), lập trình  viên không xác định chính xác được số lần lặp để xử lí 1 logic nào đó. Lúc này, lập trình viên phải sử dụng khai báo vòng lặp vô hạn for(), while(), do while().

Các dạng của vòng lặp vô hạn trong ngôn ngữ C

Vòng lặp vô hạn for

Khai báo:

for ( ; ; )
{
    // place code here
}

Ví dụ: Nhập và in ra chuỗi đã nhập. Việc nhập kết thúc khi nhập “quit”.

#include <stdio.h>
#include <string.h>
#include <conio.h>

void main()
{
    char s[100];
    for ( ; ; )
    {
        printf("\nNhap chuoi: ");
        gets(s);
        if(strcmp(s, "quit") == 0)
        {
            break;
        }
        printf("\ns = %s", s);
    }
    getch();
}
Vòng lặp vô hạn for
Vòng lặp vô hạn for

Vòng lặp vô hạn while

Khai báo:

while(1)
{
    //pleace code here
}

Ví dụ: Nhập số nguyên lớn hơn 0. Nếu nhập số <= 0, yêu cầu nhập lại.

#include <stdio.h>
#include <string.h>
#include <conio.h>

void main()
{
    int n;
    while (1)
    {
        printf("\nNhap n: ");
        scanf("%d", &n);
        if(n > 0)
        {
            break;
        }
    }
    printf("\nn = %d", n);
    getch();
}
Vòng lặp vô hạn while
Vòng lặp vô hạn while

Vòng lặp vô hạn do while

Khai báo:

do 
{
    //place code here
} while (1);

Ví dụ: Nhập số nguyên lớn hơn 0. Nếu nhập số <= 0, yêu cầu nhập lại.

#include <stdio.h>
#include <string.h>
#include <conio.h>

void main()
{
    int n;
    do
    {
        printf("\nNhap n: ");
        scanf("%d", &n);
        if(n > 0)
        {
            break;
        }
    }
    while(1);
    printf("\nn = %d", n);
    getch();
}
Vòng lặp vô hạn do while
Vòng lặp vô hạn do while

Be the first to comment

Leave a Reply

Your email address will not be published.

*