Qué es una condicional
Hasta ahora, un programa hace todos sus pasos, uno tras otro. Pero muchas veces la respuesta depende de un dato: si llueve, llevas paraguas; si no, no. Una condicional (también llamada estructura de decisión o selectiva) hace justo eso: revisa una condición y, según el resultado, sigue un camino u otro.
La condición siempre es una pregunta que se responde con verdadero o falso, como edad >= 18 o respuesta = "si". Los operadores de comparación están en la guía de variables y operadores.
Si simple: hacer algo solo cuando se cumple
Lo que está entre Si … Entonces y FinSi solo se ejecuta cuando la condición es verdadera. Si es falsa, el programa se lo salta y sigue después del FinSi. En este ejemplo, una compra de más de 500 pesos tiene 10 % de descuento:
Algoritmo descuento
Leer total
Si total > 500 Entonces
total <- total * 0.9
FinSi
Escribir "A pagar: ", total
FinAlgoritmo
Con 800 se cumple la condición y se aplica el descuento. Con 300 no se cumple: el programa salta directo al Escribir y muestra 300.
Si … SiNo: elegir entre dos caminos
Cuando hay algo que hacer en los dos casos, se agrega SiNo. Siempre se ejecuta exactamente uno de los dos bloques, nunca ambos:
Algoritmo par_o_impar
Leer n
Si n MOD 2 = 0 Entonces
Escribir n, " es par"
SiNo
Escribir n, " es impar"
FinSi
FinAlgoritmo
En el diagrama de flujo, la condición es un rombo con dos salidas: una para «Sí» y otra para «No». Las dos ramas se vuelven a juntar antes de seguir.
Condiciones compuestas: Y, O, NO
A veces una sola comparación no alcanza. Para entrar a un concierto quizá necesitas boleto y ser mayor de edad. Para eso se combinan condiciones:
Y: se cumple si las dos partes son verdaderas.O: se cumple si al menos una es verdadera.NO: invierte el resultado.
Algoritmo rango_valido
Leer calificacion
Si calificacion >= 0 Y calificacion <= 10 Entonces
Escribir "Calificación válida"
SiNo
Escribir "Fuera de rango"
FinSi
FinAlgoritmo
Un error frecuente es escribir 0 <= calificacion <= 10, como en matemáticas. En pseudocódigo hay que escribir las dos comparaciones completas y unirlas con Y.
Si anidados: más de dos opciones
Un Si puede ir dentro de otro. Así se resuelven decisiones con tres o más resultados. Este programa clasifica una calificación:
Algoritmo calificacion_letra
Leer calificacion
Si calificacion >= 9 Entonces
Escribir "Excelente"
SiNo
Si calificacion >= 6 Entonces
Escribir "Aprobado"
SiNo
Escribir "Reprobado"
FinSi
FinSi
FinAlgoritmo
El orden de las preguntas importa. Primero se pregunta por el caso más alto (9 o más). Si no se cumple, ya sabes que es menor que 9 y solo falta distinguir entre aprobado y reprobado. Fíjate también en la sangría: cada FinSi cierra el Si que está a su misma altura.
En el diagrama se ve que hay tres caminos posibles y que, para cada dato, el programa recorre solo uno:
Segun: elegir entre varias opciones
Cuando la decisión depende de los valores exactos de una sola variable, Segun es más claro que muchos Si anidados. Cada opción lleva el valor, dos puntos y lo que hay que hacer. De Otro Modo atrapa cualquier valor que no esté en la lista:
Algoritmo dia_de_la_semana
Leer dia
Segun dia Hacer
1: Escribir "Lunes"
2: Escribir "Martes"
3: Escribir "Miércoles"
4: Escribir "Jueves"
5: Escribir "Viernes"
6, 7: Escribir "Fin de semana"
De Otro Modo: Escribir "Ese día no existe"
FinSegun
FinAlgoritmo
Una opción puede tener varios valores separados por comas, como 6, 7. Segun sirve para valores exactos (1, 2, 3 o "a", "b"), no para rangos: si necesitas «de 6 a 8», usa Si. Hay un reto completo con esta estructura: día de la semana con Segun.
¿Si o Segun?
| Situación | Usa | Ejemplo |
|---|---|---|
| Dos caminos | Si … SiNo | ¿Aprobó o no? |
| Rangos de valores | Si anidados | Calificación: 9-10, 6-8, 0-5 |
| Condiciones con Y / O | Si | Tiene boleto y es mayor de edad |
| Valores exactos de una variable | Segun | Opción de un menú: 1, 2, 3 |
Cómo probar una condicional
Un programa con decisiones necesita varios datos de prueba: al menos uno por cada camino, y los valores justo en el límite. Para el programa de calificaciones, prueba 10, 9, 8, 6, 5 y 0. Si la regla dice «6 o más», el 6 es el dato que descubre si escribiste > en lugar de >=.
La prueba de escritorio muestra qué camino tomó el programa. Con 800 en el ejemplo del descuento, se ve que entra al Si y total cambia:
| Paso | Línea | Instrucción | total | Pantalla |
|---|---|---|---|---|
| 1 | 3 | Leer total | 800 | |
| 2 | 4 | Si total > 500 Entonces | 800 | |
| 3 | 5 | total <- total * 0.9 | 720 | |
| 4 | 7 | Escribir "A pagar: ", total | 720 | A pagar: 720 |
Errores comunes
- Olvidar el
FinSi, sobre todo en los anidados. CadaSinecesita el suyo. - Usar
<-en la condición.Si edad <- 18no compara: lo correcto esSi edad >= 18. - Condiciones que se enciman. Si preguntas primero
calificacion >= 6y luegocalificacion >= 9, un 10 nunca llegará a «Excelente». Ordena de lo más específico a lo más general. - Comparar textos sin comillas.
Si respuesta = sibusca una variable llamada si. Lo correcto esSi respuesta = "si". - Escribir el rango como en matemáticas (
0 <= x <= 10) en lugar dex >= 0 Y x <= 10.
Si olvidas un FinSi, Jaguar te dice cuál y en qué línea empezó el bloque: «Encontré …, pero antes falta …».
Preguntas frecuentes
¿Qué es una estructura condicional en pseudocódigo?
Es una instrucción que hace que el programa elija qué pasos ejecutar según si una condición es verdadera o falsa. Las más comunes son Si … Entonces … SiNo … FinSi y Segun … FinSegun.
¿Cuál es la diferencia entre Si y Segun?
Si evalúa cualquier condición verdadera o falsa, incluidas comparaciones y rangos. Segun compara una sola variable contra valores exactos. Para un menú de opciones Segun es más claro; para rangos o condiciones combinadas se usa Si.
¿Es obligatorio poner SiNo?
No. Si solo hay que hacer algo cuando la condición se cumple, basta con Si … Entonces … FinSi. El SiNo se agrega cuando también hay algo que hacer en el caso contrario.
¿Cuántos Si puedo poner uno dentro de otro?
Los que necesites, pero con más de tres niveles el programa se vuelve difícil de leer. Si todas las preguntas son sobre el valor exacto de una variable, conviene usar Segun.