Contenido del capítulo

En este capítulo, te enseño cómo funciona un condicional if mediante la estructura Si-Entonces de PSeInt, que es la equivalente.

Duración estimada de todo el contenido:
Duración del vídeo:
Contiene 1 ejercicio de programación para resolver. Contiene 1 vídeo.
Tabla de contenidos
Logo

    La estructura de control de flujo if

    El condicional IF (Si-Entonces de PSeInt)
    El condicional IF (Si-Entonces de PSeInt)

    Para practicar con los condicionales, vamos a utilizar la estructura condicional Si-Entonces de PSeInt.

    Espacio publicitario

    En la mayoría de lenguajes de programación, esta estructura se llama if.

    En Python hay dos estructuras condicionales, if y match. La segunda equivale a switch en muchos lenguajes de programación. Esta última, la veremos en otro capítulo.

    Empecemos preparando lo más básico, la variable que guardará la edad y la entrada para que el usuario la introduzca.

    Algoritmo mayorEdad
        // Variable del algoritmo
        Definir edad Como Entero
    
        // Se le solicita la edad al usuario
        Escribir "¿Cuántos años tienes?"
        Leer edad
    FinAlgoritmo

    Si no quieres escribir a mano la nueva estructura Si-Entonces de PSeInt, la puedes añadir a tus algoritmos con el botón que ves en la siguiente imagen:

    Comando Si-Entonces de PSeInt

    Esta estructura consta de tres partes:

    Si expresion_logica Entonces
        acciones_por_verdadero
    SiNo
        acciones_por_falso
    Fin Si

    Parte Si-Entonces

    La parte Si-Entonces (Líneas 1-2) consta de cuatro partes:

    • Parte Si: Nos indica que se empieza a escribir la estructura condicional.
    • Parte expresion_logica: Esta será reemplazada por una expresión de comparación, o booleana como las que has visto en el curso.
    • Parte Entonces: Esta última parte indica que va a empezar el bloque de código VERDADERO.
    • Parte acciones_por_verdadero: Esta última parte de la sección, será reemplazada por todo el código que quieras que se ejecute con el algoritmo, en caso de que la evaluación salga como VERDADERO.

    Esta primera parte, espera que le pongamos una expresión lógica, como las que utilizamos con los operadores de comparación. Por ejemplo, 10 > 20 es una expresión lógica que puede ofrecer un resultado lógico o booleano de VERDADERO o FALSO.

    Si esta expresión es verdadera, se va a ejecutar el código que hay después del Entonces, pero solo la línea que ves indentada; fíjate que pone "acciones_por_verdadero".

    Espacio publicitario

    Parte SiNo

    En las líneas 3-4 tenemos la siguiente sección del condicional, SiNo. Esta consta de dos partes:

    • Parte SiNo: Esta parte sirve para indicar que empieza esta sección del condicional.
    • Parte acciones_por_falso: Esta parte sirve para añadir todo el código que quieras que ejecute tu algoritmo en caso de que la expresión de comparación de la sección anterior (Si-Entonces) evalúe como FALSO.

    Si la expresión del Si es falsa, se ignora el código que haya en la parte de Si y se ejecuta el código que tiene este SiNo.

    Parte Fin Si

    La parte final, Fin Si, sirve para indicar al intérprete de PSeInt que termina ahí mismo la estructura.

    En Python y en casi todos los lenguajes de programación, el Si de PSeInt equivale a if, y el SiNo a else. El Entonces no existe en Python, pero si en otros lenguajes. Este suele denominarse then.
    Sin embargo, podríamos decir que en cierto modo, este then se aplica en Python con el símbolo de los dos puntos (:).

    Un ejemplo en Python es el siguiente:
    if 10 > 20:
    Que en PSeInt se vería de la siguiente forma:
    Si 10 > 20 Entonces

    if se puede traducir al español como si, y else como si no, o en caso contrario. De ahí vienen los nombres de PSeInt adaptándolos al español.

    Entonces se traduce al inglés como then.

    Ejemplo práctico

    Esto te quedará mucho más claro con el ejemplo práctico.

    Algoritmo mayorEdad
        // Variable del algoritmo
        Definir edad Como Entero
    
        // Se le solicita la edad al usuario
        Escribir "¿Cuántos años tienes?"
        Leer edad
    
        // Condicional para evaluar si es mayor de edad
        Si edad >= 18 Entonces
        Escribir "Ok. Puedes acceder."
        SiNo
        Escribir "No puedes acceder, eres menor de edad."
        Fin Si
    FinAlgoritmo

    En la expresión booleana, he puesto que si edad es mayor o igual que (>=) 18, que le diga al usuario, que puede acceder (se supone que esto serviría para dejar acceder a un usuario o no, a un programa completo). En cambio, si la edad introducida es menor que 18 o no es igual a 18, esta expresión del Si, se evalúa como FALSO por el intérprete. Por lo que ignora la parte del Si y ejecuta la parte del SiNo.

    Lo que dice el condicional, se podría traducir en lenguaje humano como:

    Si edad es mayor o igual a 18, dile al usuario que puede acceder. Si no es así, dile que no puede acceder.

    Espacio publicitario

    Probando el algoritmo

    Primero, vamos a probar con un valor de 20:

    Evaluación del condicional Si de PSeInt

    Ahora, con un valor de 16:

    Evaluación del condicional SiNo de PSeInt

    Diagrama de flujo de un condicional SiNo

    El diagrama de flujo indica los dos posibles caminos que tiene nuestro algoritmo. Ha dejado de ser un algoritmo lineal, para convertirse en un algoritmo con más de una posibilidad. Presta atención a las flechas que verás en él.

    Diagrama del condicional if

    En el futuro, utilizarás en tus algoritmos más de un condicional y podrás hacer más caminos posibles.

    Si la expresión edad >= 18 devuelve VERDADERO (V en el diagrama), se ejecuta el camino de la derecha. De ahí, pasa al fin del algoritmo, pero si hubiese más código después del condicional, este se ejecutaría.
    Ten en cuenta que siempre se va a saltar uno de los dos caminos.
    En cambio, si la expresión evalúa como FALSO va por el camino de la izquierda (F en el diagrama).

    Eso es todo, pero ya puedes ver, que puedes dotar a tus algoritmos de cierta "inteligencia". Esto es muy básico, pero pronto harás verdaderas maravillas.

    Espacio publicitario




    Espacio publicitario


    Ejercicio de programación para resolver

    25. En el siguiente código, si pongo en la consola una respuesta que no sea ni “feliz”, ni “triste”, ¿qué ocurrirá?

    1. Se ejecuta el código del Si.
    2. Se ejecuta el código del SiNo.
    3. Da error por valor no contemplado.

    La respuesta correcta es la B. Se va a ejecutar el bloque de código del SiNo. Esto es debido a que el SiNo, se ejecutará siempre que no haya una condición verdadera. Puesto que el bloque Si nos da FALSO al no coincidir, se ejecuta directamente, el SiNo.

    Con esto podemos llegar a la conclusión, de que el algoritmo no es demasiado robusto, ya que a la que el usuario se sale del "raíl", la respuesta que le da, no será la más adecuada.

    Por ejemplo, le paso en la entrada de datos (Leer) un "¡Estupendo!", en este caso, al ejecutarse el SiNo, me responderá "Oh, espero que tu día mejore pronto."; cosa que no tiene sentido.

    Para mejorar este algoritmo y hacerlo más consistente, tendremos que aplicar una lógica booleana de forma diferente y algo más compleja, mediante los operadores lógicos o con otras partes adicionales del condicional que veremos en el siguiente curso, el de Python básico.

    Espacio publicitario



    Espacio publicitario