Tutorial de Programación en C para Linux Parte 16: Sentencias Switch, Break y Continue
Ya hemos hablado de algunos de los bucles básicos utilizados en el lenguaje de programación C, como for, while y do…while. Estos bucles, como la mayoría de vosotros estaréis de acuerdo, básicamente te ayudan cuando las instrucciones deben ejecutarse repetidamente bajo una o más condiciones. Así escribes menos código y, de paso, lo haces más legible.
Al igual que estos bucles, hay algunas sentencias que te ayudan a escribir mejor código en C. Algunas de esas sentencias son Switch, Break, Continue y Goto. Analicémoslas una a una.
Sentencia Switch
Switch es básicamente una sentencia que acepta un valor, en función del cual ejecuta un fragmento de código. Es una sentencia de control, ya que cambia el control de ejecución en función del valor introducido.
Ésta es la estructura de Switch:
... ... ... switch (expression) { case const_val_1: //some code break; case const_val_2: //some code break; case const_val_3: //some code break; default: //some code break; } ... ... ...
Aquí, ‘expresión’ es un valor que se pasa como entrada a la sentencia ‘switch’, y en función del caso que coincida con el valor de ‘expresión’, se ejecuta el código correspondiente. A continuación se muestra un ejemplo práctico en el que switch hace que el código sea menos complejo y mejora la legibilidad.
#include <stdio.h> int main() { int roll; printf("Enter a roll number in range of 1 - 5: "); scanf("%d", &roll); switch(roll) { case 1: printf("name of student is RON"); break; case 2: printf("name of student is ROGER"); break; case 3: printf("name of student is SAM"); break; case 4: printf("name of student is LUCIE"); break; case 5: printf("name of student is DORN"); break; default: printf("Entered roll number didn't match any candidate"); break; } return 0; }
Aquí, el número de tirada introducido por el usuario en la entrada se introduce en la sentencia switch y se ejecuta el código correspondiente al caso que coincida.
Observa que la sentencia «break» al final de cada caso garantiza que se salga de la sentencia switch después de ejecutar el caso coincidente. Si no hay ninguna sentencia «break», el flujo de ejecución pasa al siguiente caso.
El caso «por defecto» está ahí para asegurarse de que se notifica al usuario si ningún caso coincide con el valor del conmutador. Tener un caso «por defecto» no es obligatorio, pero siempre es útil.
Además, como el caso por defecto suele ser el último caso de la sentencia switch, tener un «break» al final tampoco es obligatorio, pero se recomienda porque se considera programación defensiva (por si acaso se añaden más casos en el futuro después del caso «por defecto»).
Romper y continuar
Ten en cuenta que, además de ‘switch’, la sentencia ‘break’ también se puede utilizar para salir antes de bucles como for, while y do…while.
... ... ... for(i=0; i<10; i++) { //statements if(condition) break; //statements } ... ... ...
Pasando ahora a ‘continuar’, al igual que ‘break’ provoca una salida anticipada de un bucle, ‘continuar’ fuerza la siguiente iteración del bucle, que en el caso de while y do…while comienza con la comprobación de la condición y en el caso de un bucle ‘for’ es el paso de incremento.
Aquí tienes un ejemplo que utiliza ‘continue’ para saltar números impares dentro de un bucle for:
... ... ... for(i=0; i<100; i++) { if(i%2) continue; //statements } ... ... ...
Ten en cuenta que no puedes utilizar ‘continue’ dentro de switch, excepto en los casos en que el propio ‘switch’ forme parte de un bucle.
Conclusión
En este tutorial hemos tratado las sentencias break, continue y switch. Prueba los ejemplos o el código de demostración que hemos compartido en este tutorial en tu sistema para familiarizarte con estos conceptos. Si tienes alguna duda o consulta, háznoslo saber en los comentarios.