$$ \newcommand{\floor}[1]{\left\lfloor{#1}\right\rfloor} \newcommand{\ceil}[1]{\left\lceil{#1}\right\rceil} \newcommand{\mod}{\,\mathrm{mod}\,} \renewcommand{\div}{\,\mathrm{div}\,} \newcommand{\metar}{\,\mathrm{m}} \newcommand{\cm}{\,\mathrm{cm}} \newcommand{\dm}{\,\mathrm{dm}} \newcommand{\litar}{\,\mathrm{l}} \newcommand{\km}{\,\mathrm{km}} \newcommand{\s}{\,\mathrm{s}} \newcommand{\h}{\,\mathrm{h}} \newcommand{\minut}{\,\mathrm{min}} \newcommand{\kmh}{\,\mathrm{\frac{km}{h}}} \newcommand{\ms}{\,\mathrm{\frac{m}{s}}} \newcommand{\mmin}{\,\mathrm{\frac{m}{min}}} \newcommand{\smin}{\,\mathrm{\frac{s}{min}}} $$

Petlje - FOR

  • Dozvoljeno polaganje
  • Lekcije
  • Nema
  • Koshi
  • 7/24/2015

Pored while petlje postoji još jedna vrsta petlji u C++-u. To je for petlja. Pogledajmo kako bismo uradili primer iz prethodne lekcije gde smo hteli da ispišemo poruku 1000 puta pomoću ove nove for petlje:

 

#include <iostream>

 

using namespace std;

 

int main()

{

for (int broj_ponavljanja = 0; broj_ponavljanja < 1000; broj_ponavljanja++)

{

cout << "Zdravo!" << endl;

}

}

 

Ovaj kod radi potpuno istu stvar kao i kod koji smo već videli koji koristi while petlju, samo smo iskoristili malo drugačiji način da opišemo taj isti postupak.

 

Pogledajmo koji su delovi ove nove for petlje:

 

for (INICIJALIZACIJA; USLOV; POSLEDNJA KOMANDA)
{
    KOMANDE UNUTAR PETLJE
}

 

Šta se dešava kada dođemo do for petlje:

 

  • Prvo se izvrši koja god komanda je na mestu INICIJALIZACIJA (u našem primeru napravi se promenljiva broj_ponavljanja i njena vrednost se postavi na 0).
  • Zatim se isto kao i kod while petlje proveri da li je USLOV zadovoljen (u primeru da li je broj_ponavljanja manji od 1000).
    • Ako jeste izvršavaju se KOMANDE UNUTAR PETLJE i nakon njih se izvrši POSLEDNJA KOMANDA. U našem slučaju to znači da se prvo ispiše poruka, a zatim broj_ponavljanja uveća za 1. Zatim se ponovo vraćamo na proveru uslova i tako dalje.
    • Ako uslov nije zadovoljen petlja je gotova i program nastavlja dalje sa izvršavanjem.

 

Jedan način na koji možemo razmišljati o for petlji je tako da je gornja for petlja radi potpuno istu stvar kao sledeća while petlja:

 

INICIJALIZACIJA;

while (USLOV)

{

KOMANDE UNUTAR PETLJE

POSLEDNJA KOMANDA;                                                          

}

 

Možemo pogledati i kako izgleda dijagram for petlje:

 

Kao što smo videli while i for petlja predstavljaju dva različita načina da uradimo istu stvar. Zašto su nam potrebna dva načina? Zašto uvek ne koristimo samo jednu od njih? Odgovor je da iako uvek možemo rešiti problem koristeći bilo koju od ove dve petlje, nekada je zgodnije koristiti jednu, a nekada drugu.

 

For petlja je pravljena za slučajeve gde kada dođemo do petlje znamo koliko puta ćemo je izvršiti. Bilo da je to fiksan broj (kao što je 1000) ili vrednost promenljive (kao što je promenljiva koliko_puta u prethodnoj lekciji). Sa druge strane while petlju koristimo u slučajevima gde ne znamo unapred koliko puta će se petlja ponoviti.

 

Recimo da imamo sledeći problem. Hoćemo da ispišemo svaki string koji se unese, sve dok se ne unese string "kraj". Ovaj problem se mnogo lepše rešava while petljom:

 

#include <iostream>

 

using namespace std;

 

int main()

{

cout << "Unesite stringove ("kraj" za poslednji)" << endl;

string s = "";

// Učitamo prvi string

cin >> s;

// Dokle god nam trenutni string nije jednak "kraj"

while (s != "kraj")

{

// Ispišemo trenutni string...

cout << s;

// ... i učitamo novi

cin << s;

}

}