Prezentowane materiały są przeznaczone dla uczniów szkół ponadgimnazjalnych. Autor artykułu: mgr Jerzy Wałaszek, wersja1.0 |
©2013 mgr
Jerzy Wałaszek
|
Obiegi wykonywane przez pętlę można numerować. Obieg numerowany nazywamy iteracją. Iteracja wymaga dodatkowej zmiennej, która przechowuje numer wykonywanego przez pętlę obiegu. Zmienna ta nosi nazwę licznika pętli (ang. loop counter). Pętlę iteracyjną możemy utworzyć przy pomocy poznanych dotychczas pętli warunkowych.
Przykład:
Poniższe pętle wykonują 10 obiegów. Obiegi zliczane są przez zmienną i, która pełni tutaj rolę licznika pętli.
... i |
... i |
Ponieważ pętle iteracyjne pojawiają się w programach bardzo często, w języku C++ istnieje specjalna instrukcja do ich łatwej realizacji. Składnia tej instrukcji jest następująca:
for(prolog; kontynuacja; epilog)
instrukcja;
lub z instrukcją złożoną:
for(prolog; kontynuacja; epilog)
{
Ciąg instrukcji;
}
prolog | - | instrukcja wykonywana przed rozpoczęciem pierwszej
iteracji. Najczęściej służy do inicjalizacji licznika pętli. Przykład:
|
kontynuacja | - | warunek kontynuacji pętli. Jeśli wyrażenie to ma wartość
różną od 0, to pętla wykona obieg. Warunek jest sprawdzany na początku
każdej iteracji. Przykład:
|
epilog | - | instrukcja wykonywana po zakończeniu każdej iteracji.
Najczęściej wykorzystuje się ją do modyfikacji licznika pętli. Przykład:
|
instrukcja | - | instrukcja powtarzana w każdej iteracji pętli. Przykład:
|
W poniższych przykładach zakładamy, iż wszystkie niezbędne zmienne zostały wcześniej odpowiednio zadeklarowane.
Pętla wypisuje kolejne liczby całkowite od 1 do 10:
for(i = 1; i <= 10; i++) cout << i << endl;
Pętla wypisuje liczby od 10 do 1 w kierunku odwrotnym:
for(i = 10; i >= 1; i--) cout << i << endl;
Pętla wypisuje kolejne liczby parzyste od 4 do 26:
for(i = 4; i <= 26; i += 2) cout << i << endl;
Poniższy fragment programu wypisuje wiersz zbudowany z 20 znaków X:
for(i = 0; i < 20; i++) cout << "X";
cout << endl;
Jeśli powtórzymy ten fragment programu 20 razy, to otrzymamy kwadrat z literek X. Instrukcją powtarzaną w pętli może być druga pętla - otrzymamy wtedy układ zagnieżdżony:
for(j = 0; j < 20; j++)
{
for(i = 0; i < 20; i++) cout << "X";
cout << endl;
}
Pętla wewnętrzna jest sterowana zmienną i. Jej zadaniem jest wyświetlenie jednego wiersza 20 znaków X. Pętla ta jest powtarzana 20 razy przez pętlę zewnętrzną sterowaną zmienną j. W efekcie w oknie konsoli pojawia się 20 wierszy, każdy zbudowany z 20 literek X:
XXXXXXXXXXXXXXXXXXXX |
W pętlach zagnieżdżonych muszą być stosowane różne zmienne liczników pętli.
Jeśli ilość wykonań pętli wewnętrznej uzależnimy od numeru obiegu pętli zewnętrznej, to otrzymamy trójkąt:
for(j = 0; j < 20; j++)
{
for(i = 0; i <= j; i++) cout << "X";
cout << endl;
}
X |
Zastanów się, jak zmienić podane pętle, aby uzyskać następujące wydruki w oknie konsoli:
XXXXXXXXXXXXXXXXXXXX |
X |
XXXXXXXXXXXXXXXXXXXX |
W wyrażeniach możemy stosować funkcje logiczne, których w języku C++ mamy trzy:
NIE - Negacja/Zaprzeczenie logiczne (ang. not)
w | !w |
0 | 1 |
1 | 0 |
Jest to funkcja jednoargumentowa, której argumentem jest wyrażenie w. Wynikiem jest wartość przeciwna do wartości logicznej wyrażenia w.
LUB - Alternatywa/Suma logiczna (ang. or)
w1 | w2 | w1 || w2 |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
Jest to funkcja dwuargumentowa. Wynik jest równy true tylko wtedy, gdy dowolny z argumentów jest prawdziwy (ma wartość różną od zera). Jeśli oba argumenty są fałszywe (równe zero), to wynikiem jest false. Nazwa suma logiczna pochodzi z podobieństwa wyniku tej funkcji do operacji dodawania liczb nieujemnych. Suma dwóch liczb nieujemnych jest różna od 0, jeśli dowolna z sumowanych liczb jest różna od 0. Suma wynosi 0, jeśli oba argumenty są równe 0.
I - Koniunkcja/Iloczyn logiczny (ang. and)
w1 | w2 | w1 && w2 |
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
Jest to funkcja dwuargumentowa. Wynik jest równy true tylko wtedy, gdy oba argumenty są prawdziwe (różne od zera). W przeciwnym razie wynik jest równy false. Nazwa iloczyn logiczny pochodzi z podobieństwa wyniku tej funkcji do operacji mnożenia. Wynik mnożenia jest niezerowy, jeśli wszystkie mnożone liczby są niezerowe.
Funkcje logiczne można łączyć:
a || b || c || d
a && b && c && d
a && (b || c)
!(a || b && c)
Wykorzystując funkcję LUB utwórz pętle, które tworzą następujące wydruki
(zastanów się dla jakich i,j ma być wyświetlana spacja lub
znak X):
XXXXXXXXXXXXXXXX |
XXXXXXXXXXXXXXXX |
XXXXXXXXXXXXXXXX |
XXXXXXXXXXXXXXXX |
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