Listing 8.6. Pomijanie pętli while
1: // Listing 8.6
2: // Demonstracja pomijania pętli while
3: // jeśli warunek jest fałszywy
4:
5: finclude <iostream.h>
7: int main()
8: {
9: int licznik;
10: cout « "No to ile razy sie przywitamy?:
11: cin » licznik;
14: cout « "Czesc!\n";
15: licznik—;
17: cout « "licznik wynosi: " « licznik « endl;
18: return 0;
No to ile razy sie przywitamy?: 2 Czesc!
Czesc!
licznik wynosi :■ 0
No to ile razy sie przywitamy?: 0 licznik wynosi: 0
ANALIZA:
113
W linii 10 użytkownik wprowadza wartość początkową zmiennej licznik. W linii 12 sprawdzane jest, czy zmienna licznik jest większa od 0. W linii 15, wewnątrz pętli while zmienna licznik jest zmniejszana o 1. Za pierwszym razem, kiedy użytkownik podał wartość 2, pętla wykonała się dwukrotnie. Jednak za drugim razem użytkownik podał wartość 0. W linii 12 sprawdzony został warunek na wartość zmiennej licznik. Ponieważ zmienna ta była równa 0, to pętla została od razu pominięta - nie wypisane zostało ani jedno „Cześć!”
Co zrobić, jeśli chcemy, aby program wypisał „Cześć!” przynajmniej raz? Pętla while nie daje takiej możliwości, ponieważ warunek wykonania sprawdzany jest jeszcze przed wejściem do pętli. Pewnym rozwiązaniem jest nadanie odpowiedniej wartości zmiennej licznik z wykorzystaniem instrukcji if tuż przed pętlą while:
if (licznik < 1) // wymuś wartość minimalną
licznik =1;
Jednak to rozwiązanie jest dosyć naciągane i nieeleganckie.
Pętla do. . .while gwarantuje, że instrukcje w pętli zostaną wykonane przynajmniej raz. Warunek sprawdzany jest nie przed wykonaniem lecz po. Listing 8.7. demonstruje program podobny do poprzedniego jednak ze zmienioną pętlą.
113
Listing 8.6. Pomijanie pętli while
1: // Listing 8.6
2: II Demonstracja pomijania pętli while
3: II jeśli warunek jest fałszywy
4:
5: (tinclude <iostream.h>
6:
7: int main()
8: {
9: int licznik;
10: cout « "No to ile razy sie przywitamy?: ";
11: cin » licznik;
14: cout « "Czesc!\n";
15: licznik—;
17: cout « "licznik wynosi: " « licznik « endl;
18: return 0;
No to ile razy sie przywitamy?: 2 Czesc!
Czesc!
licznik wynosi: 0
No to ile razy sie przywitamy?: 0 licznik wynosi: 0
W linii 10 użytkownik wprowadza wartość początkową zmiennej licznik. W linii 12 sprawdzane jest, czy zmienna licznik jest większa od 0. W linii 15, wewnątrz pętli while zmienna licznik jest zmniejszana o 1. Za pierwszym razem, kiedy użytkownik podał wartość 2, pętla wykonała się dwukrotnie. Jednak za drugim razem użytkownik podał wartość 0. W linii 12 sprawdzony został warunek na wartość zmiennej licznik. Ponieważ zmienna ta była równa 0, to pętla została od razu pominięta - nie wypisane zostało ani jedno „Cześć!”
Co zrobić, jeśli chcemy, aby program wypisał „Cześć!" przynajmniej raz? Pętla while nie daje takiej możliwości, ponieważ warunek wykonania sprawdzany jest jeszcze przed wejściem do pętli. Pewnym rozwiązaniem jest nadanie odpowiedniej wartości zmiennej licznik z wykorzystaniem instrukcji if tuż przed pętlą while:
if (licznik < 1) II wymuś wartość minimalna
licznik = 1;
Jednak to rozwiązanie jest dosyć naciągane i nieeleganckie.
Pętla do. . .while gwarantuje, że instrukcje w pętli zostaną wykonane przynajmniej raz. Warunek sprawdzany jest nie przed wykonaniem lecz po. Listing S.7. demonstruje program podobny do poprzedniego jednak ze zmienioną pętlą.