Estructuras de selección
Una parte fundamental de la creación de programas es la necesidad de cambiar la secuencia de las instrucciones y decidir qué instrucciones ejecutar y cuáles no. Las estructuras de control de flujo que le permiten a la computadora tomar decisiones son las estructuras de selección, de las cuales hablaré en esta entrada.
Clasificación de las estructuras de selección
Existen tres tipos de estructuras de selección:
- Estructura de selección simple
- Estructura de selección doble
- Estructura de selección múltiple
A continuación, revisaré brevemente cada una de ellas.
Estructura de selección simple
El objetivo de esta estructura es decidir ejecutar un bloque de código o no.

Figura 1. La estructura de selección simple (if) en notación de diagrama de flujo.
Como se puede apreciar en la figura 1 la estructura de selección simple se compone de tres partes:
- La expresión condicional, es decir, una expresión relacional o booleana. El resultado de esta expresión determinará si se ejecuta o no el bloque de la rama verdadera.
- El bloque de acciones de la rama verdadera: el conjunto de acciones a ejecutar SÓLO SI la expresión condicional resulta verdadera. En ocasiones, también puede suceder que esta rama se componga solamente de una acción, lo cual es válido.
- La sección común de la estructura de control, que se ejecutará sin importar el resultado de la expresión condicional.

Figura 2. La estructura de selección simple (if) en notación de pseudocódigo.
En la figura 2 muestro como se escribe esta estructura usando la notación de seudocódigo, y en la figura 3 muestro como se escribe usando el lenguaje Java.

Figura 3. La estructura de selección simple (if) escrita en lenguaje Java
Para esta estructura, así como también para la estructura de selección doble, es sumamente importante escribir correctamente la expresión condicional. (Recuerda que en este post describo como escribir este tipo de expresiones).
También observa cómo el uso de la sangría es relevante. No tanto para el compilador, sino más bien para el programador, pues nos permite escribir de una forma más legible los programas, lo que los hará también más fáciles de leer y entender. (Conoce más sobre el uso de la sangría en esta entrada)
Estructura de selección doble
El objetivo de esta estructura es decidir qué bloque de código ejecutar, si el que se encuentra en la rama verdadera o el que se encuentra en la rama falsa. La decisión dependerá de la evaluación de la expresión condicional.
En la figura 4 te muestro la representación de la estructura de selección doble usando la notación de diagramas de flujo. Como puedes observar, se compone de los siguientes elementos:
- La expresión condicional que determinará cuál bloque se ejecutará, el de la rama verdadera o el de la rama falsa
- El bloque de acciones de la rama verdadera: el conjunto de acciones a ejecutar SÓLO SI la expresión condicional resulta verdadera.
- El bloque de acciones de la rama falsa: el conjunto de acciones a ejecutar SÓLO SI la expresión condicional resulta falsa
- La sección común de la estructura de control, que se ejecutará sin importar el resultado de la expresión condicional.

Figura 4. La estructura de selección doble (if-else) escrita en notación de diagrama de flujo
En la figura 5 te muestro la forma en que se escribe esta estructura usando la notación de pseudocódigo. Recuerda que en la notación de pseudocódigo (o seudocódigo) puedes si así lo deseas, usar las palabras que se utilizan en el lenguaje de programación (if-else) o su equivalente en español como lo estoy haciendo en la figura. También puedes decidir utilizar las { } en lugar de las palabras Inicio y Fin para agrupar el bloque de cada rama.

Figura 5. La estructura de selección doble (if-else) escrita en notación de pseudocódigo.
En la figura 6 te muestro la forma de escribir esta estructura usando el lenguaje de programación Java.

