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:
for( _A_; _B_; _C_ )
_D_;
for( _A_; _B_; _C_ )
{
}
Budowa pętli
for
jak łatwo można zauważyć jest podzielona na cztery części. Są to:
Przykład użycia pętli for
Skoro teorię już znamy to zobaczmy teraz jak pętle for wyglądają w praktyce:
int i;
for( i = 1; i <= 10; i++ )
{
}
Jeżeli mamy jedną instrukcję do wykonania w pętli to zapis może wyglądać następująco:
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 zastosowania pę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.
Inicjalizacja zmiennych w pętli for
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:
for( int i = 1; i <= 10; i++ )
{
}
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
:
_A_;
if( _B_ )
do
{
_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
.
Wypisywanie tablicy pętlą for
#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;
}
Wypisywanie tablicy pętlą do ... while
#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()
{
int dane[ 5 ];
dane[ 0 ] = 123;
dane[ 1 ] = 321;
dane[ 2 ] = 333;
dane[ 3 ] = 222;
dane[ 4 ] = 111;
wypiszTablice( dane, 5 );
return 0;
}
Wczytywanie liczb pętlą for
#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 ];
}
}
int main()
{
int dane[ 5 ];
wczytajLiczby( dane, 5 );
wypiszTablice( dane, 5 );
return 0;
}
Sumowanie liczb pętlą for
#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
Uwaga!
Wszystkie programy mają wykorzystywać funkcje. Przykładowo: kod funkcji main dla ostatniego programu powinien wyglądać następująco:
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.
|