Cómo trazar un algoritmo con estructuras de selección.
Un saludo desde mi hermoso México a tod@s los que son tan amables de leerme. En esta entada hablaré sobre el rastreo o trazado de un algoritmo, también conocido como prueba de escritorio.
El trazado de un algoritmo es una simulación “a mano” de la ejecución de un algoritmo con el objetivo de verificar que funcionará correctamente antes de ser codificado, compilado y ejecutado. Frecuentemente es una técnica olvidada tanto por programadores, docentes y estudiantes, pero yo por mi parte la considero esencial para encontrar errores de lógica (y así no perder tiempo) pero sobre todo para aprender a programar. Si puedes trazar un algoritmo o programa, puedes leer código. Eso implica que entiendes la lógica de programación. Y si entiendes la lógica estás muy cerca de poder escribir código.
Si te das cuenta, es una idea que no está muy lejos de lo que sucede cuando estábamos aprendiendo a leer y a escribir. Y de hecho muchas personas recomiendan leer más para poder escribir mejor o por lo menos tener un vocabulario más amplio y mejorar nuestra ortografía.
Ejemplo # 1
Una vez dada una breve introducción sobre lo que el trazado de un algoritmo es, podemos pasar a resolver un ejemplo. Para ello, considera el siguiente problema:
“En una tienda de abarrotes, la bolsa grande de papas fritas tiene un costo de $35.00. Pero si el cliente se lleva más de tres bolsas, recibe un descuento de $10.00 por cada bolsa. Elabore un algoritmo para calcular lo que un cliente debe pagar al comprar x bolsas grandes de papas fritas en dicha tienda”
Claramente se trata de un problema sencillo de resolver. Primero se le pide al cliente el número de bolsas que comprará, este dato se almacena en la variable bolsas. Después se compara el valor de bolsas para saber si es mayor o igual a 3, ya que es la condición establecida en el enunciado del problema. Usaré una variable más: precio, cuyo valor será ya sea de 35 o de 25 dependiendo del valor de bolsas. Por último, obtengo el valor del costo total que el cliente deberá pagar y por supuesto que se muestra este valor como salida.
El algoritmo.
El algoritmo correspondiente, escrito en notación de diagrama de flujo se muestra en la figura 1.

Figura 1. Diagrama de flujo para el problema del ejemplo # 1
En la figura 2 muestro el mismo algoritmo en notación de pseudocódigo.

Figura 2. Pseudocódigo para el problema del ejemplo # 1
Bien, hasta aquí parece no haber gran problema.
El trazado.
Ahora para trazar el algoritmo, sólo debemos asignarle un valor a la(s) variable(s) de entrada, en este caso, bolsas. Y debemos asegurarnos de darles valores que prueben las dos ramas, es decir, primero lo trazaremos con bolsas = 4, y después con bolsas = 2. Puede resultar difícil explicar el trazado sólo con texto, por eso he preparado una pequeña animación que espero clarifique el proceso. Observa la figura 3, en donde se muestra una secuencia de trazado del diagrama de flujo en donde bolsas = 4.

Figura 3. Animación del trazado del diagrama de flujo del ejemplo # 1 para la rama verdadera
En la figura 4 te muestro el resultado del trazado cuando bolsas = 2.

Figura 4. Animación del trazado del diagrama de flujo del ejemplo # 1 para la rama falsa
Ejemplo # 2
El primer ejemplo fue muy sencillo y muy obvio, pero como puedes imaginarte, no todos los algoritmos son así. Y de hecho, recuerda que los principales objetivos de trazar un algoritmo es verificar que el algoritmo funciona y sobre todo, si no funciona, encontrar por qué no lo hace.
Ahora observa la figura 5. En esta te muestro un pseudocódigo, sin el enunciado del problema. Y es que, para trazar un algoritmo, no es tan importante el enunciado en sí, sino el simple hecho de rastrear el algoritmo. Quizá no esté muy claro, pero en este caso, se trata de una estructura de selección simple: no existe rama falsa, mucho cuidado al respecto.

Figura 5. Pseudocódigo para el problema del ejemplo # 2.
La prueba de escritorio.
Ahora las preguntas son:
- ¿Cuál será la salida que se mostrará en pantalla si x=-8?
- ¿Cuál será la salida que se mostrará en pantalla si x = 12?
Para ello, es sumamente importante evaluar correctamente a la expresión condicional. Algo que se suele hacer al trazar un algoritmo, es crear una tabla para rastrear los valores de las variables involucradas. Esta tabla es más común para estructuras repetitivas (ciclos), pero también puede utilizarse para estructuras condicionales.
La tabla se aprecia en la figura 6, con los dos valores de x, en donde se observa que cuando x=-8, la expresión condicional es falsa y no debe ejecutarse la rama verdadera de la estructura Si. Por otro lado, cuando x= 12, el resultado de la expresión condicional es verdadera, y por lo tanto debe ejecutarse la rama verdadera de la estructura Si.

Figura 6. Prueba de escritorio para el algoritmo del ejemplo # 2
Los dos trazados se muestran en la figura 7. En naranja se muestra el trazado cuando x=-8 y en verde cuando x=12. Algo curioso está pasando con este algoritmo, como se puede apreciar. Debido a la forma en como está escrito, podemos concluir que no importa el valor de entrada de x, pues terminará valiendo 1, y la salida del algoritmo será 1. Quizá pueda tratarse de un error, pero como programadores debemos ser capaces de leer algoritmos como estos, y reconocer el resultado que arrojan.

Figura 7. Trazado del pseudocódigo del ejemplo # 2.
Como puedes ver, el rastreo de un algoritmo es una herramienta muy útil que puede ahorrarnos mucho tiempo de depuración. Además, nos ayuda a desarrollar la lógica de programación que tanto se requiere en el camino de convertirnos en programadores.
Para terminar, ¿qué tal probar tus nuevos conocimientos trazando un algoritmo? Bueno, por siquieres probar, te dejo un pseudocódigo más:

Figura 8. Un pseudocódigo más para trazar 🙂
Puedes trazarlo con los siguientes pares de valores:
- x= -3, y=4
- x=12, y=-2
¿Cuál es la salida?
¡Feliz rastreo! ¡Hasta la próxima!