Switch naredba: razlika između inačica

Izbrisani sadržaj Dodani sadržaj
m uporaba <source>
Redak 15:
=== [[C (programski jezik)|C]] ===
 
<sourcesyntaxhighlight lang="c">
switch(n) {
case 0:
Redak 39:
break;
}
</syntaxhighlight>
</source>
 
=== [[Java (programski jezik)|Java]] ===
 
<sourcesyntaxhighlight lang="java">
switch (n) {
case 0: System.out.println("Unijeli ste nulu.\n");
Redak 62:
break;
}
</syntaxhighlight>
</source>
 
=== [[Actionscript]] ===
 
<sourcesyntaxhighlight lang="actionscript">
switch (varijabla) {
case 0:
Redak 114:
* popunjen izvana.
*/
</syntaxhighlight>
</source>
 
=== [[REALbasic]] ===
Redak 120:
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:
 
<sourcesyntaxhighlight lang="vb">
select case nekiCijeliBroj
case 0 // Jednostavan slučaj jedne naredbe
Redak 138:
end select
</syntaxhighlight>
</source>
 
=== [[Ruby (programski jezik)|Ruby]] ===
Redak 144:
Ruby nema mehanizam "propadanja", također koristi '''case''' mjesto '''switch''', '''when''' mjesto '''case''' i '''else''' mjesto '''default'''.
 
<sourcesyntaxhighlight lang="ruby">
case n
when 0: puts 'Unijeli ste nulu'
Redak 155:
else puts 'Dopušteni su samo jednoznamenkasti brojevi'
end
</syntaxhighlight>
</source>
 
=== [[C Sharp|C#]] ===
Redak 161:
C# koristi standardnu C-nalik sintaksu s dodatkom 'goto case' naredbe. Stringovi se također mogu rabiti u ''switch'' naredbama. Usto, "propadanje" je zabranjeno zahtijevanjem naredbe skoka za svaki slučaj (poput <tt>break</tt> ili <tt>goto</tt>) za vrijeme prevođenja.
 
<sourcesyntaxhighlight lang="csharp">
switch (nekiCijeliBroj)
{
Redak 178:
break;
}
</syntaxhighlight>
</source>
 
== Simboličke konstante u ''switch'' naredbi ==
Redak 186:
=== C (rabeći pretprocesor) ===
 
<sourcesyntaxhighlight lang="c">
#define STANJE_SPREMNO 1
#define STANJE_POSTAVLJENO 2
Redak 211:
exit( -1 );
}
</syntaxhighlight>
</source>
 
=== C (rabeći enumeraciju) ===
<sourcesyntaxhighlight lang="c">
enum
{
Redak 242:
exit( -1 );
}
</syntaxhighlight>
</source>
 
=== C (''const int'' nije dopušten u ''switch'' naredbi) ===
'''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.
 
<sourcesyntaxhighlight lang="c">
const int STANJE_SPREMNO = 1;
const int STANJE_POSTAVLJENO = 2;
Redak 272:
exit( -1 );
}
</syntaxhighlight>
</source>
 
== Alternativne uporabe ==
Redak 279:
 
Primjerice, u [[PHP]]-u se može:
<sourcesyntaxhighlight lang="php">
switch(true) {
case ($x == 'bokić'):
Redak 286:
case ($z == 'kako si'): break;
}
</syntaxhighlight>
</source>
 
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.
 
Ovo se također može rabiti za provjeru višestrukih varijabli za jednom vrijednosti mjesto provjere višestrukih vrijednosti za jednom varijablom:
<sourcesyntaxhighlight lang="php">
//primjer 1: uobičajena uporaba
switch($x) {
Redak 302:
case $y: break;
}
</syntaxhighlight>
</source>
 
U Rubyju, zbog načina na koji on rukuje '''===''' jednakošću, naredba se ''case'' također može rabiti za ispitivanje klase varijable:
<sourcesyntaxhighlight lang="ruby">
case ulaz
when Array: puts 'ulaz je Array!'
when Hash: puts 'ulaz je Hash!'
end
</syntaxhighlight>
</source>
 
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):
<sourcesyntaxhighlight lang="ruby">
catfood = case
when mačka.starost <= 1: mlado
Redak 319:
else normalno
end
</syntaxhighlight>
</source>
 
== Kompilacija ==