¿Qué es un algoritmo y cómo se representa?

Un concepto básico en la lógica de programación y en el desarrollo de software es la palabra algoritmo, básicamente un algoritmo es un conjunto de instrucciones ordenadas que nos ayudan a resolver un problema o tarea. Usualmente nos apoyamos de los diagramas de flujo los cuales nos ayudan a representar los algoritmos de una manera gráfica; fácil de entender. Comenzaremos aprendiendo con un ejemplo sencillo el cual puede ser solucionado mediante el uso de un algoritmo..

Problema #1: No enciende mi Playstation 4

¿Qué pasos seguirías tú para determinar por qué motivo un Playstation 4 no enciende? Tómate unos segundos para pensar cómo solucionarías ese problema, paso a paso. Trata de enumerar (ya sea en tu mente o tomando apuntes) los pasos que seguirías para solventar este inconveniente.

¿Listo? Ahora, probablemente lucirá algo similar a esto:

Algoritmo de solución:

  1. Revisamos si el PS4 está conectado
  2. Si no está conectado procederíamos a conectarlo
  3. Si está conectado probaríamos el enchufe (al cual se encuentra conectado el PS4) con otro aparato
  4. Si el enchufe no funciona, es hora que lo vea un electricista
  5. Si funciona el enchufe, es el PS4 el que necesita ser revisado por un técnico

NOTA: No te preocupes si lo que pensaste o escribiste no es muy similar al algoritmo de solución presentado anteriormente. Cada persona solventa los problema de manera diferente, esto es lo hermoso de la lógica de programación y desarrollo de software, cada quien tiene su estilo de pensar, programar y construir software; que poco a poco, se va perfeccionando con la dedicación y experiencia.

Diagrama de flujo:

Para representar este algoritmo antes descrito utilizaremos tres figuras en el diagrama.

  • Óvalos: Representan el inicio y el fin de un algoritmo
  • Rectángulos: Representan una acción a realizar
  • Rombos : Representan condiciones (o preguntas) las cuales nos ayudan a decidir la siguiente acción a realizar basada en el resultado de la acción previa.

Imaginémonos que tenemos una tienda de consolas y videojuegos. Poseemos un sitio web en el cual hay una sección de soporte donde nosotros prometemos darle servicio 24/7 a todos nuestros clientes y resulta que a Manuel, luego de 8 horas seguidas de jugar se le arruina su PS4 y ya no le enciende… ¡Qué problema! Él les hizo una compra hace tres semanas por lo tanto la garantía aun es válida y recordó que le mencionaron sobre el sitio web que le brindaría soporte 24/7.

Implementando el algoritmo anterior podríamos construir un sencillo ChatBot que nos ayude a saber quien nos contacta y a quien contactar automáticamente en dado caso cualquier persona reporte en el sitio web que no le enciende su PS4 comprado en nuestra tienda; en este caso le está pasando a Manuel.

El sistema tomaría la decisión basada en las respuestas brindadas por el usuario y nuestra aplicación procedería a hacer una llamada al técnico correspondiente para que llegue a la casa de Manuel. Esto nos nos beneficiaría ya que así no dependemos de una persona para que tome llamadas y las redirija a los técnicos o que tome todos los apuntes del cliente, los cuales ya podrían existir en nuestra base de datos y por medio de su documento de identidad se confirmaría la hora y dirección de visita… Claro, siempre tomando en cuenta validaciones que nos ayuden a confirmar que la persona que nos contacta no lo hace con fines maliciosos.

Solo esperemos que a nadie se le arruine el PS4 a media noche luego de una sesión de 8 horas jugando ya que según el algoritmo anterior, dependiendo del problema reportado, el técnico asignado estaría recibiendo una llamada por medio de nuestra aplicación para darle soporte.

¿Interesante no?


