background image

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

background image

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

()

{

background image

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.

background image

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.