Naredba grananja (if-naredba)

Već smo ranije pominjali da je selekcija ili grananje upravljačka struktura koja pruža mogućnost izbora zavisno od uslova. Kada se bira jedna od dve mogućnosti onda je to osnovna selekcija. Kod osnovne selekcije u slučaju da je uslov ispunjen izvršava se jedan skup linija koda tj. jedan blok, a ako uslov nije ispunjen onda se izvršava drugi skup linija koda tj. drugi blok.

Osnovna selekcija se u C# realizuje naredbom if. Standardni dijagram toka strukture grananja prikazan je na sledećoj slici:

Treba uočiti da je jedna mogućnost blok B (skup naredbi B) koje se izvršavaju kada logički izraz (uslov P) ima vrednost tačno (true), a druga mogućnost je blok A (skup naredbi A) koje se izvršavaju kada logički izraz (uslov P) ima vrednost netačno (false). Skup naredbi B i skup naredbi A mogu biti jedna ili više bilo kojih izvršnih naredbi ili čak neka upravljačka struktura (sekvenca, selekcija ili petlja).

Ekvivalentan kod u C# je:

If (izraz)

Naredba B

else

Naredba A

            Dejstvo: Kada je vrednost izraza tačna izvršava se naredba B u suprotnom izvršava se naredba A.

            Primer: Napisati program koji određuje veći od uneta dva broja.

 

static void Main(string[] args)

        {

            int x, y, veci;

            Console.WriteLine("Unesi dva broja");

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

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

            if (x > y)

                veci = x;

            else

                veci = y;

            Console.WriteLine("Veci od unetih brojeva je: " + veci);

            Console.ReadKey();

        }

Veoma često je potrebno da se neki deo koda izvrši ako je zadovoljen neki uslova a u slučaju da nije zadovoljen uslov nije potrebno izvršiti ni jednu liniju koda. U algoritmima smo ovo nazivali preskok, a u programu je to tzv. “skraćeni oblik” if naredbe.

Skraćeni oblik if naredbe u C#:

If (izraz)

Naredba B;

Primer: Napisati program kojim se određuje apsolutna vrednost unetog broja x.

 

static void Main(string[] args)

        {

            int x, abs;

            Console.WriteLine("Unesi broj");

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

            abs = x;

            if (x < 0)

                abs = -x;

            Console.WriteLine("Apsolutna vrednost unetog broja je: " + abs);

            Console.ReadKey();

  }

 

Isti efekat bi postigli i korišćenjem if naredbe sa else granom:

 

static void Main(string[] args)

        {

            int x, abs;

            Console.WriteLine("Unesi broj");

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

            if (x < 0)

                abs = -x;

            else

                abs = x;

            Console.WriteLine("Apsolutna vrednost unetog broja je: " + abs);

            Console.ReadKey();

        }

 

            Ovo su sve primeri kada se izvršava po jedna naredba ukoliko je uslov ispunjen ili ukoliko nije. U slučaju kada je potrebno da se izvrši više naredbi u slučaju zadovoljenja ili ne zadovoljenja uslova tada je nepohodno da taj blok naredbi počinje sa { i završava se sa }. 

            Ekvivalentni kod u C# izgleda ovako:

            If (izraz)

{

Naredba B1;

Naredba B2;

Naredba Bn;

}

else

{

Naredba A1;

Naredba A2;

Naredba An;

}

Primer: Napisati program koji ispituje da li su dva uneta broja međusobno deljiva i ako jesu ispisuje rezultat deljenja.

static void Main(string[] args)

        {

            int x, y, o, d;

            Console.WriteLine("Unesi dva broja");

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

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

            if (x > y)

            {

                o = x % y;

                d = x / y;

            }

            else

            {

                o = y % x;

                d = y / x;

            }

            if (o == 0)

            {

                Console.WriteLine("Brojevi su međusobno deljivi i rezultat je: " + d);

            }

            Console.ReadKey();

        }

 

NAPOMENA: Nije greška ni ako se stavi otvorena i zatvorena vitličasta zagrada i kada je samo jedna naredba u bloku B ili bloku A:

if (o == 0)

   {

    Console.WriteLine("Brojevi su međusobno deljivi i rezultat je: " + d);

   }