A partir de un problema, aprenderás a realizar el diseño de
un algoritmo.
Puede haber más de un algoritmo que solucione un mismo problema, por lo tanto, tendrás criterios claros para elegir el algoritmo más adecuado en cada momento.
El algoritmo más adecuado será el que presente las siguientes características:
- Corrección: el algoritmo hace lo que le pides.
- Inteligibilidad: ha de ser claro y fácil de entender, puesto que se escribirá una sola vez. En un futuro será necesario leerlo muchas más veces para poder mantenerlo y/o modificarlo.
- Eficiencia: Debe llevar a cabo la tarea que se le ha encargado en un tiempo y recursos razonables.
- Generalidad: con pocos cambios, el algoritmo se debe poder adaptar a otros enunciados parecidos.
Cuando diseñes tus algoritmos, siempre ten en cuenta estos cuatro criterios. La metodología que te voy a enseñar te ayudará a diseñar algoritmos que los cumplan, pero no sólo hay que conocer el método, también es muy importante practicar mucho.
Tabla de contenidos
Etapas del diseño de algoritmos
A la hora de enfrentarte a diseñar un problema, existen 4 etapas con las que sistematizaremos el proceso de creación:
- Entender el problema: es una de las etapas más críticas. Si no entiendes el problema poco podrás hacer. Con la herramienta de especificación formal de los algoritmos conseguirás evitar ambigüedades y pasar esta etapa rigurosamente.
- Planificar la solución: con el método que te mostraré (esquemas de recorrido y búsqueda, y el análisis descendiente) te permitirá ser más eficiente en esta etapa y hacer más fácil el resto.
- Formular la solución: el lenguaje algorítmico te facilitará definir el algoritmo con precisión y sin ambigüedades.
- Comprobar que la solución sea la correcta: la claridad del algoritmo y la aplicación de ciertos esquemas, te hará estar casi seguro de que la solución a la que has llegado es la correcta. La especificación (precondiciones, poscondiciones, etc.) del algoritmo también te ayudarán a ver que has llegado a una solución correcta.
Entender el problema
El objetivo de esta etapa es pretender ordenar tus ideas, identifica cuáles son las condiciones iniciales del problema que quieres solucionar, que llamarás precondición. A partir de ella tienes que establecer el objetivo a alcanzar, que llamarás poscondición.
Cuando definas las condiciones iniciales, tienes que evitar la ambigüedad. La especificación consiste precisamente en eso, en ser una descripción clara y precisa.
En esta etapa no tienes que preocuparte de cómo lo harás, sino de qué harás. Es decir, qué tienes inicialmente (precondición) y qué quieres obtener (poscondición).
Ejemplo de especificación de un problema:
El objetivo de tu lavadora es lavar ropa que has introducido en ella. Para llegar al objetivo es necesario que la tengas enchufada a la corriente eléctrica y al suministro de agua; en ningún momento has pensado cómo actúa la lavadora.
Parece una chorrada de ejercicio, pero si sistematizas este proceso, que luego podrás implementar dentro de tu algoritmo en forma de comentario, te ayudará a tener documentado correctamente tu código y acostumbrar a tu cerebro a definir una solución al problema.
Planificar la solución
Tienes que ver si el problema corresponde a un tipo de problema que has aprendido en la teoría (en próximos post te mostraré los esquemas de recorrido). Si es ese el caso, puedes aplicar los esquemas aprendidos de una manera rápido y segura.
Los esquemas teóricos te ayudarán a resolver el problema rápidamente, de otra forma tardarías más en encontrar una solución.
Cuando el problema es complejo, tendrás que aplicar la metodología de diseño descendiente, la cual, te permitirá enfrentarte a problemas de mayor complejidad y transformar el problema complejo en un subconjunto de pequeños problemas. En ellos podrás aplicar los esquemas aprendidos.
Formular la solución
El lenguaje algorítmico nos permite expresar los algoritmos de una forma clara y precisa, pero primero hay que conocer su sintaxis y la semántica de sus elementos.
Comprobar que la solución sea la correcta
En esta etapa tienes que hacer un seguimiento de los pasos del algoritmo con un caso concreto de datos.
Aunque el resultado sea positivo, para el caso que hayas escogido, no puedes estar seguro que será correcto en todos los casos. Pero el método propuesto, junto con la especificación que se implementará en forma de comentarios en el código, te permitirá tener una visión más acotada sobre la corrección de tu diseño.
Implementación final del algoritmo a programa
Una vez tienes el algoritmo, lo tienes que pasar al lenguaje de programación escogido, utilizando la sintaxis correcta para cada uno de ellos. Hay lenguajes que se tendrán que compilar primero (C, Java…), otros como el JavaScript son lenguajes interpretados que traducirá el navegador al vuelo.
Deja una respuesta