Serwis Edukacyjny w I-LO w Tarnowie Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej
Autor artykułu: mgr Jerzy Wałaszek |
©2024 mgr Jerzy Wałaszek |
while(warunek) instrukcja;
while
- słowo kluczowe języka C++
oznaczające instrukcję pętli warunkowejwarunek
- dowolne wyrażenie arytmetyczne.
Warunek jest prawdziwy (true), jeśli ma wartość
różną od zera. Warunek jest fałszywy (false),
jeśli ma wartość zero.instrukcja
- powtarzana w pętli instrukcja.Pętla typu while działa następująco. Na początku każdego obiegu komputer oblicza wartość warunku. Jeśli wynik jest różny od zera, to zostaje wykonana instrukcja i komputer rozpoczyna nowy obieg od ponownego obliczenia wartości warunku. Jeśli warunek ma wartość równą zero, instrukcja w pętli nie zostaje wykonana i pętla kończy działanie.
// Kolejne liczby naturalne od 1 do 100 //------------------------------------- #include <iostream> using namespace std; int main() { int i; i = 1; while(i <= 100) cout << i++ << " "; cout << "\nKONIEC\n"; return 0; } |
Ponieważ warunek jest sprawdzany na początku każdego obiegu pętli przed wykonaniem instrukcji zawartej w pętli, to jeśli jest on już od początku fałszywy, pętla nie wykona ani jednego obiegu.
// Fałszywy warunek //----------------- #include <iostream> using namespace std; int main() { int i; i = 101; while(i <= 100) cout << i++ << " "; cout << "\nKONIEC\n"; return 0; } |
// Kolejne liczby parzyste od 2 do n //---------------------------------- #include <iostream> using namespace std; int main() { int i,n; cin >> n; i = 2; while(i <= n) { cout << i << " "; i += 2; } cout << endl; return 0; } |
// Kolejne liczby nieparzyste od 2 do n //------------------------------------- #include <iostream> using namespace std; int main() { int i,n; cin >> n; i = 1; while(i <= n) { cout << i << " "; i += 2; } cout << endl; return 0; } |
// Sumy kolejnych liczb od 1 do n //------------------------------- #include <iostream> using namespace std; int main() { int i,n,s; cin >> n; i = 1; s = 0; while(i <= n) { s += i++; cout << s << endl; } return 0; } |
Dodatkowo program powinien na końcu wypisać sumę tych n wyrazów.
do instrukcja;
while(warunek
);
do
- słowo
kluczowe języka C++ oznaczające początek pętli warunkowejinstrukcja
- powtarzana w pętli instrukcja. Zwróć uwagę, że musi
ona kończyć się średnikiem.while
- słowo kluczowe
oznaczające sekcję sprawdzania warunku.warunek
- dowolne wyrażenie arytmetyczne. Warunek
jest prawdziwy (true), jeśli ma wartość różną od
zera. Warunek jest fałszywy (false), jeśli ma
wartość zero.Pętla typu do...while różni się od pętli while. W każdym obiegu najpierw wykonywana jest instrukcja, a dopiero po jej wykonaniu komputer oblicza i sprawdza warunek. Jeśli ma on wartość różną od zera, to wykonywany jest następny obieg pętli. Jeśli warunek ma wartość zero, pętla nie wykonuje dalszych obiegów i jest przerywana.
// Kolejne liczby naturalne od 1 do 100 //------------------------------------- #include <iostream> using namespace std; int main() { int i; i = 1; do cout << i++ << " "; while(i <= 10); cout << "\nKONIEC\n"; return 0; } |
Ponieważ warunek kontynuacji jest sprawdzany w pętli do...while na końcu obiegu po wykonaniu powtarzanej instrukcji, to pętla wykonuje zawsze przynajmniej jeden obieg bez względu na wartość warunku - czyli inaczej niż pętla while, która przy fałszywym warunku nie wykonywała się ani jeden raz.
// Fałszywy warunek //------------------------ #include <iostream> using namespace std; int main() { int i; i = 101; do cout << i++ << " "; while(i <= 10); cout << "\nKONIEC\n"; return 0; } |
Jeśli w pętli chcemy powtarzać więcej niż jedną instrukcję, to stosujemy instrukcję blokową (po klamerce zamykającej nie musimy wstawiać średnika):
while(warunek) |
do |
Pętlę do while stosujemy najczęściej wtedy, gdy warunek sprawdzany w pętli nie może być obliczony bez wykonania przynajmniej jednego obiegu. Na przykład wyobraźmy sobie, że piszemy program sprawdzający hasło dostępu, którym będzie liczba 123. Jeśli użytkownik wprowadzi właściwy kod, to program go przepuszcza dalej. Jeśli kod jest zły, to program powinien wypisać odpowiednią informację i ponownie wczytać kod.
// Odczyt hasła //------------- #include <iostream> using namespace std; int main() { int p; setlocale(LC_ALL,""); // Polskie litery do { cout << "Wpisz hasło: "; cin >> p; cout << endl << endl; if(!cin.good()) break; } while(p != 123); if(cin.good()) { cout << "Hasło zaakceptowane" << endl; return 0; } else { cout << "Próba włamania!!!" << endl; return -1; } return 0; } |
W programie występują nowe elementy:
cin.good() | : | jest to tzw. funkcja składowa strumienia cin. Sprawdza ona stan strumienia. Jeśli jest on dobry, to funkcja zwraca true, w przeciwnym razie zwraca false. |
! | : | jest to operator logicznego przeczenia. Wartość
logiczna wyrażenia objętego tym operatorem zmienia się na
przeciwną. Na przykład: !(5 == 2) daje wartość logiczną true, ponieważ wyrażenie (5 == 2) jest fałszywe i ma wartość false, a operator ! zmienia tę wartość na przeciwną, czyli true. |
!cin.good() | : | daje wartość true, jeśli stan strumienia jest zły |
break; | : | instrukcja przerywa wykonywanie pętli. |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2024 mgr Jerzy Wałaszek |
Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.