Problemas y Programas

Posted on Apr 3, 2020 | Updated on Jan 21, 2022 | 2 min read

El mundo de la ciencia de computación constantemente busca resolver problemas, pero no debemos delimitar este término como si fuera alguna ecuación matemática, puesto que en la computación un problema es toda tarea que deba ser resuelta, cualquier tarea y de cualquier naturaleza, ya sea imprimir elementos de una lista, buscar el elemento máximo y mínimo en un conjunto de números o incluso calcular la masa del sol, todas son tareas que deben ser resueltas y que por supuesto, están ligadas al contexto que se esta trabajando.

Un problema puede verse como una operación matemática, es decir, como una función entre las entradas (dominio -> X) y las salidas (rango -> Y) del problema. Su definición no debería incluir el “el cómo debería estar resuelto”.

f (x) -> Y

En donde f es una función o una operación que se aplica sobre los valores de X o los utiliza para obtener un resultado Y, resolviendo así el problema.

La función f muchas veces puede estar compuesta por un conjunto de acciones o una secuencia de pasos que resuelven el problema, esto es lo que llamamos un algoritmo. Un algoritmo, sería la implementación de dicha función matemática ( f(x) ).

Algoritmo

Un algoritmo debe cumplir las siguientes características para ser considerado como tal:

  • Debe ser preciso: Tiene que indicar el orden de ejecución de cada paso.
  • Debe estar definido: Si se ejecuta un algoritmo dos veces, se debe obtener el mismo resultado cada vez.
  • Debe ser finito: El algoritmo se debe terminar en algún momento; o sea, debe tener un número finito de pasos.
  • Debe ser legible: El texto que lo describe debe ser claro, tal que permita entenderlo y leerlo fácilmente.
  • Debe estar completo: Compuesto por tres partes: Entrada, Proceso y Salida.

Por último, un programa es una instancia de un algoritmo en algún lenguaje de programación, es un archivo ejecutable que recibe ciertos parámetros de entrada (dominio -> x), realiza alguna función sobre ellos (ejecuta un algoritmo) y se obtiene un resultado (rango -> y).

Para lograr resolver correctamente cualquier problema se recomienda seguir los siguientes pasos:

  • Análisis del problema
  • Diseño del programa/algoritmo
  • Codificación del programa/algoritmo)

Lista de Tareas

Referencias:

  • Shaffer, Clifford A. (2010). A Practical Introduction to Data Structures and Algorithm. (3rd ed. Java Version).