<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="hr">
	<id>https://enciklopedija.cc/index.php?action=history&amp;feed=atom&amp;title=Switch_naredba</id>
	<title>Switch naredba - Povijest promjena</title>
	<link rel="self" type="application/atom+xml" href="https://enciklopedija.cc/index.php?action=history&amp;feed=atom&amp;title=Switch_naredba"/>
	<link rel="alternate" type="text/html" href="https://enciklopedija.cc/index.php?title=Switch_naredba&amp;action=history"/>
	<updated>2026-08-06T14:56:14Z</updated>
	<subtitle>Povijest promjena ove stranice na wikiju</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://enciklopedija.cc/index.php?title=Switch_naredba&amp;diff=55650&amp;oldid=prev</id>
		<title>WikiSysop: Bot: Automatski unos stranica</title>
		<link rel="alternate" type="text/html" href="https://enciklopedija.cc/index.php?title=Switch_naredba&amp;diff=55650&amp;oldid=prev"/>
		<updated>2021-08-24T05:54:31Z</updated>

		<summary type="html">&lt;p&gt;Bot: Automatski unos stranica&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nova stranica&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;!--&amp;#039;&amp;#039;&amp;#039;Switch naredba&amp;#039;&amp;#039;&amp;#039;--&amp;gt;U [[računalno programiranje|računalnom programiranju]], &amp;#039;&amp;#039;&amp;#039;switch naredba&amp;#039;&amp;#039;&amp;#039; je tip upravljačke [[naredba (programiranje)|naredbe]] koja postoji u većini suvremenih [[imperativno programiranje|imperativnih programskih]] jezika (npr. [[C (programski jezik)|C]], [[C++]], [[C Sharp|C#]] i [[Java (programski jezik)|Java]]). Svrha joj je da dopusti [[vrijednost (računarstvo)|vrijednosti]] varijable ili izraza upravljanje tokom izvršavanja programa. U nekim drugim programskim jezicima je naredba sintaksno različita ali koncepcijski ista kao &amp;#039;&amp;#039;switch&amp;#039;&amp;#039; naredba poznata kao &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;case naredba&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; ili &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;select&amp;#039;&amp;#039; naredba&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
