Pętla nieskończona
Pętla nieskończona to pętla, która nigdy nie zostanie zakończona, ponieważ nigdy nie zajdzie warunek zakończenia pętli. Może być to działanie celowe, stosowane w celu napisania programu nie kończącego nigdy swojego działania (por. serwer, daemon). W praktyce zdarza się, że takie pętle okazują się jednak skończone ze względu na biegnące równolegle procesy, które mogą wywołać pewne zdarzenia – zarówno informatyczne (np. przerwania), jak i fizyczne (np. awaria sprzętu).
Niektóre języki programowania mają w swojej składni pętle nieskończone (obok innych – skończonych – instrukcji pętli), np.:
loop ... end loop
BEGIN ... AGAIN
repeat wyrażenie
LOOP ... END
DO FOREVER ... END
Powstanie pętli nieskończonej może też być błędem programisty, który źle określił warunek zakończenia pętli. O programie komputerowym, który wykonuje pętlę nieskończoną, czasami mówi się, że „zawiesił się”.
Przykłady w C/C++/Java/C#/Python
edytujW językach C[6][7][8], C++[8], Java, C#, Python:
while(true) { // dowolne operacje, „true''”'' można zastąpić dowolną wartością różną od zera. }
albo
for (;;) { // dowolne operacje }
albo
while True: print "pętla nieskończona"
W wielu językach istnieje instrukcja bezwarunkowego wyjścia z pętli (np. w języku C[6][7][8]) lub w nowszych implementacjach języków, w których standardowo nie występuje taka instrukcja (np. Pascal[9] – Turbo Pascal[10]).
repeat if <warunek> then break; until false;
Przypisy
edytuj- ↑ A. Nico Habermann, Dewayne E. Perry: Ada dla zaawansowanych. Warszawa: Wydawnictwa Naukowo-Techniczne, 1989, seria: Biblioteka Inżynierii Oprogramowania. ISBN 83-204-1058-4. (pol.).
- ↑ Jan Bielecki: Język FORTH. Warszawa: Wydawnictwa Naukowo-Techniczne, 1988, seria: Mikrokomputery. ISBN 83-204-0930-6. (pol.).
- ↑ Jan Ruszczyc: Poznajemy FORTH. Warszawa: SOETO, 1987, seria: Informatyka mikrokomputerowa. (pol.).
- ↑ Ralph E. Griswold, Madge T. Griswold: Icon. Warszawa: Wydawnictwa Naukowo-Techniczne, 1987, seria: Biblioteka Inżynierii Oprogramowania. ISBN 83-204-0871-7. (pol.).
- ↑ Niklaus Wirth: Modula 2. Warszawa: Wydawnictwa Naukowo-Techniczne, 1987, seria: Biblioteka Inżynierii Oprogramowania. ISBN 83-204-0828-8. ISSN 0867-6011. (pol.).
- ↑ a b Brian W. Kernighan, Dennis M. Ritche: Język C. Warszawa: Wydawnictwa Naukowo-Techniczne, 1988, seria: Biblioteka Inżynierii Oprogramowania. ISBN 83-204-1067-3. (pol.).
- ↑ a b Jan Bielecki: Turbo C z grafiką na IBM PC. Warszawa: Wydawnictwa Naukowo-Techniczne, 1990, seria: Mikrokomputery. ISBN 83-204-1101-7. (pol.).
- ↑ a b c Jan Bielecki: Od C do C++, programowanie obiektowe w języku C. Warszawa: Wydawnictwa Naukowo-Techniczne, 1990. ISBN 83-204-1332-X. (pol.).
- ↑ Michał Iglewski, Jan Madey, Stanisław Matwin: Pascal. Język wzorcowy – Pascal 360. Wyd. trzecie – zmienione. Warszawa: Wydawnictwa Naukowo-Techniczne, 1984, seria: Biblioteka Inżynierii Oprogramowania. ISBN 83-85060-53-7. ISSN 0867-6011. (pol.).
- ↑ Andrzej Marciniak: Borland Pascal 7.0. Poznań: Nakom, 1994, seria: Biblioteka Użytkownika Mikrokomputerów. ISBN 83-85060-53-7. ISSN 0867-6011. (pol.).