Vòng lặp vô hạn
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
Đ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 = 0while is_there_more_data() do how_many = how_many + 1enddisplay "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 = 1fish = 2while birds + fish > 1 do birds = 3 - birds fish = 3 - fishend
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
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:
:Aecho Infinite Loopgoto: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 ((;;)); doecho "Infinite Loop"done
Một ví dụ trong Rust:
loop { println!("Infinite loop");}
Xem thêm
Liên kết ngoài
- Tạo một vòng lặp vô hạn trong một số ngôn ngữ lập trình trên program-idioms.org.