Archivo mensual 01/09/2021

Laptop con algoritmo

Qué es un algoritmo y cómo diseñarlo

De una forma un poco vaga podríamos decir que un algoritmo es una serie de pasos. Pero ahí nos quedaríamos cortos ya que estos pasos deben seguirse en determinado orden y con ciertas reglas que determinarán si se ejecuta o no. Y todo esto tiene como fin resolver un problema X o llegar a realizar una tarea específica.

El algoritmo busca cumplir determinada tarea, resolver determinado problema.

Podrías pensar que algoritmo sólo es un concepto que encontramos en la informática o en las matemáticas. Pero esto es falso, puedes identificar un algoritmo en cada cosa que haces:

  • Elaborar una receta, desde conseguir los ingredientes y utensilios hasta su preparación.
  • Cepillarte los dientes, sigues los pasos siempre en el mismo orden no?
  • Ordenar números.
  • Ordenar tu ropero, por ejemplo formar grupos de pantalones, remeras, buzos, faldas, etc..
  • Estacionar un vehículo.

Podrías hasta encontrar un algoritmo a la hora de comprar los ingredientes de la receta, teniendo en cuenta la ubicación de los alimentos en el espacio físico del supermercado partiendo del más cercano a tu ingreso. Agregando condicionales en caso que no hallarás un producto y así recorrerías el supermercado sólo una vez.
Los pasos de un algoritmo deben estar bien definidos para que puedan ser ejecutados y así llegar a cumplir una tarea específica.

Para realizar el diseño de un algoritmo podemos identificar varias fases que nos guiarán tanto en el diseño, implementación y mantenimiento del algoritmo:

Fase de análisis y especificación

Aquí es dónde hay que determinar lo que se quiere resolver. En esta fase recibes los requisitos del sistema y debes hacer un análisis de los mismos para tener claro que los has entendido y así poder pasar a la siguiente fase.

Fase de desarrollo

La fase dónde los pasos son definidos, ordenados, condicionados dentro de nuestro algoritmo con el fin de cumplir con el objetivo. Podemos servirnos para ello de herramientas como diagrama de flujo, pseudocódigo, diagrama N-S y para ello hay varios programas gratis que puedes usar aunque yo creo que en casos pequeños con lápiz y papel es más que suficiente.

Mi preferido es el diagrama de flujo dónde los pasos van encerrados en diferentes figuras conectadas entre sí mediante flechas que direccionan el flujo de ejecución. La forma de cada figura determinará el tipo de situación que se nos presenta para poder actuar en consecuencia. Aquí te muestro algunos de los símbolos del diagrama, hay muchos más por supuesto.

Símbolos normalizados del diagrama de flujo.

Está bastante claro en cuanto a las figuras de inicio o fin del diagrama, en cuanto a la de acción o proceso creo que también ya que aquí va una acción o función definida allí mismo.
La entrada de información sería por ejemplo el ingreso de datos del usuario y la salida de información es la que le es devuelta al usuario.
Dentro de subprograma o subrutina incluiremos una función predefinida en la cual podemos incluir argumentos para ser enviados y recibir el resultado que ésta arroja.
El conector nos indica que existe una referencia cruzada y un enlace en este punto a otro proceso diseñado en otra página. Este concepto me ha quedado pobre te aconsejo que busques más información sobre como utilizar un conector en un diagrama de flujo.

Hay diferentes tipos de diagramas de flujo, esto depende del uso al que está destinado, nosotros nos centraremos en el siguiente ejemplo en un diagrama de flujo de programas.
El objetivo del algoritmo será poder mostrar los clientes que coincidan con la búsqueda del usuario, dicha búsqueda puede contemplar nombre, apellido y/o número de documento. La búsqueda debe ser efectuada a partir de que el usuario ingrese al menos tres caracteres. Si no hay resultados que coincidan debe informase al usuario.


Te muestro un simple ejemplo visual y luego pasamos al algoritmo.

Buscando clientes

El control sobre el cual el usuario escribe la búsqueda tiene una función asociada que es llamada al detectar cambios en el control. Nosotros empezaremos a armar el diagrama como si el mismo se ejecutara dentro de esa función llamada en cuanto cambia el estado del control.

Diagrama de flujo de búsqueda de clientes

Fase de implementación

Esta es la parte divertida y creo que por eso caemos en el error de saltar la anterior y venir directamente a esta fase.. Es la fase donde transcribimos el algoritmo a un lenguaje de programación. Generamos el código que tendrá nuestro programa, lo compilamos, ejecutamos y probamos.

Fase de mantenimiento

Cuanto más complejo más mantenimiento, en esta fase debe armarse la documentación a medida que se va utilizando el sistema así cómo también identificar y realizar las mejoras que pueden aplicarse.

Un consejo para resolver un algoritmo

Para poder resolverlo aplica el “Divide y vencerás”, ya habrás escuchado esta frase anteriormente. Se trata de una buena estrategia para poder dividir un problema en unidades más pequeñas que nos permitan resolver cada una por separado. Una vez resuelta cada unidad procedes a juntarlas y hacer los ajustes que se requieran para cumplir con el objetivo del algoritmo.