$$ \newcommand{\floor}[1]{\left\lfloor{#1}\right\rfloor} \newcommand{\ceil}[1]{\left\lceil{#1}\right\rceil} \renewcommand{\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{\mss}{\,\mathrm{\frac{m}{s^2}}} \newcommand{\mmin}{\,\mathrm{\frac{m}{min}}} \newcommand{\smin}{\,\mathrm{\frac{s}{min}}} $$

Prijavi problem


Obeleži sve kategorije koje odgovaraju problemu

Još detalja - opišite nam problem


Uspešno ste prijavili problem!
Status problema i sve dodatne informacije možete pratiti klikom na link.
Nažalost nismo trenutno u mogućnosti da obradimo vaš zahtev.
Molimo vas da pokušate kasnije.

Pored while petlje postoji još jedna vrsta petlji u jeziku C++. 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 for petlje.

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

Šta se dešava kada program dođe 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 ovom primeru, to je provera 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 se 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 koju smo upravo analizirali je da posmatramo sledeću while petlju koja radi potpuno istu stvar.

	INICIJALIZACIJA;

	while (USLOV)
	{
		KOMANDE UNUTAR PETLJE
		POSLEDNJA KOMANDA;
	}

Možemo pogledati i kako izgleda dijagram for petlje na sledećoj slici.

Kao što smo videli, while i for petlja predstavljaju dva različita načina da uradimo istu stvar. Može da se postavi pitanje zašto su nam potrebna dva načina i 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.

Petlja for 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 pomoću while petlje.

#include <iostream>
using namespace std;

int main()
{
	cout << "Unesite stringove ("kraj" za poslednji)" << endl;
	string s = "";
	// Ucitamo prvi string
	cin >> s;
	// Dokle god nam trenutni string nije jednak "kraj"
	while (s != "kraj")
	{
		// Ispisemo trenutni string...
		cout << s;
		// ... i ucitamo novi
		cin << s;
	}
}