📚 Plan de estudio completo

Programación
desde cero

Programación desde cero

Aprende a pensar como programador. Algoritmos, variables, expresiones y estructuras de control explicadas con ejemplos reales y ejercicios interactivos.

Comenzar ahora Ver proyecto final
Módulo 1 · Algoritmos
Módulo 2 · Variables
Módulo 3 · Aritmética
Módulo 4 · Lógica
Módulo 5 · Condicionales
Módulo 6 · Proyecto

1Algoritmos 2Variables 3Aritmética 4Lógica 5Condicionales 6Proyecto
Módulo 1 · Semana 1

Algoritmos y el modelo IPO

Un algoritmo es una secuencia de pasos ordenados y finitos que resuelven un problema. Todo programa de computadora es, en esencia, un algoritmo. En el contexto del plan de estudio de programación, IPO se refiere al Ciclo de la Información y es el acrónimo de los tres pasos fundamentales que realiza cualquier programa de computadora: Input (Entrada), Process (Proceso) y Output (Salida).

Aquí te detallo qué significa cada etapa según tu plan de estudio:

🔢
Finito
Todo algoritmo debe terminar en algún momento. No puede ejecutarse indefinidamente.
🎯
Preciso
Cada paso debe estar definido con exactitud. Sin ambigüedad ni interpretaciones dobles.
📋
Ordenado
Los pasos siguen una secuencia específica. El orden importa — cambiar el orden cambia el resultado.
📥
Tiene entrada y salida
Recibe datos (entrada), los transforma (proceso) y produce un resultado (salida).

El modelo IPO: Entrada → Proceso → Salida

Todo programa recibe información, la transforma y produce un resultado. Este es el esquema fundamental de cualquier sistema de cómputo.

Entrada
Datos del usuario,
archivos, sensores
Proceso
Cálculos, decisiones,
transformaciones
Salida
Resultado en pantalla,
archivo, mensaje
💡
Ejemplo cotidiano: Hacer una arepa. Entrada: harina de maíz, agua, sal. Proceso: mezclar, amasar, dar forma, cocinar. Salida: la arepa lista. ¡Eso es un algoritmo!

Pseudocódigo: algoritmo para calcular el área de un rectángulo

Pseudocódigo
// Algoritmo: Calcular área de un rectángulo
// ENTRADA → PROCESO → SALIDA

INICIO

  // ENTRADA: pedirle datos al usuario
  Leer(base)        // ancho del rectángulo
  Leer(altura)      // alto del rectángulo

  // PROCESO: calcular el área
  area  base * altura

  // SALIDA: mostrar el resultado
  Mostrar("El área es: ", area)

FIN
    

El mismo algoritmo en Python

Python
# ENTRADA
base   = float(input("¿Cuál es la base? "))
altura = float(input("¿Cuál es la altura? "))

# PROCESO
area = base * altura

# SALIDA
print(f"El área del rectángulo es: {area} cm²")
    
Ejercicio 1.1 Identifica las partes del algoritmo
Un cajero automático permite retirar dinero. Describe el algoritmo identificando: ¿cuáles son las entradas? ¿Cuál es el proceso? ¿Cuáles son las salidas? Escríbelo en pseudocódigo con al menos 5 pasos.
Solución
INICIO
  // ENTRADAS
  Leer(tarjeta)       // insertar tarjeta
  Leer(pin)           // ingresar PIN secreto
  Leer(monto)         // cantidad a retirar

  // PROCESO
  SI pin == pin_correcto Y saldo >= monto ENTONCES
    saldo  saldo - monto
    DispensarBilletes(monto)

  // SALIDA
  Mostrar("Retire su dinero. Saldo: ", saldo)
  ExpulsarTarjeta()
FIN
        
¿Cuál de estas NO es una característica obligatoria de un algoritmo?

Módulo 2 · Semana 2

Variables y Constantes

Las variables son cajas con nombre que guardan información. Las constantes son cajas selladas que nunca cambian su contenido.

