Strona 1
[lekcja] Pętla for | Kurs C++ » Poziom 2
2011-11-12 17:15:20
http://cpp0x.pl/kursy/Kurs-C++/Poziom-2/Petla-for/294
Darmowe kursy Online
»
Kurs C++
»
Poziom 2
Autor: Piotr Szawdyński
Pętla for
[lekcja]
Rozdział 22. Omówienie pętli
for
.
Kolejny rozdział, kolejne wyzwanie. Tym razem zajmiemy się omówieniem pętli
for
. Pętle w programowaniu są najpotężniejszym
narzędziem w ręku programisty. Na chwilę obecną powinieneś umieć posługiwać się jednym rodzajem pętli oraz rozumieć ich zasadę
działania - znasz już bowiem pętlę
do
...
while
, którą powinieneś rozwiązywać wszystkie dotychczasowe zadania.
Za pomocą pętli
for
możemy wykonywać dokładnie te same rzeczy co za pomocą znanej nam pętli
do
...
while
. Znajomość działania
wszystkich pętli ułatwia znacznie czytanie kodu - różnią się one bowiem drobnymi detalami, które sprawiają, że każda pętla jest znacznie
wygodniejsza od pozostałych w określonych sytuacjach.
Składnia pętli for
Skoro już wiesz jaka idea przyświeca różnym rodzajom pętli to możemy teraz zapoznać się ze składnią pętli for:
C/C++
for
(
_A_
;
_B_
;
_C_
)
_D_
;
//lub:
for
(
_A_
;
_B_
;
_C_
)
{
//blok instrukcji
}
Budowa pętli
for
jak łatwo można zauważyć jest podzielona na cztery części. Są to:
nadawanie początkowych wartości zmiennym (oznaczona wyżej jako _A_);
warunek kończący pętlę for (oznaczony jako _B_);
zwiększenie (zmniejszenie) licznika pętli (_C_);
powtarzana instrukcja (_D_) bądź blok instrukcji.
Przykład użycia pętli for
Skoro teorię już znamy to zobaczmy teraz jak pętle for wyglądają w praktyce:
C/C++
int
i
;
for
(
i
=
1
;
i
<=
10
;
i
++ )
{
//Powtarzany blok instrukcji
}
Jeżeli mamy jedną instrukcję do wykonania w pętli to zapis może wyglądać następująco:
C/C++
int
i
;
for
(
i
=
1
;
i
<=
10
;
i
++ )
jedna_powtarzana_instrukcja
;
Jeżeli uważnie przeanalizowałeś powyższy kod oraz opis składni pętli
for
to powinieneś wiedzieć, że powtarzana instrukcja (bądź blok
instrukcji) wykona się 10 razy.
Typowe zastosowaniapętli for
Pętlę for używamy praktycznie zawsze, gdy znamy ilość danych, jaką mamy wczytać, wypisać lub zmienić. Jeśli chcemy policzyć średnią z
określonej liczby liczb, wczytać określoną ilość danych z pliku lub wypisać określoną ilość danych na ekran, pętla for jest do tego po
prostu idealna.
Inicjalizacjazmiennychw pętli for
Strona 2
[lekcja] Pętla for | Kurs C++ » Poziom 2
2011-11-12 17:15:20
http://cpp0x.pl/kursy/Kurs-C++/Poziom-2/Petla-for/294
W języku C++ w sekcji _A_ możliwe jest utworzenie tymczasowej zmiennej, która będzie widoczna tylko i wyłącznie wewnątrz pętli for.
Wspomniana własność jest bardzo wygodna dla programisty i korzystanie z niej w C++ jest praktycznie rzecz biorąc na porządku
dziennym. W praktyce kod, który został wcześniej zaprezentowany można zapisać następująco:
C/C++
for
(
int
i
=
1
;
i
<=
10
;
i
++ )
{
//Powtarzany blok instrukcji
}
for
(
int
i
=
1
;
i
<=
10
;
i
++ )
jedna_powtarzana_instrukcja
;
Pętla for zapisana przy pomocy pętli do ... while
Aby zobrazować różnicę w długości kodu napisanego za pomocą pętli
for
oraz pętli
do
...
while
zobaczmy jak będzie wyglądał kod
pętli
for
zapisany za pomocą pętli
do
...
while
:
C/C++
_A_
;
if
(
_B_
)
do
{
//powtarzany blok instrukcji (albo jedna instrukcja oznaczona jako _D_)
_C_
;
}
while
(
_B_
)
;
Trochę praktyki
Teoria ma to do siebie, że bywa trudna jeżeli nie jest poparta przykładami. Zobaczmy więc teraz kilka prostych przykładów zastosowania
pętli
for
.
Wypisywanietablicy pętlą for
C/C++
#include <iostream>
void
wypiszTablice
(
int
tablica
[]
,
int
ile
)
{
for
(
int
indeks
=
0
;
indeks
<
ile
;
indeks
++ )
std
::
cout
<<
tablica
[
indeks
] <<
std
::
endl
;
}
int
main
()
{
int
dane
[
5
]
;
dane
[
0
] =
123
;
dane
[
1
] =
321
;
dane
[
2
] =
333
;
dane
[
3
] =
222
;
dane
[
4
] =
111
;
wypiszTablice
(
dane
,
5
)
;
return
0
;
}
Wypisywanietablicy pętlą do ... while
C/C++
#include <iostream>
void
wypiszTablice
(
int
tablica
[]
,
int
ile
)
{
int
indeks
=
0
;
if
(
indeks
<
ile
)
do
{
std
::
cout
<<
tablica
[
indeks
] <<
std
::
endl
;
indeks
++
;
}
while
(
indeks
<
ile
)
;
}
int
main
()
{
Strona 3
[lekcja] Pętla for | Kurs C++ » Poziom 2
2011-11-12 17:15:20
http://cpp0x.pl/kursy/Kurs-C++/Poziom-2/Petla-for/294
int
dane
[
5
]
;
dane
[
0
] =
123
;
dane
[
1
] =
321
;
dane
[
2
] =
333
;
dane
[
3
] =
222
;
dane
[
4
] =
111
;
wypiszTablice
(
dane
,
5
)
;
return
0
;
}
Wczytywanieliczb pętlą for
C/C++
#include <iostream>
void
wypiszTablice
(
int
tablica
[]
,
int
ile
)
{
for
(
int
indeks
=
0
;
indeks
<
ile
;
indeks
++ )
std
::
cout
<<
tablica
[
indeks
] <<
std
::
endl
;
}
void
wczytajLiczby
(
int
tablica
[]
,
int
ile
)
{
for
(
int
indeks
=
0
;
indeks
<
ile
;
indeks
++ )
{
std
::
cout
<<
"Podaj liczbe "
<<(
indeks
+
1
) <<
": "
;
std
::
cin
>>
tablica
[
indeks
]
;
}
//for
}
int
main
()
{
int
dane
[
5
]
;
wczytajLiczby
(
dane
,
5
)
;
wypiszTablice
(
dane
,
5
)
;
return
0
;
}
Sumowanie liczb pętlą for
C/C++
#include <iostream>
void
wypiszTablice
(
int
tablica
[]
,
int
ile
)
{
for
(
int
indeks
=
0
;
indeks
<
ile
;
indeks
++ )
std
::
cout
<<
tablica
[
indeks
] <<
std
::
endl
;
}
int
sumujLiczby
(
int
tablica
[]
,
int
ile
)
{
int
oblicz
=
0
;
for
(
int
indeks
=
0
;
indeks
<
ile
;
indeks
++ )
oblicz
+=
tablica
[
indeks
]
;
return
oblicz
;
}
int
main
()
{
int
dane
[
5
]
;
dane
[
0
] =
11
;
dane
[
1
] =
5
;
dane
[
2
] =
7
;
dane
[
3
] =
8
;
dane
[
4
] =
2
;
wypiszTablice
(
dane
,
5
)
;
int
wynik
=
sumujLiczby
(
dane
,
5
)
;
std
::
cout
<<
"Suma liczb wynosi = "
<<
wynik
<<
std
::
endl
;
return
0
;
}
Zadanie domowe
Napisz sumowanie liczb pętlą
do
...
while
działające tak samo jak sumowanie wykonane za pomocą pętli
for
, które zostało
przedstawione w niniejszym rozdziale.
Strona 4
[lekcja] Pętla for | Kurs C++ » Poziom 2
2011-11-12 17:15:20
http://cpp0x.pl/kursy/Kurs-C++/Poziom-2/Petla-for/294
Architektserwisu: Piotr Szawdyński
© Wszelkieprawa zastrzeżone2005-2011
Napisz program, który za pomocą pętli
for
wypełni 20 elementową tablicę następującym ciągiem liczb: {1, 6, 11, ... , (1 + n*5)}.
Zawartość wypełnionej tablicy wypisz na ekran.
Napisz program który wykona wszystkie poniższe kroki w podanej kolejności:
Losuje 10 liczb z przedziału od 10 do 30 włącznie i zapisuje je do tablicy;
Wypisuje 10 wylosowanych liczb od początku do końca;
Wypisuje 10 wylosowanych liczb od końca do początku;
Znajduje najmniejszą oraz największą wylosowaną liczbę.
Wypisuje najmniejszą i największą wylosowaną liczbę.
Program nie może używać pętli innych niż pętla
for
.
Uwaga!
Wszystkie programy mają wykorzystywać funkcje. Przykładowo: kod funkcji main dla ostatniego programu powinien wyglądać
następująco:
C/C++
int
main
()
{
int
tablica
[
10
]
;
wylosujLiczby
(
tablica
,
10
)
;
wypiszTablice
(
tablica
,
10
)
;
wypiszTabliceOdTylu
(
tablica
,
10
)
;
int
iMin
=
znajdzMinimum
(
tablica
,
10
)
;
int
iMax
=
znajdzMaksimum
(
tablica
,
10
)
;
wypiszMinMax
(
iMin
,
iMax
)
;
return
0
;
}
Pozostałe programy powinny mieć zbudowaną funkcję main analogicznie do powyższego przykładu.
Wszystkieteksty są chronioneprawami autorskimi. Kopiowanielub rozpowszechnianietreści poza niniejszymserwisem jest
zabronione.
Powyższe ograniczenie nie dotyczy autora opracowania, któremu przysługuje prawo do rozpowszechnianiawłasnego tekstu wedle własnego uznania.