martes, 4 de febrero de 2014

Herramientas de Programación (1)

Una vez que ya sabemos cómo se transforma un programa escrito en código fuente a lenguaje máquina por medio del compilador e interprete es hora de avanzar en el campo de la resolución de problemas.
Como bien dije en un artículo anterior, un programador es una persona que resuelve problemas mediante un computador. Para ello debe seguir un proceso que consta de tres fases:
- Análisis del problema
- Diseño del algoritmo
- Desarrollar el algoritmo en la computadora.

En este artículo vamos a ver como llevar a cabo esas tres fases y que herramientas y programas podemos usar para llevarlas a cabo.

ANÁLISIS DEL PROBLEMA

Analizar el problema tiene como propósito ayudar al programador a desarrollar una compresión total de la naturaleza del problema. Esta parte es muy importante porque nos dice los pasos a seguir para construir el algoritmo. Es decir, para elaborar un algoritmo que solucione el problema, debemos conocer muy bien éste, de lo contrario podemos pensar un algoritmo erróneo, que no resuelva dicho problema.
Para realizar una buena definición del problema, necesitamos conocer las entradas y salidas de datos, es decir, que datos tenemos de entrada y que datos vamos a dar como resultado de su conclusión. Por tanto, necesitamos especificar con todo lujo de detalles los datos de entrada de los que disponemos y que datos de salida dará el algoritmo. Esto junto con una buena definición del problema dará como resultado un análisis eficaz.
Lo primero que debemos hacer para analizar el problema es una lectura detalla de éste. Después debemos contestar dos preguntas:
     - ¿Qué información debe facilitar la resolución del problema?
     - ¿Qué datos necesitamos para resolver el problema?
La respuesta a la primera pregunta nos proporcionará los datos de salida del algoritmo, mientras que la respuesta a la segunda nos dará los datos de entrada.
Como ejemplo veamos el siguiente problema:
Se desea calcular la hipotenusa de un triángulo rectángulo cuyos catetos miden 5 y 8 cms respectivamente.
De la lectura del problema sacamos que los datos de entrada son el valor de los dos catetos: 5 y 8 y el dato de salida tiene que ser la hipotenusa del triángulo.

DISEÑO DEL ALGORITMO

Para diseñar el algoritmo debemos escribir una serie de pasos que utilizando los datos de entrada nos proporcionen los datos de salida adecuados.
Cuando el problema es muy complejo, utilizaremos la técnica del divide y vencerás, que consiste en descomponer el problema en subproblemas más simples y de una resolución menos compleja. Si después de dividir el problema en varios más pequeños siguen siendo complejos, volvemos aplicar la técnica en los subproblemas obteniendo a su vez otros más pequeños, hasta su total descomposición en problemas básicos de fácil solución. Esto se denomina diseño descendente.
Cuando diseñamos el algoritmo, la primera vez suele salir un algoritmo de unos pocos pasos (no más de doce normalmente). A partir de ahí, hay que ser más específicos y dividir cada paso en otros más elementales hasta que un paso no pueda descomponerse más. Esto se llama Refinamiento del algoritmo. Si el problema es muy complejo, normalmente se necesitan varios refinamientos hasta que tenemos un algoritmo claro, preciso y completo. 
Si seguimos con el ejemplo anteriormente citado podríamos sacar lo siguiente:
Algoritmo Hipotenusa de un triángulo
1. Lectura de los valores de los catetos
2. Aplicamos la formula del teorema de pitágoras: h2 = a2 + b2
3. Mostramos el resultado de la hipotenusa.

Este sería un primer algoritmo que tendremos que seguir descomponiendo.
Para refinarlo dividimos estos pasos en otros más sencillos de la siguiente manera:
  
SubproblemaRefinamiento
Leer catetosleer a, b
Calcular hipotenusa (mediante T. de pitágoras)h2 = a2+b2
h2 = 52+82
h2 = 25+64
h2 = 89
h = √89
h = 9,43
Mostrar resultadosEscribir valor de h

Esta forma de diseñar el algoritmo tiene muchas ventajas, de las cuales las más importantes son:
 -El problema es más fácil de comprender
- Modificar los subproblemas es más facil
- Comprobar el resultado es sencillo, basta con cambiar los valores por otros y comprobar que funciona.
Una vez que tenemos desarrollado el algoritmo, tenemos que representar el algoritmo con una herramienta de programación adecuada.
Tenemos principalmente tres herramientas de representación de algoritmos:
- Diagramas de flujos de datos
- Diagrama N-S (Nassi-Shneiderman)
-Pseudocódigo
Como un algoritmo es  un conjunto de pasos o reglas que resuelven un problema hay que ser muy meticulosos a la hora de crearlo. En el caso de que haya cálculos elementales los pasos tienen que tener las siguientes características:
     -Deben estar seguidas de una secuencia definida de pasos hasta que se consiga un resultado coherente.
     -Solo puede ejecutarse una operación a la vez.
En el próximo artículo mostraré cómo se utilizan las distintas herramientas y veremos que programas podemos utilizar para emplearlas. 

No hay comentarios:

Publicar un comentario