Pętla nieskończona

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji, wyszukiwania

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 się zawiesił.

Przykład c/c++/java/c#/python[edytuj | edytuj kod]

W językach C[6][7][8], C++[8], Java, C#, Python:

while(true) {
  // coś robimy
}

albo

for (;;) {
  // coś robimy
}

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 normalnie nie występuje taka instrukcja (np. Pascal[9]Turbo Pascal[10]).

repeat
   if <warunek> then break;

until false;

Przypisy

  1. 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.)
  2. Jan Bielecki: Język FORTH. Warszawa: Wydawnictwa Naukowo-Techniczne, 1988, seria: Mikrokomputery. ISBN 83-204-0930-6. (pol.)
  3. Jan Ruszczyc: Poznajemy FORTH. Warszawa: SOETO, 1987, seria: Informatyka mikrokomputerowa. (pol.)
  4. Ralph E. Griswold, Madge T. Griswold: Icon. Warszawa: Wydawnictwa Naukowo-Techniczne, 1987, seria: Biblioteka Inżynierii Oprogramowania. ISBN ISBN 83-204-0871-7. (pol.)
  5. Niklaus Wirth: Modula 2. Warszawa: Wydawnictwa Naukowo-Techniczne, 1987, seria: Biblioteka Inżynierii Oprogramowania. ISSN 0867-6011. ISBN 83-204-0828-8. (pol.)
  6. 6,0 6,1 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.)
  7. 7,0 7,1 Jan Bielecki: Turbo C z grafiką na IBM PC. Warszawa: Wydawnictwa Naukowo-Techniczne, 1990, seria: Mikrokomputery. ISBN 83-204-1101-7. (pol.)
  8. 8,0 8,1 8,2 Jan Bielecki: Od C do C++, programowanie obiektowe w języku C. Warszawa: Wydawnictwa Naukowo-Techniczne, 1990. ISBN 83-204-1332-X. (pol.)
  9. Michał Iglewski, Jan Madey, Stanisław Matwin: Pascal. Język wzorcowy – Pascal 360. Wyd. wydanie trzecie – zmienione. Warszawa: Wydawnictwa Naukowo-Techniczne, 1984, seria: Biblioteka Inżynierii Oprogramowania. ISSN 0867-6011. ISBN 83-85060-53-7. (pol.)
  10. Andrzej Marciniak: Borland Pascal 7.0. Poznań: Nakom, 1994, seria: Biblioteka Użytkownika Mikrokomputerów. ISSN 0867-6011. ISBN 83-85060-53-7. (pol.)