Análisis de problemas y diseño de algoritmos

Un programador es una persona que resuelve problemas, y para llegar a ser un programador eficaz se necesita aprender a resolver problemas de un modo riguroso y sistemático:

  • Definición o análisis del problema: consiste en el estudio detallado del problema. Se debe identificar los datos de entrada, de salida y la descripción del problema.
  • Diseño del algoritmo: que describe la secuencia ordenada de pasos que conduce a la solución de un problema dado: algoritmo.
  • Transformación del algoritmo en un programa (codificación): Se expresa el algoritmo como un programa en un lenguaje de programación.
  • Ejecución y validación del programa.

Análisis del problema

El primer paso, análisis del problema, requiere un estudio a fondo del problema y de todo lo que hace falta para poder abordarlo.

El propósito del análisis de un problema es ayudar al programador (Analista) para llegar a una cierta comprensión de la naturaleza del problema. Una buena definición del problema, junto con una descripción detallada de las especificaciones de entrada/salida, son los requisitos más importantes para llegar a una solución eficaz.

Para realizar el análisis del problema realizamos varios pasos:

  • Definición del problema: Tenemos que entender y comprender la naturaleza del problema, tenemos que dominar los conceptos con los que estamos trabajando y conocer que operaciones hay que realizar para solucionar el problema y obtener la información de salida.
  • Especificación de los datos de entrada: Hay que determinar que datos de entrada necesitamos para resolver el problema.
  • Especificación de los datos de salida: También hay que determinar los datos de salida que van a ofrecer la solución del problema.

Diseño de algoritmos

A partir de los requerimientos, resultados del análisis, empieza la etapa de diseño donde tenemos que construir un algoritmo que resuelva el problema.

Definición de algoritmo

Un algoritmo es un conjunto de acciones que especifican la secuencia de operaciones realizar, en orden, para resolver un problema.

Los algoritmos son independientes tanto del lenguaje de programación como del ordenador que los ejecuta.

Las características de los algoritmos son:

  • Un algoritmo debe ser preciso e indicar el orden de realización de cada paso.
  • Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez.
  • Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar en algún momento; o sea, debe tener un número finito de pasos.

Herramientas de representación de algoritmos

  • Un diagrama de flujo es una de las técnicas de representación gráfica de algoritmos más antiguas. Ventajas: permite altos niveles de estructuración y modularización y es fácil de usar. Desventajas: son difíciles de actualizar y se complican cuando el algoritmo es grande.
  • El pseudocódigo, nos permite una aproximación del algoritmo al lenguaje natural y por tanto un a redacción rápida del mismo.