U većini se jezika &amp;#039;&amp;#039;switch&amp;#039;&amp;#039; naredba definira preko više pojedinih naredbi. Tipična je sintaksa takva da prva linija koda sadrži ključnu riječ &amp;quot;switch&amp;quot; nakon koje slijedi ili ime varijable ili neki drugi izraz kojeg dopušta sintaksa jezika. Ova se varijabla ili izraz obično zove &amp;quot;upravljačka varijabla&amp;quot; &amp;#039;&amp;#039;switch&amp;#039;&amp;#039; naredbe. Nakon ove linije koda slijede linije koda koje definiraju jedan ili više blokova koda koji predstavljaju moguća grananja programa.&lt;br /&gt;
&lt;br /&gt;
Svaki blok počinje linijom koja sadrži ključnu riječ &amp;#039;&amp;#039;&amp;#039;case&amp;#039;&amp;#039;&amp;#039; nakon koje slijedi vrijednost koju upravljačka varijabla može sadržavati. Ako vrijednost upravljačke naredbe sparuje ovu vrijednost, izvršavanje će programa skočiti na taj blok koda. Ako ne, ispituje se vrijednost specificirana u sljedećem bloku (ako je prisutan) i proces se ponavlja.&lt;br /&gt;
&lt;br /&gt;
Dopušten je i opcionalni posebni blok koji ne specificira nijednu vrijednost i koji počinje ključnom riječju &amp;#039;&amp;#039;&amp;#039;default&amp;#039;&amp;#039;&amp;#039; mjesto ključnom riječju &amp;#039;&amp;#039;&amp;#039;case&amp;#039;&amp;#039;&amp;#039;. Ako je ovaj blok prisutan i ako nijedna od vrijednosti izlistanih za druge blokove ne sparuje vrijednost upravljačke varijable, izvršavanje će programa skočiti na naredbu koja slijedi nakon ključne riječi &amp;#039;&amp;#039;&amp;#039;default&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Valja spomenuti i metode terminiranja bloka. Tipično se koristi ključna riječ &amp;#039;&amp;#039;&amp;#039;break&amp;#039;&amp;#039;&amp;#039; za označavanje kraja bloka. Kad se do nje dođe, uzrokuje nastavljanje izvršavanja programa u naredbi koja slijedi nakon niza naredbi unutar &amp;#039;&amp;#039;switch&amp;#039;&amp;#039; naredbe, i tako kompletira izvršavanje &amp;#039;&amp;#039;switch&amp;#039;&amp;#039; naredbe. Ako ključna riječ &amp;#039;&amp;#039;break&amp;#039;&amp;#039; nije prisutna na kraju bloka, u mnogim će jezicima izvršavanje programa &amp;quot;propadati&amp;quot; u kod asociran sa sljedećim blokom &amp;#039;&amp;#039;switch&amp;#039;&amp;#039; naredbe, kao da je njegova vrijednost sparila vrijednost upravljačke varijable. Istaknute iznimke uključuju [[C Sharp|C#]], u kojem propadanje nije dopušteno osim ako je blok prazan i svi blokovi moraju biti terminirani &amp;#039;&amp;#039;&amp;#039;break&amp;#039;&amp;#039;&amp;#039; naredbom ili rabeći neku drugu ključnu riječ. Slično, gotovo svi [[BASIC]] dijalekti koji posjeduju ovu naredbu ne dopuštaju propadanje.&lt;br /&gt;
&lt;br /&gt;
== Primjeri ==&lt;br /&gt;
&lt;br /&gt;
Slijede jednostavni primjeri, napisani u različitim jezicima, koji rabe &amp;#039;&amp;#039;switch&amp;#039;&amp;#039; naredbu za ispis jedne od nekoliko mogućnosti, ovisno o vrijednosti cijelog broja unešenog od strane korisnika. Iscrpno se iskorištava nedostatak ključnih riječi &amp;#039;&amp;#039;&amp;#039;break&amp;#039;&amp;#039;&amp;#039; za propadanje iz jednog bloka u drugi izvođenjem programa. Primjerice, ako je n=5, druga  &amp;#039;&amp;#039;case&amp;#039;&amp;#039; naredba će dati sparivanje upravljačke varijable. S obzirom da ne postoje ni naredbe nakon te linije koda kao niti ključne riječi &amp;#039;&amp;#039;&amp;#039;break&amp;#039;&amp;#039;&amp;#039;, izvršavanje nastavlja preko linije koda &amp;#039;case 7:&amp;#039; sve do sljedeće, koja daje izlaz. Linija s ključnom riječju &amp;#039;&amp;#039;&amp;#039;break&amp;#039;&amp;#039;&amp;#039; nakon nje uzrokuje završenje &amp;#039;&amp;#039;switch&amp;#039;&amp;#039; naredbe. Ako korisnik unese više od jedne znamenke, izvršuje se &amp;#039;&amp;#039;&amp;#039;default&amp;#039;&amp;#039;&amp;#039; blok, dajući poruku o grješci.&lt;br /&gt;
&lt;br /&gt;
=== [[C (programski jezik)|C]] ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 switch(n) {&lt;br /&gt;
     case 0:&lt;br /&gt;
       printf(&amp;quot;Unijeli ste nulu.\n&amp;quot;);&lt;br /&gt;
       break;&lt;br /&gt;
     case 3:&lt;br /&gt;
     case 5:&lt;br /&gt;
     case 7:&lt;br /&gt;
       printf(&amp;quot;n je prost broj\n&amp;quot;);&lt;br /&gt;
       break;&lt;br /&gt;
     case 2: printf(&amp;quot;n je prost broj\n&amp;quot;);&lt;br /&gt;
     case 4:&lt;br /&gt;
     case 6:&lt;br /&gt;
     case 8:&lt;br /&gt;
       printf(&amp;quot;n je paran broj\n&amp;quot;);&lt;br /&gt;
       break;&lt;br /&gt;
     case 1:&lt;br /&gt;
     case 9:&lt;br /&gt;
       printf(&amp;quot;n je savršen kvadrat\n&amp;quot;);&lt;br /&gt;
       break;&lt;br /&gt;
     default:&lt;br /&gt;
       printf(&amp;quot;Dopušteni su samo jednoznamenkasti brojevi\n&amp;quot;);&lt;br /&gt;
     break;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [[Java (programski jezik)|Java]] ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 switch (n) {&lt;br /&gt;
    case 0:  System.out.println(&amp;quot;Unijeli ste nulu.\n&amp;quot;); &lt;br /&gt;
             break;&lt;br /&gt;
    case 3:  &lt;br /&gt;
    case 5:  &lt;br /&gt;
    case 7:  System.out.println(&amp;quot;n je prost broj\n&amp;quot;); &lt;br /&gt;
             break;&lt;br /&gt;
    case 2:  System.out.println(&amp;quot;n je prost broj\n&amp;quot;); &lt;br /&gt;
    case 4:  &lt;br /&gt;
    case 6:  &lt;br /&gt;
    case 8:  System.out.println(&amp;quot;n je paran broj\n&amp;quot;); &lt;br /&gt;
             break;&lt;br /&gt;
    case 1:  &lt;br /&gt;
    case 9:  System.out.println(&amp;quot;n je savršen kvadrat\n&amp;quot;); &lt;br /&gt;
             break;&lt;br /&gt;
    default: System.out.println(&amp;quot;Dopušteni su samo jednoznamenkasti brojevi\n&amp;quot;); &lt;br /&gt;
             break;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [[Actionscript]] ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;actionscript&amp;quot;&amp;gt;&lt;br /&gt;
 switch (varijabla) {&lt;br /&gt;
    case 0:  &lt;br /&gt;
             trace(&amp;quot;slučaj za broj 0&amp;quot;); &lt;br /&gt;
             break;&lt;br /&gt;
    case 1:  &lt;br /&gt;
             trace(&amp;quot;slučaj za broj 1&amp;quot;); &lt;br /&gt;
             break;&lt;br /&gt;
    case 2:  &lt;br /&gt;
             trace(&amp;quot;slučaj za broj 2&amp;quot;); &lt;br /&gt;
             break;&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * &amp;#039;&amp;#039;case&amp;#039;&amp;#039; naredbe u Actionscriptu ne moraju nužno koristiti brojeve,&lt;br /&gt;
     * i mogu se sparivati stringovi ili drugi tipovi.&lt;br /&gt;
     */&lt;br /&gt;
&lt;br /&gt;
    case &amp;quot;A&amp;quot;:&lt;br /&gt;
             trace(&amp;quot;spareno je &amp;#039;A&amp;#039;&amp;quot;);&lt;br /&gt;
             break;&lt;br /&gt;
    &lt;br /&gt;
    /**&lt;br /&gt;
     * višestruki se slučajevi mogu grupirati&lt;br /&gt;
     */&lt;br /&gt;
    &lt;br /&gt;
    case &amp;quot;B&amp;quot;,&amp;quot;b&amp;quot;:&lt;br /&gt;
             trace(&amp;quot;spareno je &amp;#039;B&amp;#039; ili &amp;#039;b&amp;#039;&amp;quot;);&lt;br /&gt;
             break;&lt;br /&gt;
   /**&lt;br /&gt;
    * Ovakvo grupiranje nije valjano, barem ne u Flashu 8&lt;br /&gt;
    * trebalo bi biti:&lt;br /&gt;
    */&lt;br /&gt;
    &lt;br /&gt;
   case &amp;quot;B&amp;quot;:&lt;br /&gt;
   case &amp;quot;b&amp;quot;:&lt;br /&gt;
             trace(&amp;quot;spareno je &amp;#039;B&amp;#039; ili &amp;#039;b&amp;#039;&amp;quot;);&lt;br /&gt;
             break;&lt;br /&gt;
    &lt;br /&gt;
    default: trace(&amp;quot;nijedan ispitani slučaj nije sparen&amp;quot;);&lt;br /&gt;
             break; &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
    /**    &lt;br /&gt;
     * Općenito, nešto je učinkovitije popuniti niz odgovora i pobrojavati kroz niz usporedbi u [[for petlja|for petlji]],&lt;br /&gt;
     * rabiti matematičku formulu u [[while petlja|while petlji]] itd., ali &amp;#039;&amp;#039;switch&amp;#039;&amp;#039; naredba može biti korisna za&lt;br /&gt;
     * dijagnostiku i lakša je za čitati usporedo s kodom, napose u slučaju kad je sadržaj [[niz]]a za usporedbu&lt;br /&gt;
     * popunjen izvana.&lt;br /&gt;
     */&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [[REALbasic]] ===&lt;br /&gt;
&lt;br /&gt;
REALbasic koristi nešto drukčiju sintaksu za isti koncept. Koristi naširoko korištenu BASIC sintaksu &amp;#039;&amp;#039;&amp;#039;select case&amp;#039;&amp;#039;&amp;#039; naredbe ([[Dartmouth BASIC]] je imao ovakvu naredbu još u srednjim 1970-im), te je stoga:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
 select case nekiCijeliBroj&lt;br /&gt;
 case 0  // Jednostavan slučaj jedne naredbe&lt;br /&gt;
    RadiNešto&lt;br /&gt;
 &lt;br /&gt;
 case 1,2,5  // Rabeći višestruke vrijednosti&lt;br /&gt;
    RadiNeštoDrugo&lt;br /&gt;
 &lt;br /&gt;
 case 8 to 10  // Rabeći opseg vrijednosti&lt;br /&gt;
    RadiNeštoTreće&lt;br /&gt;
 &lt;br /&gt;
 case Is &amp;gt; 20  // Rabeći bulovski izraz&lt;br /&gt;
    JošJednom&lt;br /&gt;
 &lt;br /&gt;
 else  // pretpostavljen blok koda&lt;br /&gt;
    VišeNijednom&lt;br /&gt;
  &lt;br /&gt;
 end select&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [[Ruby (programski jezik)|Ruby]] ===&lt;br /&gt;
&lt;br /&gt;
Ruby nema mehanizam &amp;quot;propadanja&amp;quot;, također koristi &amp;#039;&amp;#039;&amp;#039;case&amp;#039;&amp;#039;&amp;#039; mjesto &amp;#039;&amp;#039;&amp;#039;switch&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;when&amp;#039;&amp;#039;&amp;#039; mjesto &amp;#039;&amp;#039;&amp;#039;case&amp;#039;&amp;#039;&amp;#039; i &amp;#039;&amp;#039;&amp;#039;else&amp;#039;&amp;#039;&amp;#039; mjesto &amp;#039;&amp;#039;&amp;#039;default&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ruby&amp;quot;&amp;gt;&lt;br /&gt;
 case n&lt;br /&gt;
 when 0:       puts &amp;#039;Unijeli ste nulu&amp;#039;&lt;br /&gt;
 when 1, 9:    puts &amp;#039;n je savršen kvadrat&amp;#039;&lt;br /&gt;
 when 2:&lt;br /&gt;
   puts &amp;#039;n je prost broj&amp;#039;&lt;br /&gt;
   puts &amp;#039;n je paran broj&amp;#039;&lt;br /&gt;
 when 3, 5, 7: puts &amp;#039;n je prost broj&amp;#039;&lt;br /&gt;
 when 4, 6, 8: puts &amp;#039;n je paran broj&amp;#039;&lt;br /&gt;
 else          puts &amp;#039;Dopušteni su samo jednoznamenkasti brojevi&amp;#039;&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [[C Sharp|C#]] ===&lt;br /&gt;
&lt;br /&gt;
C# koristi standardnu C-nalik sintaksu s dodatkom &amp;#039;goto case&amp;#039; naredbe. Stringovi se također mogu rabiti u &amp;#039;&amp;#039;switch&amp;#039;&amp;#039; naredbama. Usto, &amp;quot;propadanje&amp;quot; je zabranjeno zahtijevanjem naredbe skoka za svaki slučaj (poput &amp;lt;tt&amp;gt;break&amp;lt;/tt&amp;gt; ili &amp;lt;tt&amp;gt;goto&amp;lt;/tt&amp;gt;) za vrijeme prevođenja.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
 switch (nekiCijeliBroj)&lt;br /&gt;
 {&lt;br /&gt;
  case 0:&lt;br /&gt;
   goto case 1;&lt;br /&gt;
  case 1:&lt;br /&gt;
   return 1; // Vraća ako je nekiCijeliBroj 0 ili 1.&lt;br /&gt;
  case 2:&lt;br /&gt;
   nekiCijeliBroj++;&lt;br /&gt;
   goto case 3;&lt;br /&gt;
  case 3:&lt;br /&gt;
   RadiNešto();&lt;br /&gt;
   break;&lt;br /&gt;
  default:&lt;br /&gt;
   RadiNeštoDrugo();&lt;br /&gt;
   break;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Simboličke konstante u &amp;#039;&amp;#039;switch&amp;#039;&amp;#039; naredbi ==&lt;br /&gt;
&lt;br /&gt;
U mnogim (ne i pod svim) okolnostima poraba imena mjesto običnih cijelih brojeva čini izvorni kod čitljivijim. Ovo nema utjecaja na ponašanje programa. Ovaj stil &amp;#039;&amp;#039;switch&amp;#039;&amp;#039; naredbe je uobičajen za implementaciju [[konačni automat|konačnih automata]]. Tradicija je u C-u takva da su konstante napisane velikim slovima, iako kompilator ne prisiljava takvo imenovanje. Slijedi nekoliko primjera:&lt;br /&gt;
&lt;br /&gt;
=== C (rabeći pretprocesor) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 #define STANJE_SPREMNO      1&lt;br /&gt;
 #define STANJE_POSTAVLJENO  2&lt;br /&gt;
 #define STANJE_IDI          3&lt;br /&gt;
 #define STANJE_NEUSPJEH     4&lt;br /&gt;
 &lt;br /&gt;
 switch( stanje )&lt;br /&gt;
 {&lt;br /&gt;
    case STANJE_SPREMNO:&lt;br /&gt;
        stanje = STANJE_POSTAVLJENO;&lt;br /&gt;
        if( x &amp;lt; 0 ) stanje = STANJE_NEUSPJEH;&lt;br /&gt;
        break;&lt;br /&gt;
 &lt;br /&gt;
    case STANJE_POSTAVLJENO:&lt;br /&gt;
        stanje = STANJE_IDI;&lt;br /&gt;
        if( y &amp;gt; 0 ) stanje = STANJE_NEUSPJEH;&lt;br /&gt;
        break;&lt;br /&gt;
 &lt;br /&gt;
    case STANJE_IDI:&lt;br /&gt;
        printf( &amp;quot;idi!\n&amp;quot; );&lt;br /&gt;
        break;&lt;br /&gt;
 &lt;br /&gt;
    case STANJE_NEUSPJEH:&lt;br /&gt;
        exit( -1 );&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== C (rabeći enumeraciju) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 enum&lt;br /&gt;
 {&lt;br /&gt;
    STANJE_SPREMNO = 1,&lt;br /&gt;
    STANJE_POSTAVLJENO = 2,&lt;br /&gt;
    STANJE_IDI = 3,&lt;br /&gt;
    STANJE_NEUSPJEH = 4,&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 switch( stanje )&lt;br /&gt;
 {&lt;br /&gt;
    case STANJE_SPREMNO:&lt;br /&gt;
        stanje = STANJE_POSTAVLJENO;&lt;br /&gt;
        if( x &amp;lt; 0 ) stanje = STANJE_NEUSPJEH;&lt;br /&gt;
        break;&lt;br /&gt;
 &lt;br /&gt;
    case STANJE_POSTAVLJENO:&lt;br /&gt;
        stanje = STANJE_IDI;&lt;br /&gt;
        if( y &amp;gt; 0 ) stanje = STANJE_NEUSPJEH;&lt;br /&gt;
        break;&lt;br /&gt;
 &lt;br /&gt;
    case STANJE_IDI:&lt;br /&gt;
        printf( &amp;quot;idi!\n&amp;quot; );&lt;br /&gt;
        break;&lt;br /&gt;
 &lt;br /&gt;
    case STANJE_NEUSPJEH:&lt;br /&gt;
        exit( -1 );&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== C (&amp;#039;&amp;#039;const int&amp;#039;&amp;#039; nije dopušten u &amp;#039;&amp;#039;switch&amp;#039;&amp;#039; naredbi) ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;UPOZORENJE:&amp;#039;&amp;#039;&amp;#039; ovaj se primjer neće kompilirati standardnim C kompilatorom. Ključna riječ &amp;#039;&amp;#039;const&amp;#039;&amp;#039; u C-u je primjer slabe konstante i &amp;#039;&amp;#039;&amp;#039;nije&amp;#039;&amp;#039;&amp;#039; prikladna za uporabu kao jedan od slučajeva u &amp;#039;&amp;#039;switch&amp;#039;&amp;#039; naredbi.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 const int STANJE_SPREMNO = 1;&lt;br /&gt;
 const int STANJE_POSTAVLJENO = 2;&lt;br /&gt;
 const int STANJE_IDI = 3;&lt;br /&gt;
 const int STANJE_NEUSPJEH = 4;&lt;br /&gt;
 &lt;br /&gt;
 switch( stanje )&lt;br /&gt;
 {&lt;br /&gt;
    case STANJE_SPREMNO:&lt;br /&gt;
        stanje = STANJE_POSTAVLJENO;&lt;br /&gt;
        if( x &amp;lt; 0 ) stanje = STANJE_NEUSPJEH;&lt;br /&gt;
        break;&lt;br /&gt;
 &lt;br /&gt;
    case STANJE_POSTAVLJENO:&lt;br /&gt;
        stanje = STANJE_IDI;&lt;br /&gt;
        if( y &amp;gt; 0 ) stanje = STANJE_NEUSPJEH;&lt;br /&gt;
        break;&lt;br /&gt;
 &lt;br /&gt;
    case STANJE_IDI:&lt;br /&gt;
        printf( &amp;quot;idi!\n&amp;quot; );&lt;br /&gt;
        break;&lt;br /&gt;
 &lt;br /&gt;
    case STANJE_NEUSPJEH:&lt;br /&gt;
        exit( -1 );&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alternativne uporabe ==&lt;br /&gt;
&lt;br /&gt;
Mnogi jezici također dopuštaju uporabu bulovske vrijednost &amp;quot;true&amp;quot; kao varijable i izraze kao pojedine slučajeve.&lt;br /&gt;
&lt;br /&gt;
Primjerice, u [[PHP]]-u se može:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
switch(true) {&lt;br /&gt;
  case ($x == &amp;#039;bokić&amp;#039;): &lt;br /&gt;
    foo(); &lt;br /&gt;
    break;&lt;br /&gt;
  case ($z == &amp;#039;kako si&amp;#039;): break;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Razlog zašto ovo uopće radi jest taj da varijabla koja se ispituje jest bulovska vrijednost. Stoga će x==&amp;#039;hello&amp;#039; kao uvjet vratiti ili istinu ili laž, pa ako je istinit, sparuje vrijednost koja se ispituje.&lt;br /&gt;
&lt;br /&gt;
Ovo se također može rabiti za provjeru višestrukih varijabli za jednom vrijednosti mjesto provjere višestrukih vrijednosti za jednom varijablom:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
//primjer 1: uobičajena uporaba&lt;br /&gt;
switch($x) {&lt;br /&gt;
  case 5: break;&lt;br /&gt;
  case 6: break;&lt;br /&gt;
}&lt;br /&gt;
//primjer 2: alternativna uporaba&lt;br /&gt;
switch(5) {&lt;br /&gt;
  case $x: break;&lt;br /&gt;
  case $y: break;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
U Rubyju, zbog načina na koji on rukuje &amp;#039;&amp;#039;&amp;#039;===&amp;#039;&amp;#039;&amp;#039; jednakošću, naredba se &amp;#039;&amp;#039;case&amp;#039;&amp;#039; također može rabiti za ispitivanje klase varijable:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ruby&amp;quot;&amp;gt;&lt;br /&gt;
 case ulaz&lt;br /&gt;
 when Array: puts &amp;#039;ulaz je Array!&amp;#039;&lt;br /&gt;
 when Hash:  puts &amp;#039;ulaz je Hash!&amp;#039;&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ruby također vraća vrijednost koja može biti dodijeljena varijabli i ustvari ni ne zahtijeva parametre za &amp;#039;&amp;#039;&amp;#039;case&amp;#039;&amp;#039;&amp;#039; (što je čini pomalo nalik &amp;#039;&amp;#039;&amp;#039;else if&amp;#039;&amp;#039;&amp;#039; naredbi):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ruby&amp;quot;&amp;gt;&lt;br /&gt;
 catfood = case&lt;br /&gt;
           when mačka.starost &amp;lt;= 1: mlado&lt;br /&gt;
           when mačka.starost &amp;gt; 10: staro&lt;br /&gt;
           else                     normalno&lt;br /&gt;
           end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Kompilacija ==&lt;br /&gt;
&lt;br /&gt;
Ako konstante oblikuju kompaktan opseg, &amp;#039;&amp;#039;switch&amp;#039;&amp;#039; naredba može biti ostvarena vrlo učinkovito kao da se radi o izboru zasnovanom na cijelim brojevima. Ovo se često ostvaruje [[tablica skokova|tablicom skokova]].&lt;br /&gt;
&lt;br /&gt;
== Prednosti i nedostatci ==&lt;br /&gt;
&lt;br /&gt;
U nekim se jezicima i programskim okolinama &amp;#039;&amp;#039;&amp;#039;case&amp;#039;&amp;#039;&amp;#039; ili &amp;#039;&amp;#039;&amp;#039;switch&amp;#039;&amp;#039;&amp;#039; naredba smatra čitljivijom i lakšom za održavati od istovjetnog niza &amp;#039;&amp;#039;if-else&amp;#039;&amp;#039; naredbi, s obzirom da je konciznija. Međutim, ako je ostvarena propadanjem, &amp;#039;&amp;#039;switch&amp;#039;&amp;#039; naredbe su čest izvor pogrješaka među programerima početnicima.&lt;br /&gt;
&lt;br /&gt;
== Alternative ==&lt;br /&gt;
&lt;br /&gt;
Jedna je alternativa &amp;#039;&amp;#039;&amp;#039;switch&amp;#039;&amp;#039;&amp;#039; naredbi uporaba [[tablica pretraživanja|tablice pretraživanja]] koja sadrži kao ključeve vrijednosti od &amp;#039;&amp;#039;&amp;#039;case&amp;#039;&amp;#039;&amp;#039; i kao vrijednosti dijelove pod &amp;#039;&amp;#039;&amp;#039;case&amp;#039;&amp;#039;&amp;#039; naredbom. U nekim su jezicima dopušteni samo stvarni podatkovni tipovi kao vrijednosti u tablici pretraživanja. U drugim je jezicima također moguće dodijeliti [[funkcija (računarstvo)|funkcije]] kao vrijednosti tablice pretraživanja, što daje istu fleksibilnost kao i stvarna &amp;#039;&amp;#039;&amp;#039;switch&amp;#039;&amp;#039;&amp;#039; naredba (ovo je jedan od načina implementacije &amp;#039;&amp;#039;&amp;#039;switch&amp;#039;&amp;#039;&amp;#039; naredbi u jeziku [[Lua]] koji nema ugrađeni &amp;#039;&amp;#039;&amp;#039;switch&amp;#039;&amp;#039;&amp;#039; &amp;lt;ref&amp;gt;[http://lua-users.org/wiki/SwitchStatement Switch statement in Lua]&amp;lt;/ref&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
U nekim su slučajevima tablice pretraživanja učinkovitije od &amp;#039;&amp;#039;&amp;#039;switch&amp;#039;&amp;#039;&amp;#039; naredbi s obzirom da mnogi jezici mogu optimizirati pretragu tablice dok &amp;#039;&amp;#039;switch&amp;#039;&amp;#039; naredbe nisu tako često optimizirane.&lt;br /&gt;
&lt;br /&gt;
Drugu &amp;quot;alternativu&amp;quot; &amp;#039;&amp;#039;switch&amp;#039;&amp;#039; naredbama predstavlja iscrpna uporaba [[polimorfizam tipa|polimorfizma]].&lt;br /&gt;
&lt;br /&gt;
== Izvori ==&lt;br /&gt;
{{izvori}}&lt;br /&gt;
&lt;br /&gt;
== Vidjeti također ==&lt;br /&gt;
&lt;br /&gt;
*[[Duffov uređaj]] je tehnika [[odmotavanje petlje|odmotavanja petlje]] koja rabi &amp;#039;&amp;#039;switch&amp;#039;&amp;#039; naredbu.&lt;br /&gt;
*&amp;#039;&amp;#039;switch&amp;#039;&amp;#039; naredba je tip [[uvjet (programiranje)|uvjetne naredbe]].&lt;br /&gt;
&lt;br /&gt;
[[Kategorija:Konstrukti u programiranju]]&lt;br /&gt;
&lt;br /&gt;
[[ru:Оператор ветвления#Переключатель]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
</feed>