Cómo se resuelve una tarea
En resumen: Una tarea de programación se resuelve por pasos: lees el enunciado (qué recibes y qué imprimes), escribes un plan en pseudocódigo y lo compruebas con una prueba de escritorio antes de escribir código.
Problema
La pantalla en blanco
Tienes una tarea: el primer día ahorras 1 €, el segundo 2 €, el tercero 3 €, y así sucesivamente. ¿Cuántos euros tendrás después de N días?
Abres el editor y… no sabes con qué línea empezar. Le pasa a todo el mundo, y la causa rara vez es que no conozcas el lenguaje. Normalmente todavía no está claro qué tiene que hacer exactamente el programa. Por eso la solución empieza antes del código: en papel o en tu cabeza.
La idea
Lee el enunciado
Las tareas de este curso tienen este aspecto:
Ahorros. El primer día ahorras 1 €, el segundo 2 €, el tercero 3 €, y así sucesivamente. La entrada es el número de días N. Imprime cuántos euros has ahorrado en total.
Entrada:
5Salida:15
Antes de pensar en una solución, responde tres preguntas:
- ¿Qué recibo? Un número entero N, el número de días.
- ¿Qué tengo que imprimir y en qué forma? Un número, sin ningún otro texto.
- ¿Entiendo el ejemplo? Calcúlalo a mano: 1 + 2 + 3 + 4 + 5 = 15. Coincide con la salida.
Si tu cálculo a mano no da la salida del ejemplo, no has entendido el enunciado. Léelo otra vez antes de escribir nada.
La idea
Divide la tarea
Una tarea grande es difícil de resolver de una sola vez. Divídela en partes, cada una de las cuales sabes cómo hacer:
1. leer el número de días N2. sumar los números de 1 a N3. imprimir el totalLa primera y la tercera parte están claras. La segunda todavía es grande, así que divídela también. ¿Cómo sumas a mano? Llevas el total en la cabeza y le añades el número siguiente, uno por uno. Es lo que hace el cajero cuando te cobra la compra.
Sigue dividiendo hasta que cada parte sea tan pequeña que esté claro cómo hacerla.
Junto a la animación está el programa que sigue estas partes. Las palabras que hay en él las aprenderás en el próximo módulo. Por ahora, fíjate en cómo cada parte se convierte en una o dos líneas de código.
n = int(input())total = 0for day in range(1, n + 1): total += dayprint(total)Paso a paso, en palabras
- Toda de una vez, la tarea es grande: ¿cuántos euros ahorras en N días?
- La divides en tres partes. Cada una está clara por sí sola.
- Parte 1: leer N. En el ejemplo, N = 5.
- Parte 2: el total empieza en 0, y se le suma cada número de 1 a N.
- Prueba de escritorio: 0 + 1 + 2 + 3 + 4 + 5 = 15.
- Parte 3: imprimir el total. La salida es 15, igual que en el ejemplo.
La idea
Escribe el plan con palabras
Ahora pon los pasos en orden, con palabras sencillas:
leer Nsuma = 0para cada número de 1 a N: sumar el número a la sumaimprimir la sumaEsto se llama pseudocódigo: una descripción de la solución que parece un programa, pero no está escrita en ningún lenguaje. No hay reglas estrictas. Lo importante es que cada paso esté claro y que los pasos estén en el orden correcto.
La sangría de la cuarta línea indica que ese paso se repite para cada número. Pronto verás cómo se escribe eso en un lenguaje de verdad.
Míralo
Prueba de escritorio
¿Funciona el plan? Compruébalo antes de que exista el código. Toma el valor del ejemplo (N = 5) y recorre los pasos a mano, anotando la suma después de cada uno:
| Paso | Número | Suma antes | Suma después |
|---|---|---|---|
| inicio | 0 | ||
| 1 | 1 | 0 | 1 |
| 2 | 2 | 1 | 3 |
| 3 | 3 | 3 | 6 |
| 4 | 4 | 6 | 10 |
| 5 | 5 | 10 | 15 |
El último paso imprime 15, exactamente como en el ejemplo. El plan es correcto, al menos para este caso.
Esto se llama prueba de escritorio: recorres la solución con valores de ejemplo sin ejecutarla. Lleva unos minutos y detecta errores de lógica antes de que hayas escrito una sola línea de código.
Más precisamente, para curiosos
- Hay otra forma de obtener la misma suma: N × (N + 1) / 2. Para N = 5 eso es 5 × 6 / 2 = 15. Dos planes distintos dan el mismo resultado. El segundo es más rápido, pero para que se te ocurra tienes que conocer la fórmula. El primero sigue exactamente cómo lo calcularías a mano.
- También con código real seguirás así los valores línea por línea. Los editores tienen una herramienta para eso, el depurador (debugger): detiene el programa en la línea que elijas y muestra los valores de todo lo que hay en él.
Pruébalo
Encuentra el error
Para N = 5 este plan da 16 en lugar de 15. Haz una prueba de escritorio mentalmente. ¿En qué línea está el error?
Elige la línea con el error.
La suma empieza en 1, no en 0. Así se añade una unidad de más, que nunca se ahorró, antes del primer número: 1 + 1 + 2 + 3 + 4 + 5 = 16. Antes de haber sumado nada, el total es 0.
La idea
Compara la solución con el ejemplo
Cuando ya tienes un programa, la comprobación es la misma, solo que en lugar de calcularlo a mano lo ejecutas:
- Introduce la entrada del ejemplo y compara tu salida con la del enunciado. Compara carácter por carácter: «La suma es 15» no es «15». Las soluciones a menudo se comprueban de forma automática, y el texto de más hace que la respuesta sea incorrecta.
- Prueba también tus propios valores, sobre todo los casos límite: el valor más pequeño permitido, el cero, un número muy grande.
- Si la salida no coincide, haz una prueba de escritorio de tu código con el valor del ejemplo. El lugar donde los valores dejan de coincidir con lo que esperas es el error.
Pruébalo con el plan de los ahorros: ¿qué da para N = 1? ¿Y para N = 0?
La respuesta
- Para N = 1 el paso se repite una vez: la suma pasa a ser 0 + 1 = 1. Es correcto: después de un día tienes 1 €.
- Para N = 0 no hay números de 1 a 0, así que el paso no se ejecuta ni una vez. La suma se queda en 0. También es correcto: en cero días no has ahorrado nada.
Test