Algoritmos

Introducción

En esta sección vamos a hablar sobre algoritmos en un sentido amplio, especificar las características, pseudocódigo, diagramas de flujo y por último un ejemplo de resolución de un problema, formulando un algoritmo, escribiendo el pseudocódigo, dibujando el diagrama de flujo y finalmente implementando en C# en Unity para el desarrollo de videojuegos.

¿Qué es un algoritmo?

Un algoritmo es una serie finita de pasos ordenados que describen el pasaje desde un estado inicial a un estado final de algún proceso.

En general utilizamos algoritmos para resolver problemas, como realizar cálculos matemáticos u ordenar grandes listas de datos.

Dado un problema concreto, el algoritmo que lo resuelve será una serie finita de pasos secuenciales que conducen a la resolución del problema.



Características de un algoritmo

Un algoritmo consiste en una secuencia finita de pasos.

Sus instrucciones deben estar bien definidas y sin ambigüedades, es decir cada instrucción debe poder interpretarse de manera unívoca.

Las instrucciones de un algoritmo deben estar ordenadas de manera secuencial, es decir se trata de instrucciones ordenadas.

Pseudocódigo

El pseudocódigo es una descripción en lenguaje coloquial del algoritmo.

En este caso a las instrucciones del algoritmo le damos la forma que va a tener en el código, pero no usamos sintaxis de ningún lenguaje en particular.

Diagrama de Flujo y algoritmos

Los diagramas de flujo son representaciones gráficas de algoritmos.

Utilizando un conjunto de símbolos y conectando con flechas se puede describir la serie de pasos que describe un algoritmo.

Implementación de un algoritmo computacional

Para los pasos previos no necesitamos saber ningún lenguaje de programación. Es decir dado un problema concreto, idear un algoritmo que lo resuelve y luego plantear un diagrama de flujo para tener una representación visual, todo esto lo podemos hacer sin saber programar y de alguna forma lo hacemos mentalmente cada vez que nos enfrentamos a los problemas en la vida cotidiana.

Para implementar el algoritmo en un programa computacional debemos conocer un lenguaje de programación concreto y todo va a depender de qué es lo que queremos hacer.



Ejemplos: Algoritmos en Unity

Vamos a dar un ejemplo de un problema en el ámbito del desarrollo de videojuegos con Unity.

Supongamos que tenemos una serie de enemigos rodeando al jugador y queremos saber cuál de ellos es el que se encuentra más cerca.

Planteo del problema

El objetivo es crear una función o método que dado un conjunto de GameObjects nos devuelva el GameObject que se encuentre más cerca del jugador.

Algoritmo

La secuencia de pasos para resolver este problema sería:

-Asumir que el primer elemento del conjunto es el más cercano al jugador.

-Para los elementos de la posición 2 en adelante compararlos con el objeto más cercano hasta el momento, si es aún más cercano al jugador tomarlo como el nuevo objeto para comparar. Repetir para todos los elementos restantes.

Pseudocódigo

pseudocodigo de un conjunto de  algoritmos que se encargan de encontrar todos los objetos cercanos al jugador, desarrollo de juegos en unity
Fig. 1: Pseudocódigo de un algoritmo que dado un conjunto de objetos, devuelve el objeto más cercano a otro objeto predefinido.

Para escribir el pseudocódigo tomamos el algoritmo y le damos una estructura de programación en lenguaje coloquial, teniendo en cuenta las asignaciones, operaciones, bucles, sentencias if y demás.



Diagrama de Flujo

El diagrama de flujo será una representación visual del pseudocódigo, utilizando símbolos predefinidos por convención. A continuación podemos ver el diagrama de flujo asociado al pseudocódigo anterior.

diagrama de flujo para un conjunto de algoritmos que se encargan de encontrar todos los objetos cercanos al jugador, desarrollo de juegos en unity
Fig. 2: Diagrama de Flujo de un algoritmo que dado un conjunto de objetos, devuelve el objeto más cercano a otro objeto predefinido.

Implementación del algoritmo en Unity

En esta parte vamos a la aplicación concreta del algoritmo, como lo vamos a utilizar para una función en Unity (desarrollo de videojuegos) la implementación será en lenguaje C#.

funcion en programacion que implementa un algoritmo que se encarga de encontrar todos los objetos cercanos al jugador, desarrollo de juegos en unity
Fig. 3: Método en C# que implementa un algoritmo que dado un conjunto de objetos, devuelve el objeto más cercano a otro objeto predefinido.

Como vemos el resultado final es un método en C# que resuelve el problema propuesto.

Artículo anexo: ¿Qué es una función en programación?