$$ \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.

Programe obično pišemo da bismo automatizovali neki postupak koji je često repetitivan. Recimo da treba nešto da uradimo 1000 puta, na primer da ispišemo neku rečenicu. Jedan način da napišemo program koji ovo radi je da ponovimo komandu za ispisivanje onoliko puta koliko je potrebno, kao u sledećem programu.

static void Main(string[] args)
{
    Console.WriteLine("Zdravo!");
    Console.WriteLine("Zdravo!");
    Console.WriteLine("Zdravo!");
    Console.WriteLine("Zdravo!");
    Console.WriteLine("Zdravo!");
    Console.WriteLine("Zdravo!");
    ...
}

Ovaj naš program bi imao preko 1000 linija. Kada bismo, recimo, nekoj osobi objašnjavali da nešto uradi 1000 puta, ne bismo joj rekli: "Uradi to. Sad uradi ponovo to. Pa ponovo... ", već bismo mogli samo da kažemo da uradi nešto određen broj puta. To je upravo ono što želimo da uradimo u našem programu, da imamo način da računaru kažemo da nešto uradi određen broj puta tako da tu naredbu u samom programu ne moramo ponoviti toliko puta.

Ovaj problem rešavamo koristeći strukturu koja se zove petlje. Pogledajmo kako bi naše rešenje problema izgledalo ako upotrebimo petlju.

static void Main(string[] args)
{
    int broj_ponavljanja = 0;
    while (broj_ponavljanja < 1000)
    {
        Console.WriteLine("Zdravo!");
        broj_ponavljanja++;
    }
}

Uspeli smo da dužinu programa smanjimo sa preko 1000 linija na samo 9. U ovom programu je novo to što smo upotrebili petlju.

while ( USLOV )
{
    KOMANDE UNUTAR PETLJE
}

Ključna reč while označava petlju. Petlja je deo koda koji se izvršava dokle kod je USLOV te petlje zadovoljen. Dakle, kada dođemo do petlje u kodu, računar proverava da li je USLOV ispunjen, ako jeste, on izvršava KOMANDE UNUTAR PETLJE. Nakon što ih izvrši, vraća se ponovo do USLOVA, ako je on i dalje ispunjen KOMANDE UNUTAR PETLJE se ponovo izvršavaju. Sve se to ponavlja dokle god uslov ne postane netačan.

Sada kada ovo znamo, razmislimo kako bismo iskoristili while petlju da ponovimo nešto fiksni broj puta. Imaćemo neku promenljivu koju ćemo koristiti da brojimo koliko puta smo za sada ponovili komande unutar petlje (int broj_ponavljanja = 0;) i ponavljaćemo postupak sve dok je broj ponavljanja koji smo uradili manji od 1000 (while (broj_ponavljanja < 1000)). Na kraju svakog prolaska kroz petlju, nakon što izvršimo ono što hoćemo (Console.WriteLine("Zdravo!");), uvećamo broj ponavljanja koje smo uradili za 1 (broj_ponavljanja++;).

Na sledećoj slici može da se vidi diagram while petlje:

Može da se dogodi da ne znamo unapred koliko puta želimo da ponovimo petlju. Na primer, umesto da ispišemo poruku 1000 puta, hoćemo da unesemo koliko puta želimo to da uradimo. Rešenje bi u tom slučaju bilo izuzetno slično prethodnom.

static void Main(string[] args)
{
    int koliko_puta;
    Console.WriteLine("Unesite koliko puta želite da ispišete poruke: ");

    koliko_puta = int.Parse(Console.ReadLine());

    int broj_ponavljanja = 0;

    while (broj_ponavljanja < koliko_puta)
    {
        Console.WriteLine("Zdravo!");
        broj_ponavljanja++;
    }
}

Pored toga što smo dodali učitavanje broja koliko puta želimo da izvršimo ponavljanje, izmenili smo i uslov u petlji i, umesto da broj_ponavljanja upoređujemo sa 1000, sada ga upoređujemo sa unetim brojem.

broj_ponavljanja < koliko_puta

Postoji jedna stvar na koju treba da obratiš posebnu pažnju kada koristiš petlje. Razmislimo šta bi se desilo da smo zaboravili da uvećamo broj ponavljanja petlje u našem primeru.

  int broj_ponavljanja = 0;
  
  while (broj_ponavljanja < 1000)
  {
    Console.WriteLine("Zdravo!");
  }

Krenimo da prolazimo kroz naš program komandu po komandu.

  • Prvo postavimo broj_ponavljanja na 0.
  • Uslov petlje je ispunjen (0 je manje od 1000).
  • Ispiše se poruka.
  • Uslov se ponovo proverava, i dalje je ispunjen (opet je 0 manje od 1000).
  • Ispiše se poruka.
  • Uslov se opet proverava...

Pošto nigde ne menjamo vrednost promenljive broj_ponavljanja, uslov će uvek biti ispunjen i naša petlja nikada neće prestati da se izvršava. Ovakvu petlju zovemo beskonačna i nešto je što želimo da uvek izbegnemo.