Está en la página 1de 3

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 expresin (dicha expresin tan solo puede ser de tipo entero o de tipo carcter) con una lista de constantes enteras o de caracteres. Cuando la expresin coincide con la constante, ejecuta las sentencias asociadas a sta. La estructura de la sentencia switch es la siguiente: La sentencia break hace que el programa salte a la lnea de cdigo siguiente a la sentencia switch. Si se omite se ejecutar el resto de casos case hasta encontrar el prximo 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 accin 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 automticamente a sus valores enteros. Switch difiere del if en que switch solo puede comprobar la igualdad mientras que if puede evaluar expresiones relacionales o lgicas. Adems cuando la comparacin 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 podramos 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:

Comentario En el ejemplo introducimos un carcter numrico, lo almacenamos en el array llamado cadena1 y por medio de la funcin 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 funcin 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, despus 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 veis el resultado cuando se introduce un 2: Como veis en la figura de arriba se ejecutan las sentencias pertenecientes al segundo case, pero al no encontrar la sentencia break, ejecuta tambin 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 ningn case, se ejecutar la sentencia perteneciente a default. El cdigo fuente del ejemplo lo tenis aqu.

Un ejemplo un poco ms prctico del uso de esta sentencia, lo tenis aqu, gracias a QuijotescoXp, que ha hecho una mejora en el decodificador binario a decimal que en su da inclu en la seccin de prcticas, os animo a que participes en el foro aportando mejoras ejemplos nuevos, de esta forma ayudas a que el curso vaya para adelante.

También podría gustarte