L’ús d’una instrucció switch us permet provar diverses condicions i executar només un bloc específic si la condició és certa. Tot i que funciona de manera similar a una sentència if ... else if ... .else, la sintaxi és més senzilla i fàcil de llegir i gestionar.
Aquest tutorial se centra a mostrar-vos com crear i treballar amb instruccions de commutació a la programació C.
Ús bàsic
La instrucció switch és fàcil d’implementar. La sintaxi general és la següent:
interruptor (expr) {
casevar1:
// codi
trencar;
casevar2:
// codi
trencar;
casevar3:
// codi
trencar;
casevarN:
// codi
trencar;
...
....
....
per defecte:
// codi
}
Com funciona
La sentència switch implementa una lògica senzilla per avaluar cadascun dels blocs de casos.
Comença avaluant l'expressió dins del bloc de commutació. A continuació, compara el valor del bloc de commutació amb el bloc de cada cas.
Un cop localitza una coincidència dins d’un dels blocs de majúscules definits, executa el codi dins d’aquest bloc fins que troba la paraula clau break.
Si no troba cap coincidència en cap dels blocs de majúscules definits, salta a la sentència per defecte i executa el codi que hi ha al seu interior. El bloc per defecte és opcional i ometible si no cal fer cap acció per a un escenari que no coincideixi
NOTA: És bo assegurar-se que cada sentència de cas finalitzi amb una sentència break per evitar que s'executin totes les sentències després del bloc coincident.
Exemple de declaració de cas de commutació C
Il·lustrem la sentència switch amb un exemple molt senzill:
#incloureprincipal() {
inton= 5;
interruptor (on) {
cas3:
printf ('El valor és 3');
trencar;
cas4:
printf ('El valor és 4');
trencar;
cas5:
printf ('El valor és 5');
trencar;
per defecte:
printf ('El valor no és ni 3, 4 ni 5');
}
tornar0;
}
Si executem l'exemple anterior, hauríem d'obtenir una sortida similar a la següent:
El valor és5El diagrama de flux següent il·lustra la lògica del programa anterior:
Una declaració de commutador imbricat
C us permet tenir instruccions de switch niades dins d'una instrucció de switch. L'instrucció de commutador imbricat es relaciona amb el valor de l'interruptor exterior.
Penseu en el següent exemple:
#incloureprincipal() {
intdepartament= 5;
intaccess_code= 2028;
interruptor (departament) {
cas1:
interruptor (codi d'accés) {
cas2021:
printf ('[+] Codi d'accés vàlid!');
trencar;
per defecte:
printf ('[-] Codi d'Accés incorrecte!');
}
trencar;
per defecte:
printf ('[-] Només es permet el departament 1!');
}
tornar0;
}
A l'exemple anterior, implementem dues sentències de commutació. El primer comprova si el departament proporcionat és 1. Si és cert, passa al següent bloc de commutació i comprova el codi d’accés vàlid.
Si el valor de departament no és un, l'execució es mou al bloc per defecte.
A continuació s’executa el codi anterior amb un codi de sortida i accés correcte i incorrecte.
En el primer exemple, tant el codi de departament com el d’accés són correctes; per tant, l'execució mai no arriba als blocs predeterminats.
En el segon exemple, tant el codi de departament com el d’accés són incorrectes; per tant, l'execució salta immediatament al primer bloc per defecte.
Directrius per a les declaracions de commutació
A continuació s’indiquen directrius ràpides que cal destacar a l’hora de crear sentències de commutació a C.
- Heu de passar una expressió a la paraula clau commutadora.
- Les declaracions de casos han de comprovar si hi ha valors únics
- Acabeu cada bloc de majúscules i minúscules mitjançant la paraula clau break.
- Podeu anidar declaracions de commutador múltiples.
- Podeu incloure una sentència predeterminada quan calgui una acció per a casos que no coincideixin.
Conclusió
Aquesta guia us ha guiat pels conceptes bàsics de creació i ús d’instruccions de commutació C. Les instruccions de commutació són útils quan teniu casos de decisió complexos que poden ser difícils d’implementar amb la sentència i if else.