Estructuras Selectivas en C

En este artículo describiremos cómo se implementa la estructura algorítmica selectiva, también conocidas como estructuras condicionales, en el lenguaje ANSI C. Si te interesa conocer al detalle las diferentes formas de uso de esta estructura de control de flujológica de programación y entender cómo funcionan las selectivas simpledoblesanidadas y múltiples, te invitamos a que visites nuestro artículo Estructura Algorítmica Selectiva. Si te interesa conocer como se implementa esta estructura en otros lenguajes de programación, te invitamos a que accedas a los siguientes enlaces en donde podrás ver la implementación de esta estructura en Java y Python.

El análisis de la estructura selectiva simple se encuentra sintetizado en el vídeo «Selectiva Simple en C» en nuestro canal de YouTube. Te invitamos a que lo visites.

A continuación presentamos la instrucción selectiva simple en ANSI C. Se implementa mediante la instrucción \texttt{if} como en la mayoría de los lenguajes de programación. La \texttt{condición} va inmediatamente después del \texttt{if} y obligatoriamente entre paréntesis.

En relación a la condición, esta deberá ser una expresión recordando que ANSI C asume el valor de \texttt{0} como falso. Cualquier expresión que retorne un número diferente de \texttt{0} (por ejemplo números negativos, números positivos, caracteres, entre otros), ANSI C lo asume como verdadero.

En relación a los llaves, éstas son de uso obligatorio cuando el conjunto de instrucciones está formado por dos o más instrucciones. Cuando el conjunto de instrucciones está formado por una sola instrucción, las llaves son opcionales.

En ANSI C, cada instrucción finaliza con un punto y coma.

if (condición){
    conjunto de instrucciones;
} 

Estructura Selectiva Doble

El análisis de la estructura selectiva doble se encuentra sintetizado en el vídeo «Selectiva Doble en C» en nuestro canal de YouTube. Te invitamos a que lo visites.

A continuación presentamos la instrucción selectiva doble en ANSI C. La selectiva doble tiene dos caminos El camino que se ejecuta cuando la \texttt{condición} es verdadera, se implementa mediante la instrucción \texttt{if} como en la selectiva simple. La \texttt{condición} va inmediatamente después del \texttt{if} y obligatoriamente entre paréntesis. El camino que se ejecuta cuando la \texttt{condición} es falsa, se implementa mediante la instrucción \texttt{else}.

En relación a las llaves de ambos conjuntos de instrucciones, éstas son de uso obligatorio cuando el conjunto de instrucciones está formado por dos o más instrucciones. Cuando el conjunto de instrucciones está formado por una sola instrucción, las llaves son opcionales.

if (condición){
    conjunto de instrucciones V;
}
else{
    conjunto de instrucciones F;
} 

Estructura Selectiva Anidada​

El análisis de la estructura selectiva anidada se encuentra sintetizado en el vídeo «Selectiva Anidada en C» en nuestro canal de YouTube. Te invitamos a que lo visites.

A continuación presentamos un posible uso de selectivas anidadas en ANSI C. Como podrá notar, se tiene una selectiva doble (selectiva con la \texttt{condición2}) dentro de una selectiva doble (selectiva con la \texttt{condición1}). Esto permite que un algoritmo pueda decidir sobre más de dos flujos posibles, lo cual es muy común en el diseño algorítmico.

La instrucción selectiva es considerada como una única instrucción por lo que no es necesario delimitarla entre llaves (\texttt{\{} y \texttt{\}}) cuando se anida.

if (condición1)
    if (condición2){
        conjunto de instrucciones V2;
    }
    else{
        conjunto de instrucciones F2;
    }
else{
    conjunto de instrucciones F1;
} 

Estructura Selectiva Múltiple​

En realidad, ANSI C no implementa de forma nativa una estructura selectiva múltiple sino un interruptor de control de flujo. Pero haciendo una pequeña adecuación, se puede comportar como selectiva múltiple.

Se implementa mediante la instrucción \texttt{switch} al igual que en Java. El \texttt{selector} va inmediatamente después del \texttt{switch} y obligatoriamente entre paréntesis. Los distintos bloques de instrucciones o caminos, se etiquetan con mediante la palabra reservada \texttt{case} seguido del valor que el  \texttt{selector} reconocerá.

Para que la instrucción \texttt{switch} funcione como una selectiva múltiple, es necesario que al final de cada bloque de instrucciones, se incluya la instrucción \texttt{break}. La instrucción \texttt{break} es una instrucción de ruptura de flujo, y si no la ponemos, el flujo continuará con los bloques que se encuentran debajo.

Finamente se cuenta con \texttt{default}. Esta cláusula es opcional y se usa cuando se requiere controlar situaciones de valores que no son reconocidos por el \texttt{selector}.

switch(selector) 
{
    case valor1:
        instrucciones 1; 
        break;
    case valor2: 
        instrucciones 2;
        break;
    case valor3: 
        instrucciones 3;
        break;
    ...
    case valorn;    
        instrucciones n;
        break;
    default: 
        instrucciones por defecto;
} 

Conclusión

En este artículo hemos presentado la implementación de la estructura algorítmica selectiva en ANSI C. Se han descrito la implementación de las diferentes formas de uso de esta estructura poniendo énfasis en las selectivas simpledoblesanidadas y múltiples. Si te interesa conocer como se implementa esta estructura en otros lenguajes de programación, te invitamos a que accedas a los siguientes enlaces en donde podrás ver la implementación de esta estructura en Java y Python.

Si quieres profundizar en el lenguaje ANSI C, no hay mejor libro que C Programming Language de Brian Kernighan  y Dennis Ritchie. Es un libro clásico escrito por el creador del lenguaje C. Uno de los libros favoritos de los que inician en ANSI C es  C Programming Absolute Beginner’s Guide de Greg Perry y Dean Miller.