Programar consiste en expresar un procedimiento con suficiente precisión para que un ordenador pueda ejecutarlo. Antes de aprender palabras de Python vas a practicar una destreza más importante: convertir una necesidad cotidiana en pasos verificables. Al terminar tendrás un pequeño algoritmo probado sobre papel. Todavía no necesitas instalar nada ni memorizar instrucciones.
De una intención a un resultado observable
«Quiero organizarme mejor» expresa una intención pero no permite decidir si un programa funciona. «Quiero introducir tres tareas y verlas en una lista» sí describe una acción concreta. La diferencia está en que el segundo objetivo identifica datos de entrada y una salida que puedes comprobar. Esa precisión evita empezar a escribir sin saber qué debe ocurrir.
Imagina que preparas cajas para guardar libros. Dispones de una cantidad de libros y cada caja admite un número determinado. El resultado que buscas es cuántas cajas necesitas. No quieres diseñar una aplicación de mudanzas completa. Tampoco necesitas gestionar transportistas. Tu primera decisión consiste en limitar el problema para poder resolverlo de principio a fin.
Anota tres elementos: qué datos recibes, qué transformación debes realizar y qué resultado vas a mostrar. Para diez libros con capacidad de cuatro por caja recibes dos cantidades, repartes los libros y obtienes tres cajas. Una queda parcialmente llena. Esta observación parece sencilla pero descubre una condición que una división sin más podría pasar por alto.
Qué es un algoritmo
Un algoritmo es una secuencia definida de pasos para resolver una tarea. Las instrucciones deben tener un orden y resultar suficientemente claras para quien las ejecuta. «Haz lo necesario» no es un paso útil. «Añade una caja cuando queden libros sin colocar» sí concreta una acción y el momento de realizarla.
Puedes escribir el procedimiento en lenguaje corriente antes de traducirlo a un lenguaje de programación. A esa descripción intermedia se la suele llamar pseudocódigo. No existe una única forma obligatoria de redactarlo para este curso. Su utilidad está en ayudarte a pensar. Si introduces abreviaturas que tú mismo no entiendes al día siguiente pierde buena parte de su valor.
Un primer procedimiento para el reparto sería el siguiente:
- Comprueba que la cantidad de libros no es negativa.
- Comprueba que cada caja admite al menos un libro.
- Empieza con cero cajas utilizadas.
- Mientras queden libros, prepara una caja y coloca hasta su capacidad.
- Aumenta en uno el número de cajas utilizadas.
- Muestra el total cuando no queden libros por colocar.
El paso de colocar libros debe reducir realmente los libros pendientes. Si solo preparas cajas sin modificar esa cantidad no terminarás nunca. Ya has encontrado una idea fundamental de los bucles: debe existir un progreso hacia la condición que permite detenerse.
Ejecutar el procedimiento a mano
Dibuja dos columnas en el cuaderno: libros pendientes y cajas utilizadas. Empieza con diez libros y cero cajas. Después de llenar la primera quedan seis libros y llevas una caja. Tras la segunda quedan dos y llevas dos cajas. La tercera recoge los dos restantes. La cantidad pendiente llega a cero y el total es tres.
Esta simulación se llama traza. Consiste en seguir los cambios del procedimiento paso a paso. No necesitas hacer una tabla perfecta. Basta con registrar los valores sin saltarte operaciones. Cuando un programa real produzca un resultado inesperado recurrirás a la misma técnica para localizar dónde se aparta de lo que pretendías.
Prueba ahora ocho libros y capacidad cuatro. Debes obtener dos cajas. Con cero libros la respuesta razonable es cero cajas. Con capacidad cero el procedimiento debe rechazar la entrada. Estos ejemplos no son detalles secundarios: definen el comportamiento y evitan inventar una respuesta cuando los datos carecen de sentido.
Orden, decisiones y repetición
Muchos programas pequeños combinan tres estructuras. La secuencia ejecuta una instrucción después de otra. La decisión elige una acción según una condición. La repetición vuelve a realizar ciertos pasos mientras resulte necesario. El reparto de libros contiene las tres sin que hayas escrito una sola línea de Python.
También conviene separar los datos de las reglas. Diez y cuatro son valores de una prueba. «La capacidad debe ser mayor que cero» es una regla que permanece aunque cambien esos valores. Si redactas instrucciones válidas únicamente para diez libros no has creado una solución reutilizable. Has explicado un caso particular.
Piensa además en quién introduce la información. Una persona podría escribir una palabra donde esperabas una cantidad. Más adelante aprenderás a tratar esa situación. De momento puedes declarar que tu algoritmo trabaja con cantidades enteras ya comprobadas. Declarar un supuesto es válido. Olvidar que existe ese supuesto puede provocar errores al ampliar el programa.
Elegir una solución proporcionada
No toda tarea necesita automatizarse. Si colocarás una caja una sola vez quizá tardes menos contando los libros directamente. Programar tiene más sentido cuando una operación se repite, debe seguir siempre las mismas reglas o necesita integrarse en un proceso mayor. El tiempo de comprobar la solución también forma parte del trabajo.
Por eso empezaremos con problemas pequeños. Aprenderás a construir piezas que puedas explicar y modificar. La rapidez llegará con la práctica. Es preferible una solución sencilla que sabes comprobar a otra muy breve que copias sin comprender. En programación la claridad facilita encontrar fallos y continuar el trabajo después de varios días.
Errores habituales
- Empezar por la apariencia de la aplicación sin definir qué resultado debe producir.
- Dar por supuesto que todas las entradas serán correctas.
- Probar únicamente el ejemplo que utilizaste para diseñar el procedimiento.
- Confundir una instrucción con un deseo vago como «ordena todo bien».
- Añadir funciones nuevas antes de terminar la tarea inicial.
Lo que deberías recordar
- Un objetivo concreto permite comprobar el resultado.
- Las entradas, las reglas y las salidas cumplen papeles distintos.
- Una traza muestra cómo cambian los datos durante la ejecución.
- Los casos vacíos y los límites merecen pruebas propias.
Ejercicio práctico
Utiliza la primera hoja del cuaderno para diseñar un algoritmo que reparta veintitrés fotografías en sobres de cinco. Escribe el objetivo, las entradas y las restricciones. Después redacta los pasos sin utilizar todavía fórmulas ni instrucciones de Python. Simula cada sobre y registra cuántas fotografías quedan pendientes.
Debes obtener cinco sobres. Repite el procedimiento con veinte fotografías, con cero fotografías y con capacidad cero. Los resultados válidos son cuatro sobres y cero sobres. La capacidad cero debe rechazarse. Si tu algoritmo produce otra cosa, señala el paso responsable y corrígelo. Conserva ambas versiones para poder explicar qué cambiaste y por qué.
Siguiente capítulo: Preparar Python y tu espacio de trabajo.








