Pętla nieskończona to pętla, która nigdy nie kończy swojej pracy, ponieważ warunek jej zakończenia nigdy nie jest spełniony. W praktyce pętle tego typu są często stosowane w programowaniu, ale muszą być odpowiednio kontrolowane, aby uniknąć błędów i nadmiernego zużycia zasobów systemowych.
1. Składnia pętli nieskończonej
W C++ najczęściej spotykane formy pętli nieskończonej to:
a) Pętla while
z warunkiem true
while (true) {
// Kod wykonywany nieskończenie
}
b) Pętla for
bez warunków zakończenia
for (;;) {
// Kod wykonywany nieskończenie
}
📌 Obie wersje działają identycznie, ale pętla while(true)
jest bardziej czytelna w kontekście nieskończonych pętli.
2. Zastosowania pętli nieskończonej
✅ 1. Serwery i aplikacje działające w tle
Serwery (np. serwer HTTP, serwer gier) muszą działać nieprzerwanie i czekać na nowe żądania użytkowników.
Przykład: Prosty symulator serwera
#include <iostream>
using namespace std;
int main() {
while (true) {
string komenda;
cout << "Wpisz 'stop', aby zakończyć: ";
cin >> komenda;
if (komenda == "stop") {
cout << "Zatrzymywanie serwera..." << endl;
break; // Przerwanie pętli
}
cout << "Otrzymano komendę: " << komenda << endl;
}
return 0;
}
Przykładowy wynik:
Wpisz 'stop', aby zakończyć: test
Otrzymano komendę: test
Wpisz 'stop', aby zakończyć: help
Otrzymano komendę: help
Wpisz 'stop', aby zakończyć: stop
Zatrzymywanie serwera...
✅ 2. Gry komputerowe
W grach pętla nieskończona odpowiada za cykl renderowania obrazu, obsługę klawiatury, myszki itp.
Przykład: Prosta pętla symulująca grę
#include <iostream>
#include <cstdlib> // dla funkcji rand()
#include <ctime> // dla funkcji time()
using namespace std;
int main() {
srand(time(0)); // Inicjalizacja generatora liczb losowych
while (true) {
int los = rand() % 10; // Losuje liczbę od 0 do 9
cout << "Wylosowano: " << los << endl;
if (los == 7) {
cout << "Trafiłeś szczęśliwą siódemkę! Koniec gry." << endl;
break;
}
}
return 0;
}
✅ 3. Programy monitorujące i automatyczne systemy
Pętle nieskończone są wykorzystywane w systemach czuwających nad działaniem urządzeń lub w automatycznych systemach.
Przykład: Symulacja monitorowania temperatury
#include <iostream>
#include <cstdlib> // dla funkcji rand()
#include <thread> // dla funkcji sleep_for
#include <chrono> // dla określania czasu
using namespace std;
int main() {
while (true) {
int temperatura = rand() % 100; // Losowa temperatura 0-99
cout << "Aktualna temperatura: " << temperatura << "°C" << endl;
if (temperatura > 70) {
cout << "ALARM! Wysoka temperatura!" << endl;
break;
}
this_thread::sleep_for(chrono::seconds(1)); // Opóźnienie 1 sekundy
}
return 0;
}
✅ 4. Menu w programach konsolowych
Pętle nieskończone umożliwiają tworzenie menu, które działa do momentu, gdy użytkownik wybierze opcję zakończenia.
Przykład: Menu wyboru
#include <iostream>
using namespace std;
int main() {
int opcja;
while (true) {
cout << "\nMENU:\n";
cout << "1. Pokaż powitanie\n";
cout << "2. Pokaż datę\n";
cout << "3. Zakończ program\n";
cout << "Wybierz opcję: ";
cin >> opcja;
if (opcja == 1) {
cout << "Witaj w programie!" << endl;
}
else if (opcja == 2) {
cout << "Dziś jest piękny dzień!" << endl;
}
else if (opcja == 3) {
cout << "Do widzenia!" << endl;
break;
}
else {
cout << "Niepoprawna opcja, spróbuj ponownie." << endl;
}
}
return 0;
}
3. Jak uniknąć problemów z pętlami nieskończonymi?
🔹 Dodaj warunek przerwania (break
) – kluczowy element kontroli.
🔹 Upewnij się, że pętla faktycznie reaguje na dane wejściowe (np. klawiatura, komunikaty z serwera).
🔹 Zadbaj o przerwy w wykonywaniu (sleep
) – zapobiega to nadmiernemu obciążeniu CPU w niektórych przypadkach.
4. Podsumowanie
✅ Pętla nieskończona jest niezwykle przydatna w aplikacjach, które muszą działać bez końca (np. serwery, gry, systemy monitorujące).
✅ Choć potężna, wymaga odpowiedniego mechanizmu zakończenia, aby uniknąć zawieszenia programu.
✅ Pętle while(true)
i for(;;)
są najczęściej stosowanymi formami pętli nieskończonych w C++.