![]() |
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