lunes, 1 de abril de 2019

Estructuras de Control (I)


Seguimos con el curso de "Fundamentos de la Programación", y con esta entrada llegamos al tercer capítulo (no creíais que se llegaría, ¿eh?). Después de ver los distintos tipos de datos y sus operadores, toca comenzar a ver como alterar el flujo del programa, porque si no la cosa como que aburre un poco.

#03 - Estructuras de Control (I)
Hasta ahora, hemos aprendido a crear programas que siguen un esquema muy básico: (1) se le solicitan datos al usuario, (2) se opera con esos datos, (3) se le informa al usuario del resultado. A continuación, veremos cómo hacer que los programas tomen decisiones según los datos con los que operen.

Sentencia Condicional If
La primera cosa que aprenderemos es a utilizar la sentencia If. Su traducción al castellano es "Si", y modifica el flujo del programa permitiendo que ciertas lineas de código sólo se ejecuten si se cumple una condición previa:
a = int(input("Introduce un número entero: "))
resto = a % 2
if resto == 0:
    print("Es par")
if resto != 0:
    print("Es impar")
Este programa determina si un número entero introducido por el usuario es par o impar. Para calcularlo, utilizamos un nuevo operador, llamado módulo (%), que nos devuelve el resto de la división. Por lo tanto, si al dividir el número por dos, el resto es 0, significa que el número es par. En las líneas tres y cinco, estamos comprobando si la variable resto cumple o no ciertas condiciones (igual o distinto de dos, en este caso), y las líneas inferiores sólo se ejecutarán si la condición se cumple.

¡OJO! En Python es importante la indentación (que se crea mediante la tecla del tabulador) de las líneas. Las líneas más indentadas se consideran que están incluidas en la inmediatamente superior. En el ejemplo visto, la línea de par pertenece al primer if, y la de impar al segundo if. De estar al mismo nivel que dichas condiciones, se ejecutarían sí o sí, ya que no se verían afectadas por las condiciones. Ta lo iréis pillando ;)

Sentencia Condicional Else
Si con If podemos comprobar si una variable cumple una condición, con Else (si no) podemos comprobar lo contrario, si no la cumple. No obstante, Else siempre tiene que ir precedido por un If, ya que es la condición del If la que se comprueba si no se cumple. Quedará más claro con el ejemplo anterior:
a = int(input("Introduce un número entero: "))
resto = a % 2
if resto == 0:
    print("Es par")
else:
    print("Es impar")
En vez de tener que comprobar si su resto es distinto de cero, directamente sabemos que lo es si la condición del If no ha sido satisfecha. Al igual que If, la indentación es importante, ya que determina qué líneas se ejecutarán y cuales no.

Sentencia Condicional Elif
Puede llegar el caso en el que nos encontremos con situaciones en las que tengamos varias secuencias de If/Else anidadas:
num = int(input("Introduce 1, 2 o 3: "))
if num == 1:
    print("Has introducido 1")
else:
    if num == 2:
        print("Has introducido 2")
    else:
        if num == 3:
            print("Has introducido 3")
        else:
            print("El número introducido no es valido")
En códigos como el anterior, llega un punto en el que la lectura resulta engorrosa, y puede llevar a que pasemos por alto ciertos errores, debido al gran número de indentaciones. Para ello, Python dispone de la sentencia condicional Elif, que no es ni más ni menos que una sentencia Else unida a un If. El anterior código se podría reescribir de la siguiente forma:
num = int(input("Introduce 1, 2 o 3: "))
if num == 1:
    print("Has introducido 1")
elif num == 2:
    print("Has introducido 2")
elif num == 3:
    print("Has introducido 3")
else:
    print("El número introducido no es valido")
Este código es mucho más cómodo de leer, ¿no os parece?

Comentarios
Gracias a las sentencias condicionales que hemos aprendido, nuestros programas pueden empezar ya a complicarse. Dado que, por norma general, nuestro código va a tener que ser leído por otros programadores, lo ideal es comentarlo para que cualquiera sea capaz de saber qué cálculos realiza sin tener que hacer una traza del programa. Para ello, todos los lenguajes de programación permiten comentar líneas, es decir, indicarle al compilador/intérprete que dicha línea debe ser ignorada, por lo que no será incluida en el ejecutable. En Python, los comentarios comienzan con el símbolo #:
#----------------------------------------------------
# Programa que comprueba si un número es par o impar
#----------------------------------------------------
a = int(input("Introduce un número entero: "))
# Calculo del resto para realizar la comprobación
resto = a % 2
if resto == 0:
    print("Es par")
else:
    print("Es impar")
Tened cuidado a la hora de comentar, ya que un programa sobrecomentado puede llegar a dejaros en muy mal lugar:
#----------------------------------------------------
# Programa que comprueba si un número es par o impar
#----------------------------------------------------
# Solicitamos al usuario un número, que lo almacenamos
# en la variable a
a = int(input("Introduce un número entero: "))
# Calculamos el resto del número introducido al
# dividirlo por 2, y lo almacenamos en la variable resto
resto = a % 2
# Comprobamos si el resto es cero
if resto == 0:
    # Al ser cero, el número es par, así que lo
    # indicamos por pantalla.
    print("Es par")
# Comprobamos si no se a cumplido la condición anterior
else:
    # Al no cumplirse, el número es impar, así que lo
    # indicamos por pantalla.
    print("Es impar")
-----
¿Os han parecido interesantes las sentencias condicionales? Pues a continuación os propongo un nuevo ejercicio, que es un clásico entre los clásicos: crear una calculadora que introducidos dos operandos realice con ellos la operación que el usuario desee. Al igual que la semana pasada, el viernes la solución ^^

No hay comentarios:

Publicar un comentario