Información y Comunicación (TIC)

Metodología para solucionar un problema

Contenidos temáticos

  1. Fundamentos de la metodología para solucionar un problema
  2. Determinando el objetivo
  3. Uso de algoritmos
  4. Prueba del algoritmo
  5. Algoritmos informales
  6. Algoritmos computacionales
  7. Transcripción, digitación y compilación de algoritmos
  8. Ejecución y verificación de resultados del algoritmo

Desarrollo del tema

1. Fundamentos de la metodología para solucionar un problema

Siempre que vamos a resolver un problema nos enfrentamos con la dificultad de tener que encontrar precisamente eso: Una Solución. Pocas veces nos detenemos a pensar que existe un camino estructural que nos permite resolver cualquier problema (en términos generales) teniendo, como es obvio, que entrar en la minucia del detalle dependiendo del problema.

¿Cuál es el primer paso que debemos dar cuando nos enfrentamos a un problema? Lo primero que debemos tener muy pero muy muy claro es ¿Cuál es el problema?.

Es evidente que no podemos avanzar hacia la casa de un amigo nuestro que no sabemos en donde vive porque las posibilidades de que lleguemos son casi nulas.

De manera que lo primero a conocer muy bien es el problema como tal que en nuestros términos lo vamos a ver no como un problema sino como un objetivo.

 

2. Determinando el objetivo

La determinación del objetivo es lo más importante en el desarrollo de un problema y por ello he agrandado la letra en esta palabra solo para que usted sepa que es por ahí por donde debe comenzar. Tener claro el objetivo nos va a permitir obtener dos beneficios que a la postre serán más grandes de lo que podemos pensar:

a) Tener claro el objetivo nos permite saber hacia dónde vamos.

b) Tener claro el objetivo nos permite saber hasta dónde debemos llegar.

Estas dos definiciones parecieran ser lo mismo pero en el fondo no lo son. Usted puede tener muy claro hacia dónde va pero puede no saber hasta dónde debe llegar o, dicho en otras palabras, no saber en donde debe parar o podría saber en donde debe para pero no tener ni idea por cual ruta llegar. El objetivo se ha de convertir en la razón de ser en la solución de un problema.

En nuestro caso, y más que nunca, podemos decir que para llegar a la solución de un problema la clave de ello está en tener muy claro cuál es el objetivo y no perderle nunca de vista. Tal vez usted tendrá alguna inquietud en cuanto a la insistencia de este tópico pero la realidad es que muchas veces creemos tener claro el objetivo y solo cuando nos empeñamos en lograrlo vemos que no era así.

3. Uso de algoritmos

Es un conjunto de pasos secuenciales y ordenados que permiten lograr un objetivo. Que sean pasos secuenciales significa que deben ser ejecutados uno después de otro y que sean pasos ordenados quiere decir que deben llevar un orden quasi-obligatorio (u obligatorio en la mayoría de los casos). Como puede notar el algoritmo permite lograr un objetivo. O sea que éste es el camino que necesitamos para lograrlo.

Cuando el objetivo está realmente claro. Siempre que usted, en el desarrollo de la solución de un problema, vea que en algún momento no sabe por donde coger, no sabe qué hacer o se siente perdido, no busque más simplemente quiere decir que realmente usted no tenía tan claro el objetivo como había pensado. Un algoritmo se estructura comenzando en un Inicio y terminando en un Fin. Un ejemplo: Desarrollar un algoritmo que nos permita adquirir el libro El Coronel no tiene quien le escriba de Gabriel García Márquez.

  • Objetivo: Adquirir el libro El Coronel no tiene quien le escriba de Gabriel García Márquez. Mucha atención al objetivo. Solamente es adquirirlo en ningún momento el objetivo es leerlo o resumirlo ni nada, solamente adquirirlo.
  • Algoritmo: Salimos del lugar en donde estemos y nos dirigimos hacia una librería. En caso de que ya estemos en una pues sencillamente solicitamos si tienen el libro, si lo tienen lo adquirimos y si no lo tienen vamos a otra librería en donde repetimos el proceso.

Explicado así el algoritmo no va a pasar de ser un breve texto explicativo que nos va a permitir lograr algo y que en este caso es la adquisición de un Libro determinado. Pero podríamos organizar este algoritmo de manera que fuera un poco mas estético y, porqué no decirlo, un poco mas entendible comenzando por el hecho de que esta vez le vamos a colocar un nombre al algoritmo y que lo vamos a generalizar para conseguir cualquier libro siempre y cuando esté completamente definido.

Ejemplo: Algoritmo Adquisición Libro

Inicio

  1. Saber cuál es el libro que se quiere adquirir
  2. Desplazarnos hacia una librería
  3. Preguntar si tienen el libro que necesitamos
  4. Si lo tienen

adquirirlo y Parar allí (dentro de este algoritmo) Si no lo tienen

ir al paso 2

Fin

Algunas puntualizaciones al respecto de este algoritmo:

  • Casi todas las líneas van numeradas, pero no todas.
  • En la línea 1 se debe cumplir esa orden para poder continuar con el resto del algoritmo, porque se asume en algoritmo que no solo se pasa por encima de las líneas sino que se realizan las tareas allí indicadas.
  • Si realizamos todos los pasos que indica este algoritmo, podremos obtener el libro que sea porque la connotación de éste es absolutamente genérico sin restricciones ya que en ningún momento se está diciendo que nos desplazamos hacia una librería que quede en la ciudad.

