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
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Algoritmo | una lista de pasos en orden que resuelve un problema | |
| Descomposición | dividir un problema grande en problemas pequeños | |
| Pseudocódigo | los pasos escritos en frases cortas, sin ningún lenguaje | |
| Variable | un nombre que guarda un valor que puede cambiar | total |
| Tabla de traza | una 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
| Paso | Qué haces | Con una compra de 3,40 y un pago de 5 |
|---|---|---|
| 1 | Anota el precio | precio = 3,40 |
| 2 | Anota lo que entregas | pago = 5 |
| 3 | Resta el precio al pago | 5 - 3,40 = 1,60 |
| 4 | Muestra el resultado | Te 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ódigo | Python | Qué hace |
|---|---|---|
| Guarda 6 en la nota | mark = 6 | Crea la variable mark con el valor 6 |
| Suma la nota al total | total = total + mark | Pone en total lo que valía más la nota |
| Divide el total entre 4 | average = total / 4 | Guarda el resultado de la división |
| Muestra la media | print(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
| Paso | Nota leída | total antes | total después |
|---|---|---|---|
| 1 | 6 | 0 | 6 |
| 2 | 8 | 6 | 14 |
| 3 | 7 | 14 | 21 |
| 4 | 9 | 21 | 30 |
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
printf 'total = 0\nfor n in [6, 8, 7, 9]:\n total = total + n\n print(n, total)\n' > ~/traza.pySe 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
python3 ~/traza.pySe 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
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.