Podręcznik

3. Pętle while

W trakcie projektowania oraz implementacji aplikacji często pojawia się potrzeba powtarzania grupy tych samych instrukcji. W tym przypadku konieczne jest zastosowanie pętli. W języku C++ istnieje do wyboru kilka rodzajów pętli, które są bardziej odpowiednie w różnych zadaniach. Pętle są więc instrukcjami iteracyjnymi, pozwalającymi na cykliczne wykonywanie kolejnych iteracji (cykli).

Każda pętla składa się z dwóch części:
  • treści, czyli jednej bądź więcej instrukcji, które są wykonywane podczas każdego przejścia pętli,
  • warunku, czyli wyrażenia logicznego, które steruje pracą pętli.
W tym rozdziale omówimy pętlę while, którą możemy zaliczyć do pętli o nieznanej (z góry) liczbie cykli. 

Wybierz wartość zmiennej n i zobacz, jak działa pętla while w C++ z animacją:

Składnia instrukcji while jest następująca:

while (warunek)
    instrukcja;

Analogicznie jak w przypadku instrukcji warunkowej if w przypadku pętli while wykonuje się jedna instrukcja. Jeżeli chcemy, aby w pętli wykonywało się kilka instrukcji musimy zastosować nawiasy klamrowe { }, aby uczynić z nich jedną instrukcję złożoną:


while (warunek)
{
    instrukcja_1;
    instrukcja_2;
    ...
    instrukcja_n;
} ;
    

Poniżej przedstawiono prostą symulację pokazującą w jaki sposób działa pętla while.


int n = ...;  // Aktualna wartość: ...
while (n > 0) {
    cout << "n = " << n << endl;
    n--;
}
   
Możemy zaobserwować, że w przypadku pętli while warunek jest sprawdzany na początku. Może więc się zdarzyć, że pętla nie zostanie wywołana ani razu, bo warunek już na początku nie będzie spełniony. Musimy więc zadbać o prawidłową wartość początkową zmiennych występujących w warunku. Możemy to zademonstrować na podstawie prostego przykładu wypisującego liczby całkowite podane przez użytkownika, aż do momentu gdy użytkownik poda wartość 0.
int n = 1;
while (n!=0){
    cin >> n;
    cout << n;
}
W podanym przykładzie ważna jest wartość początkowa zmiennej n. W przypadku, gdy chcemy, aby pętla wykonała się przynajmniej raz musimy określić wartość pocżatkową zmiennej n w taki sposób, aby przynajmniej raz warunek był spełniony. Później już użytkownik bedzie podawał kolejne wartości n i od niego zależy czy warunek będzie spełniony, czy nie.