Problema #2: Elaborar un algoritmo que logre lo siguiente:

  1. Capturar dos valores (Valor 1 y Valor 2)
  2. Indicar cuál de los dos valores ingresados es mayor (¿Valor 1 ó Valor 2?)
  3. Mostrar el resultado de multiplicar los dos valores ingresados (Valor 1 multiplicado por Valor 2)

Algoritmo de solución:

  1. Capturar dos valores ingresados por el usuario
  2. Comparar Valor 1 con Valor 2
    • Si Valor 1 es mayor que Valor 2
      • Mostrar: “Valor 1 es mayor que Valor 2
    • Si Valor 2 es mayor que Valor 1
      • Mostrar: “Valor 2 es mayor que Valor 1
  3. Obtener el resultado de “Valor 1 multiplicado por Valor 2
  4. Mostrar el resultado de la multiplicación.

Diagrama de flujo:

Aprenderemos sobre dos símbolos (o figuras) más que usaremos en el diagrama de flujo que solucionará el Problema #2.

  • Paralelogramo: Representa la lectura de datos que ingresa el usuario, en este caso vamos a leer el “Valor 1” y “Valor 2”
  • Símbolo de “documento”: Representa la impresión de datos de salida que deseamos mostrar en la pantalla. Lo podemos identificar por un rectángulo que en su parte inferior posee una linea curva.

Por motivos de ejemplo definiremos que:

Valor 1 = 7
Valor 2 = 5

Por lo tanto, el algoritmo anterior deberá imprimir:

7 es mayor que 5 y el resultado de 7 x 5 es igual a 35

Esto es debido a que cuando el diagrama de flujo captura los valores (en este caso 7 y 5) y se hace la pregunta “¿Es 7 mayor que 5?”, obviamente responde “sí” y obtenemos impreso “7 es mayor que 5”.

Luego, vemos una nueva palabra la cual es “Valor 3”, este valor almacena el resultado de el resultado de multiplicar el Valor 1 por Valor 2, sustituyendo valores, sería:

Valor 3 = Valor 1 x Valor 2
Valor 3 = 7 x 5
Valor 3 = 35

Programar solución:

Ahora… ¡Hagamos esto más divertido! Uno de los lenguajes de programación más utilizados alrededor del mundo es PHP, usaremos este lenguaje de programación para completar esta tarea.

No te preocupes tanto por entender que quiere decir cada linea de código y cada carácter que ves en este ejercicio, poco a poco te ayudaremos a que te vayas familiarizando con la sintaxis de cada lenguaje de programación, sin embargo, te motivamos a que trates de leerlo y comprender que hace el siguiente bloque de código. Luego damos click en “Run” y obtendremos el siguiente resultado en la parte inferior:

7 es mayor que 5 y el resultado de 7 x 5 es igual a 35

Si nunca habías programado antes… ¡Felicidades! Acabas de ejecutar tu primer programa real el cual es un gran paso en tu viaje para ser un #SivarDev. Si deseas saber que hace exactamente cada linea de código que acabas de ejecutar, ingresa a este link de nuestra cuenta de GitLab donde se encuentra alojado el ejemplo anterior con comentarios que explican a profundidad el código. Puedes cambiar las primeras 2 lineas de código colocando los valores que tu desees (en vez de 7 y 5) y presiona “Run” de nuevo, verás el nuevo resultado. ¿Divertido no?

Siempre recordemos que los lenguajes de programación son independientes a los algoritmos, el algoritmo anterior lo podríamos programar tanto en PHP como en Java, Python, Perl, C#, JavaScript, etc…

Por lo tanto, podemos concluir que un algoritmo es un conjunto de instrucciones que se ejecutan en orden para obtener la solución de un problema y se representan usualmente utilizando diagramas de flujo los cuales son de gran ayuda ya que nos permiten ver gráficamente a detalle la lógica que se aplica en cada algoritmo.

¿Tienes alguna duda o consulta respecto a este tema? ¡No dudes en registrate y comentar para ser parte de esta emergente comunidad!

Dejar un comentario

Debes iniciar sesión para publicar un comentario.