📦
Variable
Espacio en memoria con un nombre. Su valor puede cambiar durante la ejecución del programa.
🔒
Constante
Como una variable, pero su valor no puede modificarse después de ser asignado.
🏷️
Identificador
El nombre que le damos a una variable. Debe ser descriptivo: edad, no x.
🗃️
Tipo de dato
Define qué clase de información puede guardar: número, texto, verdadero/falso, decimal, etc.

Tipos de datos fundamentales

Tipo Nombre técnico Valores posibles Ejemplo Tamaño típico
Número entero int Números sin decimales edad = 25 4 bytes
Número decimal float Números con punto decimal precio = 3.99 8 bytes
Texto string Caracteres entre comillas nombre = "Ana" Variable
Booleano bool Solo True o False activo = True 1 byte
Carácter char Un solo carácter inicial = 'A' 1 byte
Python · Variables y constantes
# ── VARIABLES (pueden cambiar) ───────────────────
nombre    = "Carlos"         # string
edad      = 22               # int
altura    = 1.75             # float
activo    = True             # bool

# ── CONSTANTES (convención: MAYÚSCULAS) ──────────
PI        = 3.14159265       # constante matemática
IVA       = 0.19             # impuesto al valor agregado
MAX_EDAD  = 120              # límite máximo aceptable

# ── OPERACIÓN DE ASIGNACIÓN ───────────────────────
edad = 23                     # actualizamos la variable
print(f"{nombre} tiene {edad} años")
# → Carlos tiene 23 años
    
⚠️
Reglas para nombrar variables: No pueden empezar con número · No contienen espacios (usa guión bajo: nombre_completo) · No usan tildes ni ñ en código profesional · Deben ser descriptivas: precioTotal es mejor que pt.
🧪 Simulador de variables
Tu nombre
Tu edad
Año de nacimiento
El programa mostrará el resultado aquí...
Ejercicio 2.1 Declara variables para una ficha de estudiante
Crea las variables necesarias para guardar: nombre del estudiante, código de matrícula (número entero), promedio de notas (decimal), si está becado (sí/no) y carrera. Elige el tipo de dato correcto para cada una.
Python
# Ficha de estudiante
nombre     = "Laura Gómez"     # string
matricula  = 20231045         # int
promedio   = 4.2              # float
becado     = True             # bool
carrera    = "Ingeniería"      # string

print(f"Estudiante: {nombre} | Promedio: {promedio}")
        
¿Qué tipo de dato deberías usar para guardar el saldo de una cuenta bancaria como $45.780,50?

Módulo 3 · Semana 3

Expresiones Aritméticas

Las expresiones aritméticas combinan variables, constantes y operadores para producir un valor numérico. Son la base de todos los cálculos en programación.

+ Suma 5 + 3 = 8
Resta 10 − 4 = 6
* Multiplicación 3 * 6 = 18
/ División real 7 / 2 = 3.5
// División entera 7 // 2 = 3
% Módulo (resto) 7 % 2 = 1
** Potencia 2 ** 8 = 256
📐
Jerarquía de operaciones: 1º Paréntesis () → 2º Potencias ** → 3º Multiplicación y división * / // % → 4º Suma y resta + -. Cuando hay empate, se evalúa de izquierda a derecha.
Python · Operaciones aritméticas
# Ejemplo: factura de compra
precio_unitario  = 15000
cantidad         = 6
IVA              = 0.19           # constante 19%

subtotal         = precio_unitario * cantidad
impuesto         = subtotal * IVA
total            = subtotal + impuesto

print(f"Subtotal: ${subtotal:,}")    # → $90,000
print(f"IVA 19%:  ${impuesto:,.0f}") # → $17,100
print(f"TOTAL:    ${total:,.0f}")    # → $107,100

# El operador módulo: ¿es par o impar?
numero = 17
print(numero % 2)  # → 1  (resto ≠ 0, es impar)

# Potencias: área de círculo
radio    = 5
PI       = 3.14159
area     = PI * radio ** 2  # → 78.539
    