d) Si luego de recorrer todas las librerías de todos los países de todo el mundo vimos que no pudimos conseguir el libro entonces podemos obtener dos conclusiones: Una es que el libro que buscábamos no lo tiene ninguna librería porque está agotado y la otra es que el libro es posible que nunca haya existido.

e) Si probamos este ejemplo con el libro en mención (o sea El Coronel no tiene quien le escriba) tendremos un alto porcentaje de seguridad de que lo conseguimos a menos que esté agotado…

Puede notarse en este tipo de algoritmos dos cosas: Primero que son algoritmos conocidos como informales, es decir aquellos algoritmos que no pueden ser implementados a través de un computador. Segundo y precisamente debido a que son algoritmos informales, deben hacerse una cantidad de reflexiones antes y después de ellos. Reflexiones que tienen una connotación puramente humana.

4. Prueba del algoritmo

La prueba de escritorio es la simulación de la puesta en marcha de un algoritmo. Con la Prueba de Escritorio podemos determinar si el algoritmo que hemos diseñado logra el objetivo propuesto. De no ser así podremos concluir que se debe corregir el algoritmo hasta lograr que satisfaga el objetivo propuesto.

Por lo que usted ha podido observar en el algoritmo de ejemplo, cada línea numerada del algoritmo puede considerarse a su vez otro algoritmo ya que el solo hecho de Saber cuál es el libro que se quiere adquirir nos obliga a realizar una serie de pasos ordenados y secuenciales para poderlo saber.

Un algoritmo debe tener el nivel de detalle suficiente como para que no exista ninguna duda en su puesta en marcha, es decir, como para que cada línea pueda ser realizada sin el más mínimo asomo de inquietud. Ello quiere decir que algunos algoritmos pueden ser más entendibles para unas personas que para otras dada su misma definición racional.

5. Algoritmos informales

Definidos como todos aquellos algoritmos que no son realizables a través de un computador o al menos no fácilmente. Son aquellos algoritmos en donde el ejecutor real es el ser humano como el algoritmo para dar un beso, el algoritmo para freír unos huevos o el algoritmo para conseguir un libro.

La tecnología ha avanzado tanto actualmente que muchos algoritmos que en el pasado no eran implementables a través de un computador en la actualidad lo son y de manera más sencilla como es el caso del algoritmo para conseguir un libro que anteriormente se pensaba en librerías y ahora se piensa en un concepto más globalizado: Internet, con más posibilidad de conseguirlo y con menos trabajo.

De manera que vamos a considerar aquellos algoritmos informales como los que son preferiblemente realizables por el ser humano.

6. Algoritmos computacionales

Se consideran como tales todos aquellos algoritmos que deben ser preferiblemente implementados en un computador para aprovechar su velocidad de procesamiento.

Un ejemplo de estos puede ser el algoritmo que genere los primeros 100 números primos, recordando que un número primo es aquel que solo puede ser dividido exactamente entre la unidad y entre sí mismo, que si bien podrían ser calculados utilizando un papel y un lápiz, la utilización de un computador en unión con el algoritmo adecuado va a dar un resultado mas rápido y absolutamente confiable (de hecho depende de que el algoritmo igualmente sea muy confiable).

Son precisamente estos algoritmos los que resulta de importancia definir y poner en práctica por su confiabilidad. En si se trata de una metodología para llegar a la solución final que permita lograr un objetivo.

7. Transcripción, digitación y compilación de algoritmos

Este es el proceso a través del cual “convertimos” un algoritmo, escrito en términos informales, en un listado de instrucciones entendibles a un computador y que se ajustan a las reglas sintácticas de determinado lenguaje de programación. Podríamos decir que es la “traducción” de un algoritmo con la “ortografía” de un Lenguaje de Programación.

Digitación

Es el proceso a través del cual le escribimos al computador el programa que hemos acabado de escribir en papel. Para ello nos valemos de un programa llamado Editor de texto que nos permite escribir un texto y grabarlo. Visto neutralmente, un programa no es más que un texto escrito bajo la óptica de algunas reglas preestablecidas por los creadores de un Lenguaje de Programación.

Compilación

Al re-escribir un algoritmo con las reglas sintácticas de un Lenguaje de Programación es decir al escribir un programa, es posible omitir algunas reglas lo que provoque algunos errores. Para ello el computador facilita una herramienta que revisa la sintaxis del programa, nos dice si tiene errores y, en los casos más depurados, nos dice en qué líneas del programa están los errores y hasta nos sugiere la corrección.

8. Ejecución y verificación de resultados del algoritmo

Ejecución

Realizadas las correcciones pertinentes para que el compilador no reporte errores de sintaxis y errores de precaución ya estamos en condiciones de poner a “correr” el programa o sea en condiciones de ser ejecutado por el computador. Si lo que queríamos inicialmente (o sea nuestro objetivo) era generar los 100 primeros números pares entonces al momento de la ejecución deberán aparecer en pantalla los 100 primeros números pares.

Verificación de Resultados

Este último paso es útil ya que con lo que nos entregue la ejecución del programa podremos saber si se cumplió el objetivo inicial o no. En caso de que no se haya cumplido el objetivo inicial ( al llegar a este punto ) ser por algunas de las siguientes razones:

  • No está claro el objetivo y se falló en todo el proceso
  • La prueba de escritorio tenía errores
  • Desconocimiento de las reglas sintácticas del lenguaje con el que pensábamos trabajar y el programa transcrito final terminó siendo una representación técnica diferente del algoritmo inicial