Fundamentos

Tutorial Fundamentos: Estructuras de control condicional

PseInt: Aprende a gestionar decisiones con If Else en programación. Desarrolla habilidades para manejar condiciones anidadas, operadores lógicos y el operador ternario.

Aprende Fundamentos GRATIS y certifícate

Decisiones con if else

En programación, las estructuras condicionales permiten tomar decisiones basadas en condiciones lógicas. La más básica de estas estructuras es el if else, que ejecuta un bloque de código si una condición es verdadera y otro bloque si es falsa.

En PseInt, la sintaxis para una decisión con if else es:

Si <condición> Entonces
    <instrucciones_si_verdadero>
Sino
    <instrucciones_si_falso>
FinSi

Por ejemplo, para determinar si un número es par o impar, podemos escribir:

Algoritmo VerificarNumeroPar
    Definir numero Como Entero

    Escribir "Introduce un número:"
    Leer numero

    // Uso de la operación mod para determinar si el residuo es 0
    Si numero mod 2 = 0 Entonces
        Escribir "El número es par"
    Sino
        Escribir "El número es impar"
    FinSi
FinAlgoritmo

En Python, el código equivalente sería:

numero = int(input("Introduce un número: "))
if numero % 2 == 0:
    print("El número es par")
else:
    print("El número es impar")

Y en JavaScript, tendríamos:

let numero = parseInt(prompt("Introduce un número: "));
if (numero % 2 === 0) {
    console.log("El número es par");
} else {
    console.log("El número es impar");
}

La condición dentro del if es una expresión lógica que se evalúa como verdadera o falsa. En PseInt, podemos utilizar operadores relacionales (=, <>, >, <, >=, <=) y operadores lógicos (&, |, ~) para construir estas expresiones.

Otro ejemplo: verificar si una persona es mayor de edad.

Algoritmo VerificarMayorDeEdad
    Definir edad Como Entero

    Escribir "Introduce tu edad:"
    Leer edad

    Si edad >= 18 Entonces
        Escribir "Eres mayor de edad"
    Sino
        Escribir "Eres menor de edad"
    FinSi
FinAlgoritmo

En Python:

edad = int(input("Introduce tu edad: "))
if edad >= 18:
    print("Eres mayor de edad")
else:
    print("Eres menor de edad")

Es fundamental finalizar la estructura condicional con FinSi en PseInt, lo que indica el fin del bloque de decisión. Además, mantener una correcta indentación mejora la legibilidad y ayuda a evitar errores.

Las palabras clave en PseInt, como Si, Entonces, Sino y FinSi, deben escribirse exactamente como se definen. Esto asegura que el intérprete reconozca correctamente la estructura del programa.

Utilizar estructuras if else eficientemente permite crear programas que reaccionan de manera dinámica a diferentes situaciones, haciendo que el código sea más flexible y robusto.

Evaluar múltiples condiciones

En programación, es común necesitar evaluar varias condiciones al mismo tiempo para decidir el flujo del programa. En PseInt, podemos combinar múltiples condiciones utilizando los operadores lógicos: y, o y no.

Los operadores lógicos permiten construir expresiones más complejas que se evalúan como verdaderas o falsas. Los operadores principales son:

  • Y (and): La expresión es verdadera si ambas condiciones son verdaderas.
  • O (or): La expresión es verdadera si al menos una de las condiciones es verdadera.
  • No (not): Invierte el valor lógico de la condición.

Ejemplo en PseInt: Verificar si un número está dentro de un rango específico.

Algoritmo RangoNumerico
    Definir numero Como Entero
    
    Escribir "Introduce un número:"
    Leer numero
    
    Si numero >= 1 y numero <= 10 Entonces
        Escribir "El número está entre 1 y 10"
    Sino
        Escribir "El número está fuera del rango"
    FinSi
FinAlgoritmo

En este caso, la condición numero >= 1 y numero <= 10 utiliza el operador y para asegurarse de que el número cumple ambas condiciones.

El equivalente en Python sería:

