Dues implementacions equivalents en llenguatge de programació C que imprimeixen text depenen del valor de la variable x. L'esquerra utilitza if i la dreta es basa en la instrucció switch.
En els llenguatges de programació informà tica , una instrucció switch (commutador) és un tipus de mecanisme de control de selecció utilitzat per permetre que el valor d'una variable o expressió canviï el flux de control de l'execució del programa mitjançant la cerca i el mapa.[ 1]
Les sentències Switch funcionen de manera similar a la sentència if
que s'utilitza en llenguatges de programació com C / C++ , C# , Visual Basic. NET , Java i existeixen en la majoria de llenguatges de programació imperatiu d'alt nivell com Pascal , Ada , C / C++ , C# ,[ 2] :374-375 Visual Basic. NET , Java ,[ 3] :157-167 i en molts altres tipus d'idioma, utilitzant paraules clau com switch
, case
, select
o inspect
.
Les declaracions de commutació tenen dues variants principals: un interruptor estructurat, com en Pascal, que pren exactament una branca, i un interruptor no estructurat, com en C, que funciona com un tipus de goto . Les principals raons per utilitzar un interruptor inclouen millorar la claredat, reduint la codificació repetitiva i (si l'heurÃstica ho permet) també oferir el potencial d'execució més rà pida mitjançant una optimització més fà cil del compilador en molts casos.
Sintaxi tÃpica
En la majoria dels idiomes, els programadors escriuen una declaració switch en moltes lÃnies individuals utilitzant una o dues paraules clau. Una sintaxi tÃpica implica:
la primera select
, seguida d'una expressió que sovint s'anomena expressió de control o variable de control de la sentència switch
lÃnies posteriors que defineixen els casos reals (els valors), amb les seqüències corresponents d'instruccions per a l'execució quan es produeix una coincidència
En els idiomes amb un comportament de caiguda, una declaració break
normalment segueix una declaració case
per acabar aquesta declaració. [Pots]
En alguns idiomes, per exemple, PL/I , l'expressió de control és opcional; si no hi ha cap expressió de control, aleshores cada alternativa comença amb una clà usula WHEN
que conté una expressió booleana i es produeix una coincidència per al primer cas en què aquesta expressió s'avalua com a cert. Aquest ús és similar a les estructures if/then/elseif/else en alguns altres idiomes, per exemple, Perl .
En alguns idiomes, per exemple, Rexx , no es permet cap expressió de control i cada alternativa comença amb una clà usula WHEN
que conté una expressió booleana i es produeix una coincidència per al primer cas en què aquesta expressió s'avalua com a vertadera.
Declaració Switch en C [ 4]
switch ( age ) {
case 1 : printf ( "You're one." ); break ;
case 2 : printf ( "You're two." ); break ;
case 3 : printf ( "You're three." );
case 4 : printf ( "You're three or four." ); break ;
default : printf ( "You're not 1, 2, 3 or 4!" );
}
Compilació
L'optimització de compiladors com GCC o Clang pot compilar una instrucció switch en una taula de branques o en una cerca binà ria a través dels valors dels casos. Una taula de branques permet que la instrucció switch determini amb un nombre petit i constant d'instruccions quina branca s'ha d'executar sense haver de passar per una llista de comparacions, mentre que una cerca binà ria només pren un nombre logarÃtmic de comparacions, mesurat en el nombre de casos en la declaració switch.
Referències