Fundamentos de la Programación

#03 – Estructuras de Control (I)

Recapitulemos un poco: ya hemos aprendido en que consiste programar, así como que tipos de datos existen y como trabajar con ellos. No obstante, hasta ahora, simplemente somos capaces de dar una serie de instrucciones y que estas se ejecuten secuencialmente. Un poco aburrido, ¿no? Pues para alterar el flujo del programa, y con ello crear aplicaciones más interesantes, vamos a ver de que estructuras disponemos para ello.

Estructuras Condicionales

¡A trabajar se ha dicho!

Como se ha comentado, hasta ahora lo que sabemos hacer es (1) solicitar datos al usuario, (2) operar con esos datos, y (3) informar al usuario del resultado. Pues bien, veamos cómo hacer que nuestros 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. Ya 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

Recordad: los comentarios son buenos. Usadlos.

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? Estas estructuras nos permiten añadirle mucha variabilidad a nuestro código, aumentando enormemente la funcionalidad del mismo. Si crees que has comprendido bien este concepto, te invito a realizar el Ejercicio 2 de los ejercicios del curso. En la próxima entrada veremos que otras Estructuras de Control existen.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

back to top