¿Qué son las estructuras condicionales?
Las estructuras condicionales son instrucciones de control que permiten que un programa ejecute diferentes bloques de código en función de si se cumple o no una determinada condición.
Gracias a ellas, un programa puede tomar decisiones durante su ejecución, adaptando su comportamiento según los datos de entrada o el estado del sistema.
Conceptos fundamentales
Para comprender las estructuras condicionales es imprescindible conocer los siguientes conceptos:
- Condición: expresión lógica cuyo resultado es verdadero o falso.
- Expresión relacional: compara dos valores.
- Expresión lógica: combina varias condiciones mediante operadores lógicos.
- Bloque de instrucciones: conjunto de sentencias que se ejecutan si la condición se cumple.
- Flujo de control: orden en el que se ejecutan las instrucciones del programa.
Funcionamiento de una estructura condicional
El funcionamiento básico es el siguiente:
Evaluar condición
│
¿Verdadera?
┌────┴────┐
Sí No
│ │
Bloque A Bloque B
│ │
└────┬─────┘
Continuar programa
El programa evalúa una condición y decide qué camino seguir.
Operadores relacionales
Los operadores relacionales permiten comparar valores.
| Operador | Significado |
|---|---|
| == | Igual que |
| != | Distinto de |
| > | Mayor que |
| < | Menor que |
| >= | Mayor o igual que |
| <= | Menor o igual que |
Ejemplo:
edad >= 18
==) con el operador de asignación (=) en muchos lenguajes de programación.
Operadores lógicos
Permiten combinar varias condiciones.
| Operador | Significado |
|---|---|
| AND (&&) | Ambas condiciones deben cumplirse |
| OR ( | |
| NOT (!) | Invierte el resultado de la condición |
Ejemplo:
edad >= 18 AND carnet = verdadero
Estructura condicional simple (if)
La estructura if ejecuta un bloque únicamente cuando la condición es verdadera.
Sintaxis
Si condición entonces
instrucciones
Fin Si
Funcionamiento
Condición
│
¿Verdadera?
│
Sí
│
Instrucciones
│
Continuar
Estructura condicional doble (if-else)
Permite ejecutar un bloque cuando la condición es verdadera y otro distinto cuando es falsa.
Sintaxis
Si condición entonces
bloque A
Si no
bloque B
Fin Si
Ejemplo
Si nota >= 5
Aprobado
Si no
Suspenso
Fin Si
Estructura condicional múltiple (if-else if)
Permite evaluar varias condiciones consecutivas.
Funcionamiento
Condición 1
│
¿Verdadera?
Sí │ No
│
Condición 2
│
¿Verdadera?
Sí │ No
│
Condición 3
│
...
Se ejecuta el primer bloque cuya condición resulte verdadera.
Estructura switch o selección múltiple
La estructura switch permite seleccionar una acción entre múltiples opciones basándose en el valor de una variable.
Funcionamiento
Switch(variable)
Caso 1
Caso 2
Caso 3
...
Caso por defecto
Cuándo utilizarla
Es recomendable cuando todas las comparaciones se realizan sobre una misma variable.
switch suele ser más legible que una larga cadena de if-else if.
Condiciones anidadas
Es posible incluir una estructura condicional dentro de otra.
Ejemplo conceptual:
Si usuario válido
Si contraseña correcta
Acceso permitido
Fin Si
Fin Si
Evaluación de condiciones
Las condiciones pueden ser:
- Simples.
- Compuestas.
- Anidadas.
Ejemplos:
edad >= 18
edad >= 18 AND nacionalidad = "España"
(edad >= 18 OR emancipado) AND documento_valido
Comparación entre if y switch
| if | switch |
|---|---|
| Evalúa cualquier condición lógica | Evalúa el valor de una expresión |
| Mayor flexibilidad | Mayor claridad cuando existen muchos casos |
| Admite operadores lógicos | Normalmente compara valores constantes |
| Adecuado para condiciones complejas | Adecuado para múltiples alternativas simples |
switch.
Caso práctico
Situación
Un programa debe determinar el descuento aplicable según el tipo de cliente.
- Cliente Premium → 20 %
- Cliente Estándar → 10 %
- Resto → Sin descuento
Solución
La estructura más adecuada es un switch, ya que todas las decisiones dependen del valor de una única variable (tipoCliente).
Si, por el contrario, el descuento dependiera simultáneamente del importe de compra, la antigüedad y el tipo de cliente, sería más apropiado utilizar una estructura if-else.
Ventajas e inconvenientes
Ventajas
- Permiten tomar decisiones durante la ejecución.
- Hacen posible desarrollar algoritmos complejos.
- Mejoran la flexibilidad del programa.
- Facilitan la adaptación a diferentes situaciones.
Inconvenientes
- Un exceso de condiciones dificulta la lectura.
- El anidamiento excesivo reduce la mantenibilidad.
- Un orden incorrecto de las condiciones puede provocar errores lógicos.
Errores habituales
- Confundir el operador de asignación (
=) con el de comparación (==). - Escribir condiciones imposibles o redundantes.
- Colocar las condiciones en un orden incorrecto.
- Olvidar el caso por defecto (
default) en unswitch. - Anidar demasiadas estructuras condicionales.
- Confundir operadores lógicos (
AND,OR,NOT).
Cómo evitarlos
- Diferenciar claramente asignación y comparación.
- Simplificar las condiciones siempre que sea posible.
- Ordenar las condiciones de forma lógica.
- Utilizar
switchcuando exista una única variable de decisión. - Emplear paréntesis para aclarar expresiones complejas.
Relaciones con otros temas
Las estructuras condicionales están directamente relacionadas con:
- Algoritmos.
- Diagramas de flujo.
- Variables.
- Tipos de datos.
- Operadores relacionales.
- Operadores lógicos.
- Estructuras repetitivas.
- Funciones.
- Programación estructurada.
- Programación orientada a objetos.
Conceptos clave para recordar
[!NOTE]
- Las estructuras condicionales permiten tomar decisiones durante la ejecución de un programa.
- Evalúan una condición cuyo resultado siempre es verdadero o falso.
- La estructura if ejecuta un bloque únicamente si la condición es verdadera.
- La estructura if-else permite elegir entre dos caminos alternativos.
- La estructura if-else if evalúa varias condiciones de forma secuencial.
- La estructura switch selecciona un bloque según el valor de una expresión.
- Los operadores relacionales comparan valores y los operadores lógicos permiten combinar condiciones.
- El orden de evaluación de las condiciones puede modificar el resultado del programa.
- Un uso adecuado de las estructuras condicionales mejora la claridad, la mantenibilidad y la calidad del código.