numero = int(input("Introduce un número: "))
if 1 <= numero <= 10:
    print("El número está entre 1 y 10")
else:
    print("El número está fuera del rango")

Para evaluar si un número es par o es múltiplo de 5, podemos usar el operador o.

Ejemplo en PseInt:

Algoritmo ParOMultiplo5
    Definir numero Como Entero
    
    Escribir "Introduce un número:"
    Leer numero
    
    // Uso de 'mod' para comprobar divisibilidad
    Si numero mod 2 = 0 o numero mod 5 = 0 Entonces
        Escribir "El número es par o múltiplo de 5"
    Sino
        Escribir "El número no es par ni múltiplo de 5"
    FinSi
FinAlgoritmo

En Python:

numero = int(input("Introduce un número: "))
if numero % 2 == 0 or numero % 5 == 0:
    print("El número es par o múltiplo de 5")
else:
    print("El número no es par ni múltiplo de 5")

Podemos también utilizar el operador no para negar una condición. Por ejemplo, verificar si un usuario no ha introducido una contraseña correcta.

Ejemplo en PseInt:

Algoritmo VerificarClave
    Definir clave Como Caracter
    
    Escribir "Introduce la clave:"
    Leer clave
    
    Si no clave = "secreta" Entonces
        Escribir "Acceso denegado"
    Sino
        Escribir "Bienvenido"
    FinSi
FinAlgoritmo

En Python:

clave = input("Introduce la clave: ")
if clave != "secreta":
    print("Acceso denegado")
else:
    print("Bienvenido")

Es importante recordar que en PseInt, los operadores lógicos son palabras: y, o, no, mientras que en Python se utilizan símbolos como and, or, not.

Ejemplo en PseInt con una condición más compleja:

Algoritmo RequisitosCredito
    Definir edad Como Entero
    Definir ingreso Como Real
    
    Escribir "Introduce tu edad:"
    Leer edad
    Escribir "Introduce tu ingreso mensual:"
    Leer ingreso
    
    Si edad >= 18 y ingreso >= 1000 Entonces
        Escribir "Cumples los requisitos para el crédito"
    Sino
        Escribir "No cumples los requisitos para el crédito"
    FinSi
FinAlgoritmo

Esto verifica que el usuario cumple ambas condiciones: ser mayor de edad y tener ingresos suficientes.

En Python:

edad = int(input("Introduce tu edad: "))
ingreso = float(input("Introduce tu ingreso mensual: "))
if edad >= 18 and ingreso >= 1000:
    print("Cumples los requisitos para el crédito")
else:
    print("No cumples los requisitos para el crédito")

Condiciones anidadas

Las condiciones anidadas permiten evaluar situaciones complejas al incluir estructuras condicionales dentro de otras. Esto es útil cuando una decisión depende del resultado de una condición previa, creando así un flujo lógico más detallado.

En PseInt, podemos anidar un Si dentro de otro Si para establecer condiciones dependientes. Es esencial mantener una correcta indentación para mejorar la legibilidad y evitar errores en el código.

Por ejemplo, supongamos que queremos determinar si un número es positivo, negativo o cero, y además verificar si es par o impar en caso de no ser cero.

Algoritmo SignoYParidad
    Definir numero Como Entero

    Escribir "Introduce un número:"
    Leer numero

    Si numero = 0 Entonces
        Escribir "El número es cero"
    Sino
        Si numero > 0 Entonces
            Escribir "El número es positivo"
        Sino
            Escribir "El número es negativo"
        FinSi

        Si numero mod 2 = 0 Entonces
            Escribir "Y es par"
        Sino
            Escribir "Y es impar"
        FinSi
    FinSi
FinAlgoritmo

En este ejemplo, el Si externo verifica si el número es cero. Si no lo es, se anidan dos Si adicionales: uno para determinar el signo y otro para evaluar la paridad del número.

El código equivalente en Python sería:

numero = int(input("Introduce un número: "))
if numero == 0:
    print("El número es cero")