🧮 Calculadora de factura
Precio unitario
Cantidad
Descuento %
Ingresa los valores y haz clic en Calcular...
Ejercicio 3.1 Conversor de temperatura
Escribe un programa que convierta grados Celsius a Fahrenheit.
La fórmula es: F = (C × 9/5) + 32
Pruébalo con 0°C (debería dar 32°F), 100°C (212°F) y tu temperatura favorita.
Python
# Conversor de temperatura
celsius     = float(input("Ingresa temperatura en Celsius: "))
fahrenheit  = (celsius * 9 / 5) + 32

print(f"{celsius}°C equivale a {fahrenheit:.1f}°F")

# Pruebas:
# 0°C   →  32.0°F  ✓
# 100°C → 212.0°F  ✓
# 37°C  →  98.6°F  ✓ (temperatura corporal)
        
¿Cuál es el resultado de la expresión: 2 + 3 * 4 - 1 ?

Módulo 4 · Semana 4

Expresiones Lógicas

Las expresiones lógicas producen un resultado booleano: verdadero (True) o falso (False). Son el lenguaje con el que los programas toman decisiones.

Operadores relacionales

OperadorSignificadoEjemploResultado
==Igual a5 == 5True
!=Diferente de5 != 3True
>Mayor que8 > 3True
<Menor que2 < 1False
>=Mayor o igual5 >= 5True
<=Menor o igual3 <= 2False

Operadores lógicos: AND, OR, NOT

AB A AND B A OR B NOT A
VVVVF
VFFVF
FVFVV
FFFFV
🔑
Para recordar: AND necesita que ambas condiciones sean verdaderas. OR necesita que al menos una sea verdadera. NOT invierte el valor: lo verdadero se vuelve falso y viceversa.
Python · Expresiones lógicas
edad        = 20
es_ciudadano = True
tiene_cedula = True

# AND: TODAS las condiciones deben ser verdaderas
puede_votar = edad >= 18 and es_ciudadano and tiene_cedula
print(puede_votar)  # → True

# OR: Al menos UNA condición debe ser verdadera
descuento = edad < 12 or edad > 65
print(descuento)   # → False (20 no es ni menor ni mayor)

# NOT: invierte el booleano
print(not descuento)  # → True

# Combinaciones con paréntesis (muy importante)
acceso = (edad >= 18 and tiene_cedula) or edad == 0
print(acceso)  # → True
    
Ejercicio 4.1 Condiciones de acceso a un evento
Un evento tiene estas reglas:
• Acceso libre para menores de 12 años o mayores de 65 años
• Acceso normal para personas entre 12 y 65 años con entrada comprada
• Se prohíbe la entrada si no tiene entrada, sin importar la edad

Escribe las expresiones lógicas para cada condición usando variables: edad y tiene_entrada.
Python
edad          = 8
tiene_entrada = False

# Acceso libre (menores de 12 o mayores de 65)
acceso_libre = edad < 12 or edad > 65

# Acceso normal: edad entre 12 y 65 CON entrada
acceso_normal = (edad >= 12 and edad <= 65) and tiene_entrada

# Puede entrar: libre O (normal CON entrada)
puede_entrar = acceso_libre or acceso_normal

print(f"Acceso libre: {acceso_libre}")    # True (tiene 8)
print(f"Puede entrar: {puede_entrar}")  # True
        
Si a = True y b = False, ¿qué devuelve not a or b?

Módulo 5 · Semana 5

Estructuras Condicionales

Las estructuras condicionales permiten que el programa tome caminos diferentes según si una condición es verdadera o falsa. Son el corazón de la toma de decisiones.

Tipos de condicionales

if · Condicional simple
Ejecuta un bloque de código solo si la condición es verdadera. Si es falsa, simplemente lo salta.
Python
temperatura = 38

if temperatura > 37.5:
    print("Tienes fiebre. Consulta un médico.")
# Si temperatura ≤ 37.5, no se imprime nada
        
if / else · Condicional doble
Siempre ejecuta uno de los dos bloques: si la condición es verdadera, el primer bloque; si es falsa, el segundo.
Python
edad = 16

