Programación PIC en C

 

 

Volver al índice

Sentencia switch

La sentencia switch se compone de las siguientes palabras clave: switch, case, default y break.

 

Lo que hace está sentencia es comparar sucesivamente el valor de una expresión (dicha expresión tan solo puede ser de tipo entero o de tipo carácter) con una lista de constantes enteras o de caracteres. Cuando la expresión coincide con la constante, ejecuta las sentencias asociadas a ésta.

 

La estructura de la sentencia switch es la siguiente:

 

 

Sentencia switch()

 

La sentencia break hace que el programa salte a la línea de código siguiente a la sentencia switch. Si se omite se ejecutará el resto de casos case hasta encontrar el próximo break.

 

La sentencia default se ejecuta cuando no ha habido ninguna coincidencia. La parte default es opcional y, si no aparece, no se lleva a cabo ninguna acción al fallar todas las pruebas y el programa seguirá a partir de la llave que cierra la sentencia switch

 

Consideraciones a la hora de usar esta sentencia:

 

  • En una sentencia switch No puede haber dos sentencias case con el mismo valor de constante.
  • Una constante char se convierte automáticamente a sus valores enteros.
  • Switch difiere del if en que switch solo puede comprobar la igualdad mientras que if puede evaluar expresiones relacionales o lógicas. Además cuando la comparación se basa en variables o se trabaja con expresiones que devuelven float deberemos usar el if-else.
  • Hay que decir que la secuencia de sentencias en un case no es un bloque (no tiene porque ir entre llaves). Por lo tanto no podríamos definir una variable local en él. Mientras que la estructura swith global sí que es un bloque.

 

Vamos a ver un ejemplo para ver todo esto:

 

 

Ejemplo de la sentencia switch

Comentario

 

En el ejemplo introducimos un carácter numérico, lo almacenamos en el array llamado cadena1 y por medio de la función atoi() lo convertimos a un valor entero y guardamos su valor en la variable de tipo entero num, no hay que olvidarse de incluir el archivo de cabecera “stdlib.h” necesaria para la función atoi().

 

 

Ahora introducimos valores para ver que obtenemos a la salida.

 

Si introducimos un “1”, coincidirá con el valor de la constante asignada al primer case, por lo cual se ejecutan las dos primeras sentencias y el programa para de ejecutar sentencias porque se ha encontrado con un break, después ejecuta el último printf() por estar esta sentencia fuera de las llaves que delimitan a switch.


Fijaros en el segundo case, he omitido su break correspondiente a posta (el compilador no da error si se quita), para que veáis el resultado cuando se introduce un “2”:

 

Salida Ejemplo swich

 

Como veis en la figura de arriba se ejecutan las sentencias pertenecientes al segundo case, pero al no encontrar la sentencia break, ejecuta también la sentencia del tercer case. Esto hay que tenerlo en cuenta para tener claro que lo que hace salir de la sentencia switch es el break correspondiente a cada case.

 

Si introducimos por ejemplo un “9” al no a ver coincidencia con el valor de ningún case, se ejecutará la sentencia perteneciente a default.

 

 

El código fuente del ejemplo lo tenéis aquí.

 

 

Un ejemplo un poco más práctico del uso de esta sentencia, lo tenéis aquí, gracias a QuijotescoXp, que ha hecho una mejora en el decodificador binario a decimal que en su día incluí en la sección de prácticas, os animo a que participes en el foro aportando mejoras ó ejemplos nuevos, de esta forma ayudas a que el curso vaya para adelante.

 

Un saludo y hasta pronto

 

 

Volver al índice

 

© 2007-2017 AquiHayapuntes.com