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

Grananje

  • Dozvoljeno polaganje
  • Lekcije
  • Nema
  • Filip Zivkovic
  • 7/26/2015

Programiranjem rešavamo realne probleme a u realnom svetu često ne odlučujemo samo da li nešto da uradimo ili ne već često biramo koju od dve stvari treba uraditi. Tako je i u poslednjem primeru koji smo uradili u lekciji Uslovno izvršavanje:

#include <iostream>

int main()

{

int J, P;

std::cout << "Unesite dva broja - koliko Miki treba do Jocine i koliko Miki treba do Perine kuce:" << std::endl;

std::cin >> J >> P;

int koraka;

if ( J > P )

{

koraka = J - P;

}

if ( !(J > P) )

{

koraka = P - J;

}

std::cout << koraka << std::endl;

}


Ovaj program će ili izvršiti liniju koraka = J - P; ili liniju koraka = P - J; jer je tačno jedan uslov zadovoljen - drugi je negacija prvog. Ako je uslov J > P tačan uslov !(J > P) će biti netačan i kontra; ovo se dešava jer je jedan uslov negacija drugog.

Ovako nešto se često javlja u programiranju - dva dela programa gde se svaki deo izvršava uslovno, a uvek se izvršava jedan od ta dva dela i nikada se ne izvršavaju oba. Ovakvo uslovno izvršavanje se toliko često javlja da postoji posebna struktura koja ga opisuje.

U programskom jeziku C ova struktura se zove if-else i evo kako se zapisuje:

#include <iostream>

int main()

{

int J, P;

std::cout << "Unesite dva broja - koliko Miki treba do Jocine i koliko Miki treba do Perine kuce:" << std::endl;

std::cin >> J >> P;

int koraka;

if ( J > P )

{

koraka = J - P;

}

else

{

koraka = P - J;

}

std::cout << koraka << std::endl;

}

Posle if strukture koja nam je već poznata piše se ključna reč else, otvorena vitičasta zagrada a zatim naredbe koje se izvršavaju uslovno, samo kada uslov nije tačan i na kraju zatvorena vitičasta zagrada.

Primetimo da grananje nije ništa konceptualno novo - i dalje se bavimo samo uslovnim izvršavanjem - ali nam olakšava i skraćuje pisanje (i izvršavanje) programa.

Na engleskom jeziku if znači ako a else znači inače - ovaj prevod nam omogućava da bolje razumemo ovaj koncept. Deo posle ključne reči if se izvršava ako je uslov tačan inače se izvršava deo posle ključne reči else.