else:
    if numero > 0:
        print("El número es positivo")
    else:
        print("El número es negativo")
    if numero % 2 == 0:
        print("Y es par")
    else:
        print("Y es impar")

Anidar condiciones es especialmente útil cuando una evaluación depende de otra anterior. Esto proporciona mayor control y precisión en la toma de decisiones dentro del programa.

Otro ejemplo es determinar la categoría de una persona según su edad. Si la edad es menor de 18, es menor de edad. Si tiene entre 18 y 64 años, es un adulto. Si tiene 65 años o más, es un adulto mayor.

Algoritmo CategorizarEdad
    Definir edad Como Entero

    Escribir "Introduce tu edad:"
    Leer edad

    Si edad < 18 Entonces
        Escribir "Eres menor de edad"
    Sino
        Si edad < 65 Entonces
            Escribir "Eres adulto"
        Sino
            Escribir "Eres adulto mayor"
        FinSi
    FinSi
FinAlgoritmo

En este caso, la condición anidada dentro del Sino nos permite distinguir entre un adulto y un adulto mayor después de haber descartado que sea menor de edad.

El equivalente en Python sería:

edad = int(input("Introduce tu edad: "))
if edad < 18:
    print("Eres menor de edad")
else:
    if edad < 65:
        print("Eres adulto")
    else:
        print("Eres adulto mayor")

Las condiciones anidadas ofrecen flexibilidad adicional cuando las situaciones no pueden ser resueltas únicamente con operadores lógicos o estructuras sencillas. Por ejemplo, si queremos determinar si un estudiante ha aprobado o suspendido y además si su nota es sobresaliente en caso de aprobar.

Algoritmo EvaluarNota
    Definir nota Como Real

    Escribir "Introduce tu nota:"
    Leer nota

    Si nota >= 5 Entonces
        Si nota >= 9 Entonces
            Escribir "Has aprobado con sobresaliente"
        Sino
            Escribir "Has aprobado"
        FinSi
    Sino
        Escribir "Has suspendido"
    FinSi
FinAlgoritmo

Aquí, la segunda condición anidada verifica si la nota es igual o superior a 9 solo si el estudiante ha aprobado.

En Python, el código sería:

nota = float(input("Introduce tu nota: "))
if nota >= 5:
    if nota >= 9:
        print("Has aprobado con sobresaliente")
    else:
        print("Has aprobado")
else:
    print("Has suspendido")

Es fundamental en PseInt utilizar correctamente los FinSi para cerrar cada estructura condicional anidada. Esto asegura que el programa funcione según lo esperado y facilita su mantenimiento.

Las condiciones anidadas también permiten manejar situaciones donde ciertas verificaciones solo tienen sentido después de cumplir una condición inicial. Por ejemplo, verificar si una persona es apta para un trabajo solo si tiene la edad mínima requerida.

Algoritmo DeterminarAptitud
    Definir edad, experiencia Como Entero

    Escribir "Introduce tu edad:"
    Leer edad

    Si edad >= 18 Entonces
        Escribir "Introduce tus años de experiencia:"
        Leer experiencia

        Si experiencia >= 2 Entonces
            Escribir "Eres apto para el trabajo"
        Sino
            Escribir "No tienes suficiente experiencia"
        FinSi
    Sino
        Escribir "No cumples con la edad mínima"
    FinSi
FinAlgoritmo

En este ejemplo, solo se pide la experiencia si el candidato cumple con la edad mínima, evitando así evaluaciones innecesarias.

El equivalente en Python:

edad = int(input("Introduce tu edad: "))
if edad >= 18:
    experiencia = int(input("Introduce tus años de experiencia: "))
    if experiencia >= 2:
        print("Eres apto para el trabajo")
    else:
        print("No tienes suficiente experiencia")
else:
    print("No cumples con la edad mínima")

Mantener una correcta indentación es clave al trabajar con condiciones anidadas, tanto para la legibilidad como para evitar errores en la ejecución del programa.

