¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Algoritmos: dividir un problema en pasos

Después de esta lección: Puedo dividir un problema en pasos y seguir con una tabla lo que hace un programa.

Lección de 50 min3 comandosLaboratorio de comandos de Linux de cada día: los treinta comandos que se escriben de memoria

Qué es un algoritmo y para qué sirve

Un algoritmo es una lista de pasos, en orden, que lleva de unos datos a un resultado. Pensar el algoritmo antes de teclear es lo que separa un programa que funciona de uno que se rompe.

Imagina que una cafetería quiere calcular la nota media de sus encuestas. Si no sabes explicar los pasos con lápiz y papel, tampoco podrás explicárselos a Python.

Al final de esta lección

Nota

Puedo dividir un problema en pasos y seguir con una tabla lo que hace un programa.

Palabras clave

PalabraQué significaEjemplo
Algoritmouna lista de pasos en orden que resuelve un problema
Descomposicióndividir un problema grande en problemas pequeños
Pseudocódigolos pasos escritos en frases cortas, sin ningún lenguaje
Variableun nombre que guarda un valor que puede cambiartotal
Tabla de trazauna tabla con el valor de cada variable después de cada paso

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un algoritmo son pasos claros y en orden

Un buen algoritmo tiene tres partes. Unos datos de entrada, unos pasos y un resultado de salida.

Cada paso es tan simple que no hay que pensarlo. Si un paso te hace dudar, divídelo en dos.

La tabla siguiente resuelve un problema de todos los días: el cambio de una compra.

Ejemplo resuelto: el cambio de una compra

PasoQué hacesCon una compra de 3,40 y un pago de 5
1Anota el precioprecio = 3,40
2Anota lo que entregaspago = 5
3Resta el precio al pago5 - 3,40 = 1,60
4Muestra el resultadoTe devuelven 1,60 euros

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Divide un problema grande en problemas pequeños

Un problema grande asusta. La descomposición consiste en cortarlo en partes que sí sabes resolver.

Una app para repartir los gastos de un piso compartido parece difícil. Se corta en cuatro: leer los gastos, sumarlos, dividirlos entre las personas y mostrar lo que paga cada una.

El pseudocódigo escribe los pasos con frases

El pseudocódigo no es un lenguaje. Son los pasos escritos con frases cortas, tal como se los dirías a un compañero.

No tiene reglas de escritura, pero sí una norma: que cualquiera lo entienda y que se pueda pasar a código línea por línea.

Ejemplo resuelto: de las frases al código

PseudocódigoPythonQué hace
Guarda 6 en la notamark = 6Crea la variable mark con el valor 6
Suma la nota al totaltotal = total + markPone en total lo que valía más la nota
Divide el total entre 4average = total / 4Guarda el resultado de la división
Muestra la mediaprint(average)Escribe el valor en pantalla

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un error frecuente

Advertencia

Mucha gente cree que programar es teclear cuanto antes. Quien empieza sin pasos escritos se pierde en el segundo problema. Escribe primero el pseudocódigo, aunque sean cuatro líneas. Teclea después, y solo el paso que ya sabes decir.

Una tabla de traza sigue el programa

Una tabla de traza muestra qué valen las variables después de cada paso. Sirve para entender un programa ajeno o para encontrar un fallo en el tuyo.

Hay una regla: ejecuta tú mismo cada línea, sin saltarte ninguna y sin adivinar el final.

Esta tabla sigue la suma de cuatro notas, 6, 8, 7 y 9. Verás que la variable total cambia en cada paso.

Ejemplo resuelto: la traza de una suma

PasoNota leídatotal antestotal después
1606
28614
371421
492130

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Comprueba tu traza en el laboratorio

Ahora que has hecho la traza a mano, deja que Python la haga. Las tres órdenes siguientes escriben un guion corto, lo ejecutan y cuentan.

Todavía no conoces el bucle for: lo verás en la lección 4. Solo compara lo que sale con tu tabla.

Escribe un guion de cuatro líneas

Comando
printf 'total = 0\nfor n in [6, 8, 7, 9]:\n    total = total + n\n    print(n, total)\n' > ~/traza.py

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Ejecútalo y compáralo con tu tabla

Comando
python3 ~/traza.py

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

La misma media con otra herramienta

Comando
printf '6\n8\n7\n9\n' | awk '{s += $1} END {print s / NR}'

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Para ir más lejos

Escribe en papel el pseudocódigo para calcular el precio de un menú de 12 euros con un descuento de 2 euros para estudiantes. Después haz la traza con un estudiante y con una persona que no lo sea.

Usa dos variables, price y discount. Di qué valdrá price al final en cada caso antes de comprobarlo.

Sobre este laboratorio y su código: Laboratorio de comandos de Linux de cada día: los treinta comandos que se escriben de memoria

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.