Programación

Variables, condiciones y bucles: la lógica de la programación

Los cinco conceptos que usarás en cualquier lenguaje, con ejemplos que puedes ejecutar en Python.

Da igual el lenguaje que elijas: casi todos los programas se construyen con las mismas piezas. Si entiendes variables, tipos de datos, condiciones, bucles y funciones, podrás leer código en Python, JavaScript, Java o C# aunque cambie la forma de escribirlo. Los ejemplos están en Python porque se lee casi como el inglés; pruébalos en el modo interactivo (escribe python en la terminal) o en un archivo .py.

El tipo de dato importa: el + suma números y une textos.Números: 17 + 1; Resultado: 18. Textos: "17" + "1"; Resultado: "171"Números17 + 1Resultado: 18Textos"17" + "1"Resultado: "171"
El tipo de dato importa: el + suma números y une textos.

Variables y tipos de datos

Una variable es un nombre que guarda un valor para usarlo después:

nombre = "Lucía"      # texto (str)
edad = 17             # número entero (int)
altura = 1.68         # número decimal (float)
es_socia = True       # verdadero o falso (bool)

El tipo importa: no es lo mismo el número 17 que el texto "17". 17 + 1 da 18, pero "17" + "1" da "171", porque con textos el + los une. Para convertir entre tipos se usan int(), float() y str().

Elige nombres que expliquen lo que guardan (precio_total mejor que x). Tu yo de dentro de un mes te lo agradecerá.

Portátil con código en la pantalla
Foto: Christina Morillo · dominio público (CC0) · vía StockSnap

Condiciones: tomar decisiones

Con if, elif (si no, si…) y else el programa elige qué hacer:

nota = 6.5

if nota >= 9:
    print("Sobresaliente")
elif nota >= 5:
    print("Aprobado")
else:
    print("Suspenso")

Los comparadores son == (igual, con dos signos), != (distinto), <, >, <= y >=. Se combinan con and, or y not. Fíjate en los dos puntos y en la sangría: en Python, las líneas con sangría son las que pertenecen a cada caso.

Bucles: repetir sin copiar y pegar

El bucle for recorre una secuencia elemento a elemento:

compra = ["pan", "leche", "huevos"]

for producto in compra:
    print("Comprar:", producto)

for numero in range(1, 6):   # del 1 al 5 (el 6 no se incluye)
    print(numero * 2)

El bucle while repite mientras se cumpla una condición, y sirve cuando no sabes cuántas vueltas habrá:

saldo = 100
while saldo > 0:
    saldo -= 30
    print("Quedan", saldo)

Cuidado con los bucles infinitos: si la condición nunca deja de cumplirse, el programa no termina. Se detiene con Ctrl+C en la terminal.

Una condición elige un camino u otro.nota >= 9 → nota >= 5: Aprobado → Si no: Suspensonota >= 9nota >= 5: AprobadoSi no: Suspenso
Una condición elige un camino u otro.

Listas y diccionarios: guardar muchos datos

Una lista guarda varios valores en orden y se accede a ellos por posición, empezando en 0:

notas = [7, 5.5, 9]
notas.append(8)          # añade al final
print(notas[0])          # 7, el primero
print(len(notas))        # 4 elementos
print(sum(notas) / len(notas))  # la media

Un diccionario guarda pares clave-valor, como una ficha:

alumno = {"nombre": "Lucía", "curso": "1.º DAM", "nota": 8.2}
print(alumno["curso"])
Primer plano de las teclas blancas de un teclado de ordenador
Foto: Jeffrey Betts · dominio público (CC0) · vía StockSnap

Funciones: no repetirte

Una función agrupa unas instrucciones con un nombre para reutilizarlas. Recibe datos (parámetros) y puede devolver un resultado con return:

def precio_con_iva(precio, iva=21):
    return round(precio * (1 + iva / 100), 2)

print(precio_con_iva(100))      # 121.0
print(precio_con_iva(100, 10))  # 110.0

Si te ves copiando el mismo bloque de código dos o tres veces, conviértelo en una función. Así, si hay un fallo, lo arreglas en un solo sitio.

Las piezas que usarás en cualquier lenguaje.Variables (guardan un valor con un nombre) / Condiciones (if, elif y else) / Bucles (for recorre; while repite mientras…) / Listas y diccionarios (muchos datos juntos) / Funciones (bloques reutilizables)La base de la programaciónVariablesguardan un valor con un nombreCondicionesif, elif y elseBuclesfor recorre; while repite mientras…Listas y diccionariosmuchos datos juntosFuncionesbloques reutilizables
Las piezas que usarás en cualquier lenguaje.

Pon todo junto

Un pequeño ejercicio que usa todo lo anterior: pide notas hasta que el usuario escriba «fin» y muestra la media.

def media(valores):
    return sum(valores) / len(valores)

notas = []
while True:
    texto = input("Nota (o 'fin'): ")
    if texto == "fin":
        break
    notas.append(float(texto))

if notas:
    print(f"Media: {media(notas):.2f}")
else:
    print("No has introducido ninguna nota.")

Prueba a escribir una letra en lugar de una nota: el programa fallará con un ValueError. Aprender a leer y prevenir ese tipo de errores es el siguiente paso, en la guía de depurar errores. Y si quieres ver estas mismas ideas en la web, sigue con JavaScript.