13 de junio de 2016

La estructura de control switch.

   La estructura de control para la selección switch tiene la siguiente estructura general:

                    switch (expresión) {
                        case expresión_constante1:
                            sentencia(s)1;
                            break;
                        case expresión_constante2:
                            sentencia(s)2;
                            break;
                            .
                            .
                            .
                        case expresión_constanteN:
                            sentencia(s)N;
                            break;
                        default:
                            sentencia(s)N + 1;
                    }

   La estructura de control switch evalúa la expresión y compara el resultado con el valor de la expresión_constante1 después de la palabra reservada case; si coinciden, entonces se procesan o ejecutan el grupo de sentencia(s)1 (sentencia(s)1, sentencia(s)2, sentencia(s)N o sentencia(s)N + 1 puede ser cualquier sentencia(s) válida(s) en el lenguaje de programación C, como por ejemplo, otras estructuras de control (de selección y de repetición) incluida ella misma, a lo cual se le denomina: estructuras de control anidadas) hasta encontrar la palabra reservada break. En caso de no coincidir, la estructura switch compara el resultado de la expresión con el de expresión_constante2, si coincide, se procesan o ejecutan el grupo de sentencia(s)2 hasta encontrar la palabra reservada break. El proceso descrito continúa de manera análoga para todos los valores de expresión_constante que contenga la estructura switch.

   Por otro lado, el grupo de sentencia(s)N + 1 se procesan o ejecutan sólo si el resultado de la expresión no coincidiera con ninguna de las N expresiones_constantes, lo cual representa el caso por omisión (default).

   Debe resaltarse la importancia en el uso de la palabra reservada break, ya que si se omite, el compilador no generará ningún tipo de error, pero una posible consecuencia sería, por ejemplo, algunos minutos de "entretenidas" sesiones de depuración.

   Al igual que antes, observe que la llave izquierda “{” delimita el inicio del bloque de la estructura switch, mientras que la llave derecha “}” delimita su final.

   El Ejemplo 3.7 muestra el uso de la estructura switch. El programa lee un número entero, y a través de esta estructura de control, “convierte” el número en su correspondiente palabra.

   La estructura de selección switch trabaja de la siguiente manera:  la línea 12 evalúa el valor de la variable num y lo compara con el valor que se encuentra después de la primera palabra reservada case (línea 13); si coincide, entonces se procesa la sentencia de la línea 14 y a continuación la de la línea 15, la cual le indica a la estructura de selección switch que termine (procesar el break sería equivalente a procesar la llave de fin de bloque de la estructura switch), y procese la primera sentencia que se encuentre después del final de su bloque. En caso de no coincidir, el proceso de comparación se repetiría con los valores de las líneas 16 y 19, para finalmente procesar la sentencia default, en caso de no existir coincidencia.

   Experimente eliminando del Ejemplo 3.7 una, dos, o las tres sentencias break en diferentes combinaciones. No olvide compilar de nuevo el programa en cada modificación que realice. La intención de esta prueba controlada es la de proporcionarle una valiosa experiencia en la omisión intencional de la sentencia break.

   Una posible salida para el Ejemplo 3.7 se muestra en la siguiente figura:

Una posible salida del Ejemplo 3.7.