Figura 6. La estructura condicional doble (if-else) escrita en lenguaje Java.
Algo sumamente importante es el uso del signo de punto y coma (;). Recuerda que en el lenguaje de programación Java este signo de puntuación indica que la instrucción ha terminado. Un error muy común en los programadores novicios es escribir el ; al final de la expresión condicional del if, como por ejemplo:
if (x>y); y = 8; else y = -2;
Esto lo que estaría haciendo sería precisamente terminar la estructura de control, la cual apenas está empezando. Si más adelante se escribe la rama falsa, el tipo de error que se estaría generando nos diría algo como esto:
“else without if”
Que en español sería “Se encontró un else sin su if correspondiente”, porque al colocar el ; se estaría terminando el if, y por lo tanto el else no corresponde al if escrito.
En una entrada posterior escribiré más sobre los posibles errores que pueden surgir en la estructura if-else.
Estructura de selección múltiple
Cuando las opciones a seleccionar son demasiadas, es complicado manejarlas con una estructura de selección doble. Aunque la mayoría de los lenguajes de programación modernos permiten las estructuras de selección anidadas, en algunos casos lo más simple es el uso de una estructura de selección múltiple.
El objetivo de esta estructura es decidir qué bloque de código ejecutar dentro de n posibles opciones. La decisión dependerá del valor de una variable, la cual generalmente debe ser de tipo entero. Entonces a diferencia de la estructura if, en donde se pueden escribir expresiones condicionales muy complejas para tomar una decisión, aquí es mucho más simple y sólo depende de la comparación directa del valor de una variable.
En la figura 7 te muestro la representación de la estructura de selección múltiple usando la notación de diagramas de flujo.

Figura 7. La estructura de selección múltiple (switch) escrita en notación de diagrama de fujo
Como puedes observar, se compone de los siguientes elementos:
- La variable que se utilizará para comparar con las n opciones dadas.
- Cada uno de los posibles valores que la variable puede tomar y que nos interesa evaluar.
- El bloque de acciones de cada opción.
- El bloque de acciones correspondiente a la opción “por default”
- La sección común de la estructura de control, que se ejecutará sin importar el resultado de la expresión condicional.
En la figura 8 te muestro la forma de secribir esta estructura usando pseudocódigo .

Figura 8. La estructura de selección múltiple escrita en notación de pseudocódigo.
Y en la figura 9 puedes apreciar la forma general de escribir la estructura switch en el lenguaje de programación Java.

Figura 9. La estructura de selección múltiple (switch) escrita en lenguaje Java.
Algunas observaciones a considerar sobre esta estructura:
- La variable que se utiliza generalmente es de tipo int, pero también puede ser de tipo short, byte o char.
- El valor a comparar en cada caso debe ser del mismo tipo de dato que la variable, es decir, si la variable es char, los casos serán valores como ‘a’, ‘b’, ‘c’, etc.
- En el lenguaje Java (así también como en el lenguaje C) por alguna extraña razón caer en un caso no garantiza que SÓLO se van a ejecutar las acciones escritas dentro de esa rama, sino que ejecuta las demás instrucciones (se sigue con todos los casos), sin importar si los demás casos no sean verdaderos. Entonces funciona más como si se tratara de una estructura que ayuda a seleccionar en donde empezar a ejecutar acciones. Para que ésta estructura funcione más como la estructura clásica CASE de lenguajes como Pascal o Visual Basic, se requiere escribir la instrucción break después de cerrar cada rama, de esta forma al llegar a la sentencia break la ejecución se saldrá de la estructura switch a la línea que se encuentre fuera de ésta.
- La opción default o “por omisión” es la que se ejecutará sólo si el valor de la variable no es igual a ninguno de los casos programados. Esta parte es opcional, pero si se tiene, debe escribirse al final del switch.
En esta entrada sólo quise dar una breve descripción de las estructuras de selección. Más adelante dedicaré un post para la estructura if-else y otra para la switch, incluyendo un ejemplo de cada una de ellas. Por lo mientras, los dejo, esperando que esta entrada haya sido de utilidad, y ya sabes, si te gustó comparte con quien pueda serle útil, o escríbeme un comentario.
¡Hasta la próxima!
1 respuesta
[…] de Control – Lógica de Programación UPP. Estructuras de selección – dCodinGames. Una parte fundamental de la creación de programas es la necesidad de cambiar la secuencia de las […]