viernes, 27 de diciembre de 2013

Algoritmos

Un programador tiene que dominar el desarrollo de algoritmos si quiere realizar buenos programas. Es fundamental que se tenga una buena maestría resolviendo problemas mediante los algoritmos para poder desarrollar un buen código y no tengamos luego quebraderos de cabeza porque el programa no funciona. Si dominamos esto, tendremos más fácil el desarrollar programas, pues "sólo" quedaría transcribir el algoritmo a un lenguaje de programación.
Para resolver un problema (ya dije en el artículo anterior a este, que un programador es alguien que resuelve problemas) tenemos que seguir cuatro pasos básicos:
  1. Identificar el problema: Tenemos que hacer un análisis detallado del problema. Esto en principio parece fácil, pero a veces no lo es. Se tiende a pensar que se sabe cual es el problema pero luego a la hora de resolverlo, vemos que no es ese exactamente el problema que queríamos resolver. (A mi me ha pasado tirarme varias horas desarrollando un algoritmo para hacer un programa para luego darme cuenta que el algoritmo no resuelve el problema y por tanto el programa no hace lo que se supone debería hacer.)
  2. Elaborar el algoritmo correspondiente: Una vez que hemos analizado y sabemos perfectamente que problema tenemos y que tenemos que hacer, se desarrolla un algoritmo capaz de resolver el problema mediante una secuencia de pasos ordenados (nada de ambigüedades) que resuelva el problema.
  3. Escribir el algoritmo en un lenguaje de programación: Una vez escrito el algoritmo, se elige un lenguaje de programación (C,C++, Java etc.) y se escribe en él.
  4. Ejecución y validación del programa: Una vez escrito el código, hay que ejecutarlo y probarlo para comprobar que esté libre de errores. 
Los algoritmos son muy importantes porque son ajenos tanto al lenguaje de programación como al ordenador donde se deba ejecutar. Para que exista un programa, debemos tener un algoritmo que funcione. Los programadores normalmente suelen saltarse la fase del desarrollo del algoritmo y lo van implementando sobre la marcha en el lenguaje de programación.Eso suele funcionar cuando el programa es pequeño, pero cuando es grande suele dar muchos quebraderos de cabeza porque no sale bien a la primera y tienes que ir revisando donde falla el programa y porqué. En cada problema los algoritmos se pueden expresar en distintos lenguajes de programación y ejecutarse en ordenadores muy distintos, pero aún así, el algoritmo siempre será el mismo. En programación, es más importante el desarrollo del algoritmo que el lenguaje de programación donde se escriba, porque estos son tan solo un medio donde desarrollar el algoritmo para que lo entienda la máquina.
Los algoritmos tienen las siguientes características:
  1. Precisión: Un algoritmo tiene que ser muy preciso, indicando los pasos a dar y el orden de su realización.
  2. Definido:El algoritmo tiene que dar siempre el mismo resultado, si se hace dos veces, las dos veces tiene que salir el mismo resultado.(Ejemplo: Si haces un algoritmo que sume dos números, y lo usas para sumar 2 + 3 siempre tiene que dar 5. Es algo muy básico el ejemplo pero es para que lo entendáis).
  3. Finito:Un algoritmo tiene que ser finito, es decir, tiene que tener un principio y un final. Cuando se sigue un algoritmo no puede ser que en algún momento entremos en un paso que se repita(bucle) y nunca termine.
Un algoritmo debe constar de tres partes: Entrada, proceso y salida.
Ejemplo:
Algoritmo para elaborar una tortilla:
Entrada: Aceite, 2 huevos, sal, sarten, tenedor, bol.
Proceso: Se rompen los huevos en el bol, se baten con el tenedor, se añade un poco de sal, se echan a la sarten, estando esta previamente caliente, se forma la tortilla.
Salida: La tortilla terminada.
Esto serían las fases del algoritmo. El algoritmo en sí sería este:
  1. Inicio
  2. Ponemos a calentar la sarten en una vitrocerámica
  3. Añadimos un chorrito de aceite a la sarten
  4. Rompemos los dos huevos y los echamos en el bol
  5. Batimos los huevos con el tenedor
  6. Añadimos una pizca de sal
  7. Comprobamos que la sarten esté caliente
  8. Si está caliente echamos los huevos batidos en la sarten y vamos al paso 10
  9. Si no, volvemos al paso 7
  10. Comprobar que la tortilla cuaje
  11. Si cuaja ir al paso 13 
  12. Si no ir al paso 10
  13. Sacarla de la sarten y ponerla en un plato
  14. Comerla
  15. Fin
Esto sería a grandes rasgos un algoritmo para hacer una tortilla francesa. ¿Os pensabais que los algoritmos solo servían para hacer programas? Pues ya veis que no, jeje.

No hay comentarios:

Publicar un comentario