Prezentowane materiały są przeznaczone dla uczniów szkół ponadgimnazjalnych. Autor artykułu: mgr Jerzy Wałaszek, wersja1.0 |
©2008 mgr
Jerzy Wałaszek |
Składnia pętli while jest następująca:
while(warunek) instrukcja;
lub z wykorzystaniem instrukcji złożonej:
while(warunek)
{
inst1;
inst2;
...;
}
warunek - wyrażenie dające w wyniku wartość różną od 0, gdy warunek jest spełniony, lub wartość równą 0, gdy warunek jest niespełniony.
Działanie pętli while jest następujące:
Najpierw obliczany jest warunek. Jeśli w wyniku dostajemy wartość różną od 0 (prawdziwą), to wykonana zostaje instrukcja pętli (lub instrukcje wewnątrz klamerek instrukcji złożonej). Po wykonaniu instrukcji następuje powrót na początek pętli i znów jest sprawdzany warunek kontynuacji. Pętla powtarza swoje instrukcje dotąd, aż warunek stanie się fałszywy, czyli jego wartością będzie 0. W takim przypadku pętla przestaje wykonywać swoją instrukcję i następuje przejście do dalszej części programu leżącej za pętlą.
Przykład:
Poniższa pętla while dodaje do zmiennej a liczbę 5 dopóki zawartość a jest mniejsza od 1000. Gdy zmienna a osiągnie wartość większą lub równą 1000, to warunek kontynuacji pętli stanie się fałszywy i dodawanie zostanie przerwane:
...
while(a < 1000)
a += 5;
...
Ponieważ warunek kontynuacji jest sprawdzany w pętli while na samym początku przed rozpoczęciem obiegu, to może się zdarzyć, iż będzie on fałszywy przy wejściu do pętli. W takim przypadku pętla while nie wykona ani jednego obiegu.
Warunek pętli powinien być uzależniony w pewien sposób od wykonywanych instrukcji lub od czynników zewnętrznych. W przeciwnym razie możemy otrzymać tzw. pętlę nieskończoną (ang. infinite loop), która nigdy normalnie się nie kończy.
Przykład:
Poniższy przykład w nieskończoność wypisuje na ekranie tekst - Witaj w C++:
...
while(1) cout <<
"Witaj w C++ ";
...
// Suma ciągu liczb naturalnych // (C) I LO w Tarnowie //------------------------ #include <iostream> using namespace std; int main() { int g,suma,i; cout << "Sumowanie kolejnych liczb naturalnych do przekroczenia granicy\n" "--------------------------------------------------------------\n\n"; // odczytujemy granicę g cout << "Podaj granice sumowania g = "; cin >> g; cout << endl; // w pętli sumujemy kolejne liczby naturalne aż suma przekroczy g suma = 0; i = 1; while(suma <= g) suma += i++; // wyprowadzamy wyniki cout << "Suma = " << suma << " dla i = " << --i << endl << endl; system("pause"); return 0; } |
Sumowanie kolejnych liczb naturalnych do przekroczenia granicy -------------------------------------------------------------- Podaj granice sumowania g = 1000 Suma = 1035 dla i = 45 Aby kontynuować, naciśnij dowolny klawisz . . . |
Składnia pętli do...while jest następująca:
do instrukcja; while(warunek);
lub z wykorzystaniem instrukcji złożonej:
do
{
inst1;
inst2;
...;
} while(warunek);
warunek - wyrażenie dające w wyniku wartość różną od 0, gdy warunek jest spełniony, lub wartość równą 0, gdy warunek jest niespełniony.
Działanie pętli do...while jest następujące:
Najpierw wykonywana jest instrukcja powtarzana w pętli. Po wykonaniu tej instrukcji obliczany jest warunek. Jeśli wynik jest różny od 0, to instrukcja jest powtarzana. W przeciwnym razie gdy warunek ma wartość 0, pętla zostaje przerwana i program przechodzi do wykonywania instrukcji leżących za pętlą.
Przykład:
Poniższa pętla do...while odejmuje od zmiennej a 5 dotąd, aż wynik tego odejmowania będzie liczbą ujemną. Zwróć uwagę, iż odejmowanie wykonywane jest zawsze przynajmniej jeden raz!
...
do a -= 5; while(a >= 0);
...
W pętli do...while warunek kontynuacji jest sprawdzany na końcu, po wykonaniu biegu. Zatem pętla do...while zawsze wykonuje przynajmniej jeden obieg - tym różni się od pętli while, która może nie wykonać ani jednego obiegu, gdy warunek jest fałszywy.
Jeśli warunek jest zawsze prawdziwy, to otrzymujemy pętlę nieskończoną.
Przykład:
Poniższy przykład w nieskończoność wypisuje na ekranie tekst - Witaj w C++:
...
do cout <<
"Witaj w C++ "; while(1);
...
Program żąda podania od użytkownika tajnego kodu - w tym przypadku jest to liczba 854. Odczyt kodu wykonywany jest dotąd, aż użytkownik poda właściwy kod.
// Sprawdzanie kodu dostępu // (C) I LO w Tarnowie //------------------------ #include <iostream> using namespace std; int main() { int kod; cout << "System ROBO 378-XV86\n\n"; // czekamy w pętli na poprawny kod dostępu do { cout << "Wpisz kod: "; cin >> kod; } while(kod != 854); // ok, wprowadzono poprawny kod cout << "\nKod zaakceptowany\n\n"; system("pause"); return 0; } |
System ROBO 378-XV86 Wpisz kod: 125 Wpisz kod: 968 Wpisz kod: 854 Kod zaakceptowany Aby kontynuować, naciśnij dowolny klawisz . . . |
I Liceum Ogólnokształcące |
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe