Prezentowane materiały są przeznaczone dla uczniów szkół ponadgimnazjalnych. Autor artykułu: mgr Jerzy Wałaszek, wersja1.0 |
©2013 mgr
Jerzy Wałaszek
|
Pętla (ang. loop) to cykliczne powtarzanie wykonywania wybranej instrukcji lub grupy instrukcji w programie. Obiegiem pętli (ang. loop pass) nazywamy pojedynczy cykl wykonania powtarzanej instrukcji lub grupy instrukcji. Pętla warunkowa (ang. conditional loop) wykonuje powtarzanie obiegów w zależności od wybranego warunku. W języku C++ mamy dwie podstawowe instrukcje pętli warunkowych. Pierwsza z nich to pętla typu while:
while(warunek) instrukcja;
while
- słowo
kluczowe języka C++ oznaczające instrukcję pętli warunkowej
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.
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 // (C)2013 I LO w Tarnowie //------------------------ #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 // (C)2013 I LO w Tarnowie //------------------------ #include <iostream> using namespace std; int main() { int i; i = 101; while(i <= 100) cout << i++ << " "; cout << "\nKONIEC\n"; return 0; } |
Drugi rodzaj pętli warunkowej to pętla do while:
do instrukcja; while(warunek);
do
- słowo kluczowe języka C++ oznaczające początek pętli warunkowej
instrukcja
- 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 nieznacznie 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 // (C)2013 I LO w Tarnowie //------------------------ #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 // (C)2013 I LO w Tarnowie //------------------------ #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 |
// Kolejne liczby parzyste od 2 do n // (C)2013 I LO w Tarnowie //------------------------ #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 // (C)2013 I LO w Tarnowie //------------------------ #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 // (C)2013 I LO w Tarnowie //------------------------ #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; } |
// Kolejne potęgi liczby 2 // (C)2013 I LO w Tarnowie //------------------------ #include <iostream> using namespace std; int main() { unsigned long long i,n; cin >> n; i = 1; while(i <= n) { cout << i << endl; i *= 2; } return 0; } |
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