Introducción al Curso de Programación

PIEP • POO • PEE

Danna L. Cruz-Reyes

Universidad Nacional de Colombia

¡Bienvenid@s!

Objetivo: presentar tres enfoques de programación y la ruta del curso.
Paradigmas: PIEP (imperativa), POO (orientada a objetos), PEE (orientada a vectores).

Tres enfoques, tres formas de pensar

PIEP — Imperativa

  • Instrucciones paso a paso: Ejemplos: C, C++
  • Control del flujo: if, for, while

POO — Orientada a Objetos

  • Clases y objetos: C++, Java, Python
  • Encapsulación, herencia, polimorfismo

PEE — Orientada a Vectores

  • Operar sobre colecciones completas: R, NumPy/MATLAB
  • Menos bucles explícitos, más expresividad

¿Cuándo conviene cada paradigma?

PIEP (Programación Imperativa y Estructurada Procedimental)

Este paradigma funciona muy bien cuando queremos control total sobre el orden de ejecución.

Ejemplo: un cajero automático sigue exactamente los pasos:
verificar tarjeta → pedir PIN → consultar saldo → entregar dinero.

PIEP es ideal para tareas de bajo nivel o algoritmos detallados, como ordenar una lista con bubblesort o controlar el movimiento de un robot.
La lógica se organiza en funciones y procedimientos, como una receta de cocina.

POO (Programación Orientada a Objetos)

Conviene cuando necesitamos modelar un sistema complejo con muchas entidades que interactúan.

Ejemplo: en un videojuego tenemos clases como Jugador, Enemigo y Arma, cada una con atributos y métodos.

Gracias a la orientación a objetos podemos reutilizar código (una clase Enemigo puede extenderse a Dragón o Zombi) y mantener el sistema ordenado aun cuando crece.

Es el enfoque más usado en software empresarial, aplicaciones móviles y videojuegos.

PEE (Programación Estadística / Estilo Declarativo en Datos)

Este paradigma es útil cuando trabajamos con grandes volúmenes de datos y cálculos vectorizados.

Ejemplo en R: calcular la media de millones de observaciones con una sola línea:

datos <- rnorm(1e6)
mean(datos)

PEE permite escribir poco código para mucho trabajo, lo que lo hace excelente para análisis de datos, aprendizaje automático y prototipado rápido.

1. PIEP (Programación Imperativa y Estructurada Procedimental)

  • Aquí pensamos en dar órdenes paso a paso.

  • Usamos estructuras como if, for, while para controlar el flujo.

  • El programa se organiza en procedimientos o funciones.

  • Ejemplo típico: C o Pascal.

👉 Ejemplo sencillo: decirle a una calculadora que sume números uno tras otro con instrucciones bien definidas.

2. POO (Programación Orientada a Objetos)

  • El centro no son los pasos, sino los objetos.
  • Cada objeto tiene atributos (datos) y métodos (acciones).
  • Los objetos se relacionan entre sí, imitando al mundo real.
  • Ejemplo típico: Java, C++, Python.

👉 Ejemplo: en un videojuego, un objeto Jugador tiene nombre, puntos de vida y métodos como saltar() o correr().

3. PEE (Programación Orientada a Expresiones / a Vectores)

  • Aquí pensamos en colecciones completas y operaciones vectorizadas.
  • No escribimos tantos bucles, sino que aplicamos funciones a conjuntos enteros de datos.
  • Ejemplo típico: R, MATLAB, NumPy en Python.

👉 Ejemplo: en lugar de sumar número por número, dices x + y y sumas dos vectores completos en una sola instrucción.

En resumen:

  • PIEP = instrucciones paso a paso.

  • POO = modelar con objetos.

  • PEE = operar con colecciones completas.

1. PIEP (Imperativa / Procedimental)

Aquí damos órdenes paso a paso y usamos funciones sueltas.

# Datos separados
edad = 5
peso = 190.5
nombre = "Simba"

# Funciones (procedimientos)
def rugir():
    print("¡Rooaaar!")

def comer():
    print("El león está comiendo...")

def dormir():
    print("El león está durmiendo...")

# Uso
print(nombre, edad, peso)
rugir()
comer()
dormir()

2. POO (Orientada a Objetos)

Ahora agrupamos datos y métodos dentro de una clase León, creando un objeto.

class Leon:
    def __init__(self, edad, peso, nombre):
        self.edad = edad
        self.peso = peso
        self.nombre = nombre

    def rugir(self):
        print("¡Rooaaar!")

    def comer(self):
        print(f"{self.nombre} está comiendo...")

    def dormir(self):
        print(f"{self.nombre} está durmiendo...")

# Crear objeto
simba = Leon(5, 190.5, "Simba")

# Uso
print(simba.nombre, simba.edad, simba.peso)
simba.rugir()
simba.comer()
simba.dormir()

3. PEE (Orientada a Expresiones / Vectores)

En lugar de pensar en un solo león, pensamos en un conjunto de leones y aplicamos operaciones vectorizadas.

import pandas as pd

# Conjunto de leones
leones = pd.DataFrame({
    "nombre": ["Simba", "Nala", "Mufasa"],
    "edad": [5, 4, 12],
    "peso": [190.5, 150.2, 210.0]
})

# Métodos como operaciones vectoriales
leones["accion"] = "comer"   # Todos están comiendo
print(leones)

# Cambiar acción a todos
leones["accion"] = "dormir"
print(leones)

✨ Resumen:

  • PIEP: funciones sueltas, instrucciones paso a paso.
  • POO: todo encapsulado en un objeto.
  • PEE: operaciones sobre colecciones enteras (no pensamos en un león, sino en una tabla completa).

Comparación de paradigmas

Comparación entre PIEP, POO y PEE