if edad >= 18:
    print("Puedes entrar al evento.")
else:
    print("Acceso denegado, eres menor de edad.")
# → Acceso denegado, eres menor de edad.
        
if / elif / else · Condicional múltiple
Permite evaluar múltiples condiciones en orden. Cuando una es verdadera, ejecuta su bloque y salta las demás.
Python
nota = 78

if nota >= 90:
    print("🏆 Excelente")
elif nota >= 70:
    print("✅ Bueno")
elif nota >= 50:
    print("⚠️  Regular")
else:
    print("❌ Reprobado")
# → ✅ Bueno  (porque 78 ≥ 70)
        
Condicionales anidados
Un condicional dentro de otro. Útil cuando necesitas verificar condiciones más específicas dentro de una condición general.
Python
usuario  = "admin"
password = "1234"

if usuario == "admin":
    if password == "1234":
        print("✅ Acceso al panel de administración")
    else:
        print("❌ Contraseña incorrecta")
else:
    print("❌ Usuario no reconocido")
        
🎓 Clasificador de calificaciones
Nota (0-100)
Ingresa una nota entre 0 y 100...
Ejercicio 5.1 Calculadora de descuentos por categoría
Una tienda aplica descuentos según la categoría del cliente:
VIP: 30% de descuento
Frecuente: 15% de descuento
Normal: 5% de descuento
Nuevo: sin descuento
Escribe el programa que lea la categoría y el precio original, y muestre el precio final.
Python
categoria = input("Categoría (VIP/Frecuente/Normal/Nuevo): ").lower()
precio    = float(input("Precio original: $"))

if categoria == "vip":
    descuento = 0.30
elif categoria == "frecuente":
    descuento = 0.15
elif categoria == "normal":
    descuento = 0.05
else:
    descuento = 0.0

precio_final = precio * (1 - descuento)
print(f"Descuento: {descuento*100:.0f}%")
print(f"Precio final: ${precio_final:,.2f}")
        
¿Qué imprime el siguiente código si nota = 50?
if nota >= 90: print("A") elif nota >= 70: print("B") elif nota >= 50: print("C") else: print("F")

Módulo 6 · Semana 6 · Proyecto Integrador

Proyecto: Calculadora de Nómina

Aplicamos todo lo aprendido en un programa real. Este proyecto integra algoritmos, variables, aritmética, lógica y condicionales.

🎯
Objetivo: Calcular el salario neto de un empleado considerando: salario base, horas extras, bonificación por rendimiento, descuentos de salud y pensión, e impuesto de renta.

Análisis IPO del problema

Entrada
• Nombre empleado
• Salario base
• Horas extras
• % Rendimiento
Proceso
• Calcular extras
• Calcular bono
• Calcular desctos.
• Calcular neto
Salida
• Resumen de nómina
• Total devengado
• Total descuentos
• Salario neto
Python · Proyecto completo: Calculadora de Nómina
# ════════════════════════════════════════════════
#   CALCULADORA DE NÓMINA · Proyecto Integrador
# ════════════════════════════════════════════════

# ── CONSTANTES ──────────────────────────────────
SALUD       = 0.04   # 4% descuento salud
PENSION     = 0.04   # 4% descuento pensión
HORA_EXTRA  = 1.25   # hora extra vale 25% más

# ── ENTRADA ─────────────────────────────────────
nombre      = input("Nombre del empleado: ")
salario_base = float(input("Salario base mensual: $"))
horas_extras = int(input("Horas extras trabajadas: "))
rendimiento  = int(input("Calificación de rendimiento (1-5): "))

# ── PROCESO ─────────────────────────────────────
# Calcular valor hora
valor_hora  = salario_base / 240   # 240 horas al mes
pago_extras = horas_extras * valor_hora * HORA_EXTRA

# Bonificación según rendimiento
if rendimiento == 5:
    bono = salario_base * 0.20
elif rendimiento >= 4:
    bono = salario_base * 0.10
elif rendimiento >= 3:
    bono = salario_base * 0.05
