Naredba switch-case

Naredba switch-case omogućava jednostruko grananje koje zavisi od vrednosti postavljenog uslova.

Za razliku od višestrukog uslovnog grananja kod kojeg su uslovi logički izrazi, u naredbi switch-case uslov je celobrojni izraz ili celobrojna promenljiva. Vtrdnost cjelobrojnog izraza ili vrednost cjelobrojne promenljive je ceo  broj.

  • Vridnost uslova se uporedjuje sa nizom datih celobrojnih konstanti: konst1, konst2, konst3, itd. Ako je vrednost uslova jednaka nekoj od zadatih konstanti, izvršava se blok naredbi pridružen toj konstanti.
  • Po završetku izvršenog bloka, naredba break prekida izvršavanje switch-case bloka naredbi i nastavlja program prvom naredbom nakon switch‑case bloka.
  • Ako vrednost uslova nije jednak niti jednoj od ponuđenih konstanti, izvršava se blok naredbi pridružen naredbi default. U slučaju izostavljanja naredbe default program će nastaviti izvršavanje prvom naredbom nakon switch‑case bloka.

Celokupni switch‑case blok zapisuje se unutar para otvorena-zatvorena vitičasta zagrada ({}).

 Pr1: Napravi program koji na osnovu broja koji unosiš preko tastature izdaje dan u nedelji?
Rešenje:
#include <iostream>
#include <stdlib.h>

using namespace std;

int main()
{
int broj;
cout<<„Unesi broj od 1-7″<<endl;
cin>>broj;
switch (broj)
{
case 1:
cout << „Ponedeljak“ << endl;
break;
case 2:
cout << „Utorak“ << endl;
break;
case 3:
cout << „Sreda“ << endl;
break;
case 4:
cout << „Cetvrtak“ << endl;
break;
case 5:
cout << „Petak“ << endl;
break;
case 6:
cout << „Subota“ << endl;
break;
case 7:
cout << „Nedelja“ << endl;
break;
default:
cout << „Nedelja ima 7 dana!“ << endl;
}
system(„PAUSE“);
return 0;
}

Pr 2. Napravi program koji za unetu ocenu izdaje opisan oblik iste?
Rešenje:
#include <iostream>
using namespace std;
int main()
{
int ocena;
cin >> ocena;
switch (ocena)
{
case 1:
cout << "Nedovoljan (1)" << endl;
break;
case 2:
cout << "Dovoljan (2)" << endl;
break;
case 3:
cout << "Dobar (3)" << endl;
break;
case 4:
cout << "Vrlo dobar  (4)" << endl;
break;
case 5:
cout << "Odlican (5)" << endl;
break;
default:
cout << "Ne zezaj. Vakva ocena nema." << endl;
}
return 0;
}

Višestruko uslovno grananje

Višestruko uslovno grananje omogućava ispitivanje više uslova. Zavisno od  ispunjenju postavljenih uslova izvodi se odgovarajući blok naredbi.
  • Ako je vrednost prvog uslova  logička istina (true, 1), izvodi se prvi blok naredbi. Nakon završetka izvođenje se nastavlja od prve naredbe iza zadnjeg bloka naredbi. Ako je uslov logička neistina  (false, 0), proverava se drugi uslov.
  • Ako je vrednost drugog usl ovalogička istina (true, 1), izvodi se drugi blok naredbi. Nakon završetka izvođenje se nastavlja od prve naredbe iza zadnjeg bloka naredbi. Ako je vrednost drugog uslova logička neistina (false, 0), proverava se treći uslov.
  • Provere se tako redom nastavljaju sve do naredbe else. Ako do tada niti jedan od uslova nije imao vridnost logičke istine (true, 1), izvršit će se zadnji blok naredbi koji se nalazi iza naredbe else.

Naredbe grananja

Za rešavanje većine zadataka potrebne su složenije programske strukture kod kojih redosled izvršavanja naredbi zavisi od vrednostima podataka koji se obrađuju.

Grananje je programska struktura koja omogućava različit tok programa, zavisno od rezultata postavljenog uslova. To je važna struktura bez koje bi mogućnost rešavanja zadataka pomoću računara bila vrlo ograničena.

 

Naredbe grananja

Naredbe grananja su:

  • if,
  • if-else,
  • if-else if-else,
  • switch-case.

    Jednostruko uslovno grananje

    Naredba if omogućava jednostruko uslovno grananje programa. Uslov je logički izraz, a zagrada (). Na kraju naredbe if ne stavlja se znak točka zarez (;).
    • Ako je vrednost uslova logička istina (true, 1), izvodi se blok naredbi koji se nalazi iza naredbe if.
    • Ako je rednost uslova logička neistina (false, 0), blok naredbi iza naredbe if se preskače i izvođenje se nastavlja od prve naredbe iza bloka.

Dvostruko uslovno grananje

Dvostruko uslovno grananje omogućava da se zavisno od ispunjenju postavljenog uslova izvodi jedan od dva nezavisna bloka naredbi.
  • Ako je vrednost uslova  logička istina (true, 1), izvodi se prvi blok naredbi. Nakon završetka izvođenje se nastavlja od prve naredbe iza drugog bloka.
  • Ako j vrednost uslova logička neistina (false, 0), preskače se prvi blok i izvodi se drugi blok (iza naredbe else). Nakon završetka izvođenje se nastavlja od prve naredbe iza drugog bloka.