TEC · Técnica 1 · Pensamiento lógico

5.Descomposición de problemas

Dividir un problema grande en partes pequeñas y manejables, resolver cada una y después unirlas; la base del pensamiento computacional.

¿Qué es?

Descomponer un problema es dividirlo en partes más pequeñas que se pueden resolver una por una. Al final, las soluciones de las partes se juntan para resolver el problema completo.

Organizar una fiesta parece mucho trabajo, pero se divide en tareas: invitar, comprar la comida, preparar el lugar, la música. Cada tarea es sencilla y se puede repartir.

Dentro del pensamiento computacional

Habilidad Qué es
Descomposición Dividir el problema en partes
Reconocimiento de patrones Notar qué partes se parecen o se repiten
Abstracción Quedarse con lo importante e ignorar los detalles que no sirven
Algoritmo Escribir los pasos para resolver cada parte

Sintaxis (pseudocódigo / Python)

Problema: dado el precio de un producto y la cantidad, calcular el total con descuento del 10 % si la compra supera $500, y con IVA.

Descomposición

  1. Calcular el subtotal (precio × cantidad).
  2. Calcular el descuento (si el subtotal supera 500).
  3. Calcular el IVA sobre el subtotal con descuento.
  4. Mostrar el total.

PSeInt

Algoritmo Compra
	Definir precio, subtotal, descuento, iva, total Como Real
	Definir cantidad Como Entero
	Escribir "Precio:"
	Leer precio
	Escribir "Cantidad:"
	Leer cantidad
	// 1. Subtotal
	subtotal <- precio * cantidad
	// 2. Descuento
	Si subtotal > 500 Entonces
		descuento <- subtotal * 0.10
	SiNo
		descuento <- 0
	FinSi
	// 3. IVA
	iva <- (subtotal - descuento) * 0.16
	// 4. Total
	total <- subtotal - descuento + iva
	Escribir "Total: ", total
FinAlgoritmo

Python (cada parte en una función)

def calcular_subtotal(precio, cantidad):
    return precio * cantidad

def calcular_descuento(subtotal):
    if subtotal > 500:
        return subtotal * 0.10
    return 0

def calcular_iva(monto):
    return monto * 0.16

precio = float(input("Precio: "))
cantidad = int(input("Cantidad: "))
subtotal = calcular_subtotal(precio, cantidad)
descuento = calcular_descuento(subtotal)
iva = calcular_iva(subtotal - descuento)
total = subtotal - descuento + iva
print("Total:", round(total, 2))

Ejemplo guiado

Problema: generar la boleta de un alumno: leer tres calificaciones, calcular el promedio y decir si aprobó.

1. Dividir

Parte Qué hace
A. Leer datos Pedir el nombre y tres calificaciones
B. Calcular Obtener el promedio
C. Decidir Aprobado si el promedio es 6 o más
D. Mostrar Imprimir la boleta

2. Resolver cada parte y unirlas

# A. Leer datos
nombre = input("Nombre: ")
c1 = float(input("Calificación 1: "))
c2 = float(input("Calificación 2: "))
c3 = float(input("Calificación 3: "))

# B. Calcular
promedio = (c1 + c2 + c3) / 3

# C. Decidir
if promedio >= 6:
    estado = "Aprobado"
else:
    estado = "Reprobado"

# D. Mostrar
print("Alumno:", nombre)
print("Promedio:", round(promedio, 1))
print("Estado:", estado)

Salida esperada (con Ana, 8, 7, 9):

Alumno: Ana
Promedio: 8.0
Estado: Aprobado

Errores comunes

Buenas prácticas

  • Escribe la descomposición como comentarios antes del código y ve llenando cada bloque.
  • Una parte, una responsabilidad: leer, calcular, decidir y mostrar por separado.
  • Prueba cada parte con datos sencillos antes de unirlas.
  • Busca patrones: si dos partes hacen casi lo mismo, quizá sea una sola función con parámetros.
  • Trabajo en equipo: una buena descomposición permite repartir el trabajo.

Material descargable

Aún no hay material descargable para este tema. Pronto habrá cuadernillos, manuales o laboratorios.

Referencias

© solutions_ · Fundamentos de programación · 5 Descomposición de problemas