<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="hr">
	<id>https://croatianschoolsydney.com/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://croatianschoolsydney.com/index.php?action=history&amp;feed=atom&amp;title=Switch_naredba"/>
	<link rel="alternate" type="text/html" href="https://croatianschoolsydney.com/index.php?title=Switch_naredba&amp;action=history"/>
	<updated>2026-05-22T16:14:31Z</updated>
	<subtitle>Povijest promjena ove stranice na wikiju</subtitle>
	<generator>MediaWiki 1.36.2</generator>
	<entry>
		<id>https://croatianschoolsydney.com/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://croatianschoolsydney.com/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;!--'''Switch naredba'''--&amp;gt;U [[računalno programiranje|računalnom programiranju]], '''switch naredba''' 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 ''switch'' naredba poznata kao '''''case naredba''''' ili '''''select'' naredba'''.&lt;br /&gt;
&lt;br /&gt;
U većini se jezika ''switch'' 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; ''switch'' 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č '''case''' 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 '''default''' mjesto ključnom riječju '''case'''. 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 '''default'''.&lt;br /&gt;
&lt;br /&gt;
Valja spomenuti i metode terminiranja bloka. Tipično se koristi ključna riječ '''break''' za označavanje kraja bloka. Kad se do nje dođe, uzrokuje nastavljanje izvršavanja programa u naredbi koja slijedi nakon niza naredbi unutar ''switch'' naredbe, i tako kompletira izvršavanje ''switch'' naredbe. Ako ključna riječ ''break'' nije prisutna na kraju bloka, u mnogim će jezicima izvršavanje programa &amp;quot;propadati&amp;quot; u kod asociran sa sljedećim blokom ''switch'' 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 '''break''' 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 ''switch'' 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 '''break''' za propadanje iz jednog bloka u drugi izvođenjem programa. Primjerice, ako je n=5, druga  ''case'' naredba će dati sparivanje upravljačke varijable. S obzirom da ne postoje ni naredbe nakon te linije koda kao niti ključne riječi '''break''', izvršavanje nastavlja preko linije koda 'case 7:' sve do sljedeće, koja daje izlaz. Linija s ključnom riječju '''break''' nakon nje uzrokuje završenje ''switch'' naredbe. Ako korisnik unese više od jedne znamenke, izvršuje se '''default''' 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;
     * ''case'' 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 'A'&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 'B' ili 'b'&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 'B' ili 'b'&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 ''switch'' 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 '''select case''' 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 '''case''' mjesto '''switch''', '''when''' mjesto '''case''' i '''else''' mjesto '''default'''.&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 'Unijeli ste nulu'&lt;br /&gt;
 when 1, 9:    puts 'n je savršen kvadrat'&lt;br /&gt;
 when 2:&lt;br /&gt;
   puts 'n je prost broj'&lt;br /&gt;
   puts 'n je paran broj'&lt;br /&gt;
 when 3, 5, 7: puts 'n je prost broj'&lt;br /&gt;
 when 4, 6, 8: puts 'n je paran broj'&lt;br /&gt;
 else          puts 'Dopušteni su samo jednoznamenkasti brojevi'&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 'goto case' naredbe. Stringovi se također mogu rabiti u ''switch'' 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 ''switch'' 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 ''switch'' 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 (''const int'' nije dopušten u ''switch'' naredbi) ===&lt;br /&gt;
'''UPOZORENJE:''' ovaj se primjer neće kompilirati standardnim C kompilatorom. Ključna riječ ''const'' u C-u je primjer slabe konstante i '''nije''' prikladna za uporabu kao jedan od slučajeva u ''switch'' 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 == 'bokić'): &lt;br /&gt;
    foo(); &lt;br /&gt;
    break;&lt;br /&gt;
  case ($z == 'kako si'): 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=='hello' 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 '''===''' jednakošću, naredba se ''case'' 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 'ulaz je Array!'&lt;br /&gt;
 when Hash:  puts 'ulaz je Hash!'&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 '''case''' (što je čini pomalo nalik '''else if''' 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, ''switch'' 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 '''case''' ili '''switch''' naredba smatra čitljivijom i lakšom za održavati od istovjetnog niza ''if-else'' naredbi, s obzirom da je konciznija. Međutim, ako je ostvarena propadanjem, ''switch'' 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 '''switch''' naredbi uporaba [[tablica pretraživanja|tablice pretraživanja]] koja sadrži kao ključeve vrijednosti od '''case''' i kao vrijednosti dijelove pod '''case''' 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 '''switch''' naredba (ovo je jedan od načina implementacije '''switch''' naredbi u jeziku [[Lua]] koji nema ugrađeni '''switch''' &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 '''switch''' naredbi s obzirom da mnogi jezici mogu optimizirati pretragu tablice dok ''switch'' naredbe nisu tako često optimizirane.&lt;br /&gt;
&lt;br /&gt;
Drugu &amp;quot;alternativu&amp;quot; ''switch'' 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 ''switch'' naredbu.&lt;br /&gt;
*''switch'' 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>