Las condiciones anidadas son una herramienta poderosa para resolver problemas donde las decisiones están interrelacionadas. Comprender su uso y aplicarlas adecuadamente mejora la eficiencia y claridad del código en programas complejos.

Operador ternario

El operador ternario es una estructura condicional que permite simplificar asignaciones basadas en una condición en una sola línea de código. A diferencia de las estructuras Si tradicionales, el operador ternario ofrece una sintaxis más concisa para expresiones simples.

En PseInt, aunque no existe un operador ternario como tal, podemos simular su funcionalidad utilizando expresiones condicionales. Sin embargo, es importante conocer cómo se implementa en lenguajes como Python o JavaScript para entender su utilidad.

En Python, la sintaxis del operador ternario es:

valor_si_verdadero if condicion else valor_si_falso

Por ejemplo, para asignar el valor absoluto de un número:

numero = -5
absoluto = numero if numero >= 0 else -numero
print("El valor absoluto es:", absoluto)

En este caso, si numero es mayor o igual a cero, absoluto toma el valor de numero; de lo contrario, toma el valor de -numero.

En JavaScript, la sintaxis es ligeramente diferente:

let numero = -5;
let absoluto = (numero >= 0) ? numero : -numero;
console.log("El valor absoluto es: " + absoluto);

Aquí, la condición se coloca antes del símbolo ?, seguido de los valores para los casos verdadero y falso separados por :.

En PseInt, se simplifica una asignación condicional en PseInt mediante el uso de la estructura Si en una sola línea, aunque esto puede afectar la claridad del código:

Definir numero, absoluto Como Entero
numero <- -5
Si numero >= 0 Entonces
    absoluto <- numero
Sino
    absoluto <- -numero
FinSi
Escribir "El valor absoluto es: ", absoluto

Aunque no es exactamente un operador ternario, esta forma compacta reduce la cantidad de líneas necesarias para realizar la asignación basada en una condición.

Es importante destacar que el operador ternario es útil para simplificar código cuando las decisiones son sencillas y no requieren múltiples condiciones o acciones. Sin embargo, su uso excesivo puede reducir la legibilidad del código, por lo que debe emplearse con criterio.

Veamos otro ejemplo práctico. Supongamos que queremos determinar si un número es par o impar y asignar una cadena con el resultado.

En Python:

numero = 4
resultado = "Par" if numero % 2 == 0 else "Impar"
print("El número es:", resultado)

En JavaScript:

let numero = 4;
let resultado = (numero % 2 === 0) ? "Par" : "Impar";
console.log("El número es: " + resultado);

En resumen, aunque PseInt no dispone de un operador ternario nativo, podemos emular su comportamiento mediante estructuras condicionales simplificadas. Comprender el operador ternario en otros lenguajes como Python y JavaScript nos permite escribir código más elegante y eficiente cuando sea apropiado.

Es recomendable utilizar el operador ternario cuando la simplicidad y la claridad no se vean comprometidas. En situaciones donde las condiciones son más complejas, es preferible optar por estructuras condicionales tradicionales para mantener un código legible y mantenible.

Para seguir leyendo hazte Plus

¿Ya eres Plus? Accede a la app

Plan mensual

19.00 € /mes

Precio normal mensual: 19 €
47 % DE DESCUENTO

Plan anual

10.00 € /mes

Ahorras 108 € al año
Precio normal anual: 120 €
Aprende Fundamentos GRATIS online

Todas las lecciones de Fundamentos

Accede a todas las lecciones de Fundamentos y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Accede GRATIS a Fundamentos y certifícate

En esta lección

Objetivos de aprendizaje de esta lección

  • Comprender cómo funcionan las estructuras condicionales if else en PseInt, Python y JavaScript.
  • Aprender a utilizar operadores relacionales y lógicos para evaluar condiciones complejas.
  • Dominar el uso de condiciones anidadas para gestionar decisiones dependientes. 
  • Implementar evaluaciones simples con el operador ternario en Python y JavaScript.
  • Aplicar estos conceptos para escribir código más flexible y robusto.