Acerca de la Metodología para solucionar un Problema
Es muy posible que a esta altura usted se haya dado cuenta de algo en cuanto a la metodología para solucionar un problema y es que esta Metodología no solo se refiere a problemas de la lógica computacional sino que involucra cualquier problema. Note usted que los tres pasos explicados por POLYA son ni mas ni menos el secreto para que cualquier problema, sin importar de qué orden sea, tenga, mínimamente, una buena solución.
El objetivo, lo principal en todo lo que nos proponemos hacer en nuestras vidas, muchas empresas han fracasado solamente porque no tenían el objetivo suficientemente claro, muchos propósitos se han ido al piso solo porque el objetivo no era tan diáfano como se pensaba. En cuestión de lógica de programación el objetivo es lo principal. Recuerde “No dé ningún paso hacia delante si no tiene claro el objetivo”. Cuando usted tiene claro el objetivo entonces obtiene dos ganancias: Sabe claramente qué es lo que quiere hacer y sabe claramente hasta donde debe llegar o sea en donde debe parar. Pareciera que estas dos ganancias fueran lo mismo pero en realidad no lo son aunque no puedo negar que si están fuertemente conexas.
El objetivo marca el faro hacia el cual debemos enrutar todos nuestros esfuerzos y la clave para lograrlo es, precisamente, no perderlo de vista. Sin un objetivo suficientemente claro no podemos empezar a desarrollar nada pues es posible que estemos tomando un camino equivocado y no nos estemos dando cuenta. Cómo saber que el objetivo está realmente claro? Pues con el solo hecho de que usted ha conceptualizado perfectamente lo que quiere lograr, el hecho de que usted pueda explicar con absoluta seguridad qué es lo que pretende obtener, ya con eso usted podrá sentir que el objetivo está completamente claro.
No dé ni un solo paso hasta tanto no tenga una absoluta certeza de lo que usted quiere lograr. No avance porque es posible que llegue a avanzar por el camino equivocado y termine logrando algo muy distinto a lo que había sido su objetivo original. Primero que nada un objetivo claro y ahí si podrá usted pensar en todos los demás elementos que conforman esta metodología.
El objetivo es como ese farol que ilumina una calle, inicialmente, oscura. Cuando usted tiene bien claro el objetivo a lograr inmediatamente el camino para lograrlo automáticamente se aclara. Cuando a usted le dicen que debe ir hasta ese edificio azul que se ve al fondo inmediatamente
comienza a buscar todos los caminos para llegar a él y verá mas de uno que le permita lograr llegar hasta el edificio en mención. Eso es lo mismo que pasa cuando usted tiene un objetivo claro. Ese camino para lograr un objetivo es lo que se llama Algoritmo. El algoritmo es el conjunto de acciones (en el caso de un seudocódigo es el conjunto de órdenes) que nos permiten lograr un objetivo. Cuando hemos depura do nuestra lógica frente a la solución de varios problemas podemos decir que dicho Algoritmo se aproxima altamente a la solución óptima.
Cuando se trate de algoritmos computacionales deberán ir orientados a facilitar la codificación posterior precisamente para tener toda la certeza de que el computador va a ejecutar lo que nosotros hemos concebido como solución. Trate de utilizar en sus algoritmos, órdenes que sean de fácil conversión a cualquier lenguaje de programación convencional. No olvide que lo mas importante en el desarrollo de soluciones computacionales es la lógica que se haya utilizado para solucionar un determinado problema. Siempre tenga en cuenta que de una buena lógica utilizada en la construcción de los algoritmos dependen los buenos programas, es decir, las buenas aplicaciones.
Igualmente de nada sirve la presunción de que nuestros algoritmos están bien o sea de que cumplen los objetivos planteados si no nos lo demostramos a nosotros mismos haciendo unas buenas “pruebas de escritorio”. Siempre debe tener en cuenta que un algoritmo al que no se le ha hecho una rigurosa prueba de escritorio no es mas que un conjunto de órdenes posiblemente incoherente. Lo único que le da verdadero respaldo a un algoritmo es la prueba de escritorio que es la que nos permite saber si realmente el algoritmo está cumpliendo el objetivo o sino.
La prueba de escritorio nos brinda dos elementos que a mi juicio son lo mas importante en la construcción de los algoritmos: en primera instancia la prueba de escritorio nos va a permitir saber si realmente el algoritmo cumple el objetivo o no o sea, en términos coloquiales, la prueba de escritorio nos permite saber si el algoritmo está bien. En segundo lugar la prueba de escritorio nos va a permitir saber en dónde está el error o los errores de un determinado algoritmo para ser corregido, porque no solo se necesita saber si cumple o no con el objetivo un determinado algoritmo sino además saber en donde están las fallas y las razones por las cuales no está cumpliendo el objetivo.
Solo hasta cuando usted ha realizado una prueba de escritorio rigurosa y ha confrontado los resultados finales con el objetivo inicial solo hasta ese momento podrá realmente saber si su algoritmo estaba bien concebido o no. Cómo hacemos entonces para realizar una prueba de escritorio rigurosa..? Pues muy sencillo, escriba su algoritmo en formato de seudocódigo y coloque en el papel un rectángulo para lo que va a pasar en la pantalla y otro rectángulo para lo que va a pasar en la memoria. En el rec tángulo de la memoria coloque las variables que va a utilizar su algoritmo y comience a ejecutar línea a línea cada orden escrita. No suponga nada. No se salte ninguna orden. No presuma ningún resultado. Usted tendrá que ejecutar el algoritmo tal y como el computador lo va a realizar. El no supone nada, no se salta ninguna línea ni presume ningún resultado.
Solo de esta forma podemos llegar a los mismos resultados que llegaría el computador. Esto quiere decir que si al realizar una prueba de escritorio vemos que nuestro algoritmo arroja unos resultados que no coinciden con el objetivo entonces si el computador ejecutara dicho algoritmo (convertido en programa por supuesto) también arrojaría resultados errados. Vaya utilizando las variables de memoria en la medida en que las va utilizando el algoritmo y cada vez que le coloque un nuevo valor a una variable tache el valor que tenía almacenado antes dicha variable. Sin suponer nada ejecuta una a una cada instrucción del algoritmo y cuando haya terminado mire lo que queda en la pantalla o mejor dicho en el rectángulo de la pantalla.
Si lo que usted obtiene allí coincide con el objetivo inicial que buscaba lograr entonces su algoritmo estará bien y podrá comenzar a codificarlo. Si usted nota que los resultados presentados en su “pantalla” no coinciden con los que inicialmente había planteado como objetivo entonces esto querrá decir que su algoritmo está mal y que por lo tanto usted deberá corregir los errores que la misma prueba de escritorio le indique en dond e están. No olvide que en el instante de desarrollar una prueba de escritorio no se presume nada, no se supone nada ni se salta ninguna instrucción.
Podríamos concluir en este conjunto de reflexiones acerca de la metodología para solucionar un problema que de la realización eficiente de las pruebas de escritorio depende el tiempo que usted gane o pierda, de la buena construcción de algoritmos dependen las buenas aplicaciones de programación y de la claridad de los objetivos depende su prestigio como programador.
Comentarios
Publicar un comentario