Vòng lặp vô hạn

Infinite loop BSOD

Trong lập trình máy tính, vòng lặp vô hạn (hay vòng lặp vô tận)[1][2] là một chuỗi các lệnh mà khi được viết ra sẽ kéo dài vô tận, trừ khi có sự can thiệp từ bên ngoài ("pull the plug"). Vòng lặp vô hạn có thể được thực hiện một cách có chủ đích.

Tổng quan

[sửa | sửa mã nguồn]

Điều này khác với:

  • "một loại chương trình máy tính liên tục chạy các hướng dẫn giống nhau cho đến khi nó đột ngột bị gián đoạn".[3]

Cùng so sánh hai đoạn mã lệnh sau:

how_many = 0
while is_there_more_data() do
    how_many = how_many + 1
end
display "the number of items counted = " how_many

Các hướng dẫn tương tự nhau sẽ xuất hiện liên tục cho đến khi nó dừng lại hoặc bị gián đoạn... Điều này chỉ kết thúc khi giá trị của hàm is_there_more_data tại một thời điểm nào đó trả về FALSE.

birds = 1
fish = 2
while birds + fish > 1 do
    birds = 3 - birds
    fish = 3 - fish
end

birds sẽ luân phiên là 1 hoặc 2, trong khi fish cũng sẽ luân phiên là 2 hoặc 1. Vòng lặp này sẽ không dừng lại trừ khi có sự can thiệp từ bên ngoài ("pull the plug").

Một số ví dụ về vòng lặp vô hạn có chủ đích

[sửa | sửa mã nguồn]

Một ví dụ đơn giản (trong C):

#include <stdio.h>

int main()
{
 for (;;) // or equivalently, while (1)
 {
  printf("Infinite Loop\n");
 }
 return 0;
}

Câu lệnh for (;;) cho ra một vòng lặp vô hạn truyền thống, thường xuất hiện trong phần tham khảo tiêu chuẩn của cuốn The C Programming Language, và thường được phát âm theo kiểu chơi chữ là "forever".[4]

Đây là một cách tạo ra "vòng lặp vô hạn" không bao giờ dừng lại.

Một ví dụ tương tự trong ngôn ngữ BASIC thời những năm 1980:

10 PRINT "INFINITE LOOP"
20 GOTO 10

Trong tập lệnh DOS:

:A
echo Infinite Loop
goto:A

Đây là vòng lặp là khá rõ ràng, vì dòng lệnh cuối cùng gửi câu lệnh thực thi trở lại dòng lệnh đầu tiên một cách vô điều kiện.

Một ví dụ tương tự trong Java:

while (true) 
    System.out.println("Infinite Loop");

Một ví dụ trong Bourne Again Shell:

for ((;;)); do
	echo "Infinite Loop"
done

Một ví dụ trong Rust:

loop {
    println!("Infinite loop");
}

Liên kết ngoài

[sửa | sửa mã nguồn]

Tham khảo

[sửa | sửa mã nguồn]
  1. ^ “Endless loop dictionary definition”. Bản gốc lưu trữ ngày 1 tháng 8 năm 2020. Truy cập ngày 18 tháng 12 năm 2020.
  2. ^ “What is infinite loop (endless loop)”.
  3. ^ Denise Caruso (ngày 16 tháng 8 năm 1999). “Overload of Hangers-On Creates Bumpy Ride for Internet Stocks”. The New York Times.
  4. ^ “Endless loop in C/C++”. Bản gốc lưu trữ ngày 3 tháng 8 năm 2016.
Chúng tôi bán
Bài viết liên quan
Nên mua iPhone 11 Lock hay không?
Nên mua iPhone 11 Lock hay không?
Chỉ với 13 triệu đồng đã có thể sở hữu một chiếc iPhone 11 Lock, nhưng tại sao người dùng lại không nên ham rẻ?
Giới thiệu AG Lizbeth - Accountant - Artery Gear: Fusion
Giới thiệu AG Lizbeth - Accountant - Artery Gear: Fusion
Nhìn chung, Lizbeth là một phiên bản khác của Kyoko, máu trâu giáp dày, chia sẻ sát thương và tạo Shield bảo vệ đồng đội, đồng thời sở hữu DEF buff và Crit RES buff cho cả team rất hữu dụng
Chuỗi phim Halloween: 10 bộ phim tuyển tập kinh dị hay có thể bạn đã bỏ lỡ
Chuỗi phim Halloween: 10 bộ phim tuyển tập kinh dị hay có thể bạn đã bỏ lỡ
Hãy cùng khởi động cho mùa lễ hội Halloween với list phim kinh dị dạng tuyển tập. Mỗi bộ phim sẽ bao gồm những mẩu chuyện ngắn đầy rùng rợn
So sánh Hutao và Childe - Genshin Impact
So sánh Hutao và Childe - Genshin Impact
Bài viết có thể rất dài, nhưng phân tích chi tiết, ở đây tôi muốn so sánh 𝐠𝐢𝐚́ 𝐭𝐫𝐢̣ của 2 nhân vật mang lại thay vì tập trung vào sức mạnh của chúng