else:
    bono = 0

# Total devengado (lo que gana)
devengado = salario_base + pago_extras + bono

# Descuentos obligatorios
desc_salud  = devengado * SALUD
desc_pension = devengado * PENSION

# Impuesto de renta (condicional)
if devengado > 5000000:
    renta = devengado * 0.19
elif devengado > 2000000:
    renta = devengado * 0.10
else:
    renta = 0

total_descuentos = desc_salud + desc_pension + renta
salario_neto     = devengado - total_descuentos

# ── SALIDA ──────────────────────────────────────
print(f"\n{'═'*40}")
print(f"  NÓMINA DE: {nombre.upper()}")
print(f"{'═'*40}")
print(f"  Salario base:       ${salario_base:>12,.2f}")
print(f"  Horas extras:       ${pago_extras:>12,.2f}")
print(f"  Bonificación:       ${bono:>12,.2f}")
print(f"{'─'*40}")
print(f"  TOTAL DEVENGADO:    ${devengado:>12,.2f}")
print(f"{'─'*40}")
print(f"  (-) Salud 4%:       ${desc_salud:>12,.2f}")
print(f"  (-) Pensión 4%:     ${desc_pension:>12,.2f}")
print(f"  (-) Renta:          ${renta:>12,.2f}")
print(f"{'─'*40}")
print(f"  SALARIO NETO:       ${salario_neto:>12,.2f}")
print(f"{'═'*40}")
    
💼 Simulador de Nómina Interactivo
Nombre
Salario base ($)
Horas extras
Rendimiento (1-5)
Completa los datos y calcula tu nómina...
Proyecto Final Tienda de ropa — Sistema de facturación
Diseña un sistema completo que:
1. Lea el nombre del producto, precio y cantidad
2. Aplique descuento si la cantidad es mayor a 10 unidades (15% de descuento)
3. Aplique descuento adicional si el precio total supera $500.000 (10% extra)
4. Agregue el IVA del 19%
5. Muestre la factura completa con: subtotal, descuentos, IVA y total

Usa todo lo aprendido: variables, constantes, aritmética, lógica y condicionales.
Python · Sistema de Facturación
# ════════════════════════════════════════════
#   SISTEMA DE FACTURACIÓN - Tienda de Ropa
# ════════════════════════════════════════════

# CONSTANTES
IVA             = 0.19
DESC_CANTIDAD   = 0.15   # 15% si cantidad > 10
DESC_MONTO      = 0.10   # 10% si total > 500,000
LIMITE_CANTIDAD = 10
LIMITE_MONTO    = 500000

# ENTRADA
producto   = input("Nombre del producto: ")
precio     = float(input("Precio unitario: $"))
cantidad   = int(input("Cantidad: "))

# PROCESO
subtotal   = precio * cantidad

# Descuento por cantidad
if cantidad > LIMITE_CANTIDAD:
    d1 = subtotal * DESC_CANTIDAD
else:
    d1 = 0

subtotal_d1 = subtotal - d1

# Descuento por monto
if subtotal_d1 > LIMITE_MONTO:
    d2 = subtotal_d1 * DESC_MONTO
else:
    d2 = 0

base_iva   = subtotal_d1 - d2
iva_valor  = base_iva * IVA
total      = base_iva + iva_valor

# SALIDA
print(f"\n{'═'*42}")
print(f"  FACTURA - {producto.upper()}")
print(f"{'═'*42}")
print(f"  Precio unitario:   ${precio:>12,.2f}")
print(f"  Cantidad:          {cantidad:>13}")
print(f"  Subtotal:          ${subtotal:>12,.2f}")
if d1 > 0:
    print(f"  Desc. cantidad 15%:${d1:>12,.2f}")
if d2 > 0:
    print(f"  Desc. monto 10%:   ${d2:>12,.2f}")
print(f"  IVA 19%:           ${iva_valor:>12,.2f}")
print(f"{'─'*42}")
print(f"  TOTAL A PAGAR:     ${total:>12,.2f}")
print(f"{'═'*42}")