martes, 19 de julio de 2011

Metodología de programación

Metodología de programación


3.   METODOLOGIA DE PROGRAMACION UN-PROGRAMA
El desarrollo de un programa que resuelva un problema dado es una tarea compleja, ya que es necesario tener en cuenta de manera simultánea muchos elementos. Por lo tanto, es indispensable usar una metodología de programación.
Una metodología de programación es un conjunto o sistema de métodos, principios y reglas que permiten enfrentar de manera sistemática el desarrollo de un programa que resuelve un problema algorítmico. Estas metodologías generalmente se estructuran como una secuencia de pasos que parten de la definición del problema y culminan con un programa que lo resuelve.


A continuación se presenta de manera general los pasos de una metodología: 
Descripción: http://www.virtual.unal.edu.co/cursos/ingenieria/2001839/imagenes/bola2.gifEl Diálogo
Con la cual se busca comprender totalmente el problema a resolver.

Descripción: http://www.virtual.unal.edu.co/cursos/ingenieria/2001839/imagenes/bola2.gifLa Especificación
Con la cual se establece de manera precisa las entradas, salidas y  las condiciones que deben cumplir.

Descripción: http://www.virtual.unal.edu.co/cursos/ingenieria/2001839/imagenes/bola2.gifDiseño
En esta etapa se construye un algoritmo que cumpla con la especificación.

Descripción: http://www.virtual.unal.edu.co/cursos/ingenieria/2001839/imagenes/bola2.gifCodificación
Se traduce el algoritmo a un lenguaje de programación.

Descripción: http://www.virtual.unal.edu.co/cursos/ingenieria/2001839/imagenes/bola2.gifPrueba y Verificación
Se realizan pruebas del programa implementado para determinar su validez en la resolución del problema.


3.1   DIALOGO
En el primer paso en el proceso de solución a un problema se debe determinar de manera clara y concisa la siguiente información:
1.        Los objetos conocidos, es decir, aquellos objetos de los cuales poseemos información total o parcial útil en la búsqueda de los objetos desconocidos.
2.        Las condiciones, aquellas relaciones establecidas entre los objetos conocidos y los desconocidos. Para esto se deben encontrar entre otras, la dependencia entre los valores de los objetos desconocidos de los valores de los objetos conocidos y que restricciones le impone el planteamiento del problema a dichos objetos.
3.        Los valores posibles que pueden tomar los objetos desconocidos.
Ejemplo. Sean los puntos P=(a,b) y Q=(c,d) que definen una recta, encontrar un segmento de recta perpendicular a la anterior que pase por el punto medio de los puntos dados.
OBJETOS DESCONOCIDOS
Un segmento de recta.

OBJETOS CONOCIDOS
Los puntos P y Q.

CONDICIONES
El segmento de recta debe pasar por el punto medio entre P y Q, y debe ser perpendicular a la recta trazada entre P y Q.

3.4   CODIFICACIÓN
Cuando ya se ha diseñado completamente el algoritmo y se tiene escrito en algún esquema de representación (pseudo-código o diagrama de flujo), el siguiente paso es codificarlo en el lenguaje de programación definido para tal fin.
En este momento es cuando el programador interactua con el computador mediante la herramienta de software que disponga para codificar en el lenguaje seleccionado.
EJEMPLO. Tómese como base el pseudo-código desarrollado en la sección anterior, el programa en C++ para este pseudo-código sería:

 #include <iostream.h>
int  pertenece( int A[100], int n, int e)

   bool bandera;
    int i;
/* el codigo siguiente prueba si el elemento esta en el conjunto */
  i = 0
   while(> i<n && A[i] != e )
{
   i = i+1; 
 };

  if( i == n )
{
   bandera = falso;
   }
  else
  {
   bandera = verdadero;  
};

 return bandera;
};

void leer_conjunto( intA[100], int & n, char c )
{
int 
i;
int elemento;
char continuar;
/* el codigo siguiente lee el conjunto */ 
n = 0;
  cout << “Desea ingresar elementos al conjunto”;
  cout << c << “ (S/N)”;
  cin >> continuar;
  while( continuar == ‘S’ || continuar == ‘s’ )
{
  cout << “Ingrese el elemento al conjunto” << A << “ :”;
  cin >> elemento;

/* el codigo siguiente prueba si el elemento esta en el conjunto y de no ser así lo adiciona */
  if( !pertenece( A, n, elemento ) )
{
   A[n] = elemento;
   n = n+1;
  }
 else
 {
  cout << “Error: el elemento ya esta en el conjunto”;
 };
 cout << “Desea ingresar mas elementos al conjunto (S/N)” ;
 cin>> continuar;
 };
};
void main()

 int n;
 int m;
 int elemento;
 int A[100];
 int B[100];
/* el codigo siguiente lee el conjunto A */
 leer_conjunto( A, n, ‘A’ );

/* el codigo siguiente lee el conjunto B */
 leer_conjunto( B, m, ‘B’ )

/* el codigo siguiente determina si el elemento esta en alguno de los dos conjuntos */
 if( pertenece(A, n, elemento) || pertenece(B, m, elemento) )
{
 cout << “El dato dado esta en alguno de los dos conjuntos”;
 }
 else
 {
 cout<< “El dato dado esta en ninguno de los conjuntos”;
 };
};

3.5   PRUEBAS DE ESCRITORIO

La prueba de escritorio es una herramienta útil para entender que hace un determinado algoritmo, o para verificar que un algoritmo cumple con la especificación sin necesidad de ejecutarlo.

Básicamente, una prueba de escritorio es una ejecución ‘a mano’ del algoritmo, por lo tanto se debe llevar registro de los valores que va tomando cada una de las variables involucradas en el mismo.

A continuación se muestra un ejemplo de prueba de escritorio del siguiente algoritmo:
suma :entero
entrada :entero
menor :entero

leer entrada
menor = entrada
suma = 0
mientras (entrada != 0) haga 
si (entrada < menor) entonces 
menor =entrada
fin_si 
suma = suma + entrada
leer entrada
fin_mientras 
escribir “valor Menor:
escribir menor
escribir “Suma:
escribir suma

tr>
INSTRUCCIÓN
entrada
menor
suma
Pantalla
leer entrada
10



menor = entrada

10


suma :=0


0

suma :=suma + entrada


10

leer entrada
7



menor = entrada

7


suma :=suma + entrada


17

leer entrada
9



suma :=suma + entrada


26

leer entrada
0



Escribir valor menor:



Valor Menor
Escribir menor



7
Escribir Suma:



Suma:
Escribir suma



26
 

Fases para la creación de un programa

Fases para la creación de un programa



Se pueden utilizar muchos lenguajes para programar una computadora. El más básico es el lenguaje de maquina, una colección de instrucciones muy detallada que controla la circuiteria interna de la maquina. Este es el dialecto natural de la maquina. Muy pocos programas se escriben actualmente en lenguaje de maquina por dos razones importantes: primero, porque el lenguaje de maquina es muy incomodo para trabajar y segundo por que la mayoría de las maquinas se pide programar en diversos tipos de lenguajes, que son lenguajes de alto nivel, cuyas instrucciones son más compatibles con los lenguajes y la forma de pensar humanos como lo es el lenguaje c que además es de propósito general.
Debido a que los programas diseñados en este lenguaje se pueden ejecutar en cualquier maquina , casi sin modificaciones. Por tanto el uso del lenguaje de alto nivel ofrece tres ventajas importantes, sencillez, uniformidad y portabilidad.
1.1. Lenguaje de programación: Sistema de símbolos y reglas que permite la construcción de programas con los que la computadora puede operar así como resolver problemas de manera eficaz.
Estos contienen un conjunto de instrucciones que nos permiten realizar operaciones de entrada / salida, calculo, manipulación de textos, lógica / comparación y almacenamiento / recuperación.
Los lenguajes de programación se clasifican en:
  • Lenguaje Máquina: Son aquellos cuyas instrucciones son directamente entendibles por la computadora y no necesitan traducción posterior para que la CPU pueda comprender y ejecutar el programa. Las instrucciones en lenguaje maquina se expresan en términos de la unidad de memoria más pequeña el bit (dígito binario 0 ó 1).
  • Lenguaje de Bajo Nivel (Ensamblador): En este lenguaje las instrucciones se escriben en códigos alfabéticos conocidos como mnemotécnicos para las operaciones y direcciones simbólicas.
  • Lenguaje de Alto Nivel: Los lenguajes de programación de alto nivel (BASIC, pascal, cobol, fortran, etc.) son aquellos en los que las instrucciones o sentencias a la computadora son escritas con palabras similares a los lenguajes humanos (en general en ingles), lo que facilita la escritura y comprensión del programa.
1.2. Algoritmo. La palabra algoritmo se deriva de la traducción al latín de la palabra árabe alkhowarizmi, nombre de un matemático y astrónomo árabe que escribió un tratado sobre manipulación de números y ecuaciones en el siglo IX.
La solución a cualquier problema de cómputo involucra la ejecución de una serie de acciones en orden especifico. Un procedimiento para resolver un problema en términos de: a) Las acciones a ejecutarse y b) el orden en el cual estas acciones deben ejecutarse se llama algoritmo.
Un ejemplo de un algoritmo para llegar a la escuela
  1. Salir de la cama
  2. Quitarse la pijamas
  3. Darse un baño
  4. Vestirse
  5. Desayunar
    1.3 Programa.
    • Secuencia de instrucciones mediante las cuales se ejecutan diferentes acciones de acuerdo con los datos que se estén procesando.
    • Es un algoritmo desarrollado para ser utilizado por la computadora
    • Expresión de un algoritmo en un lenguaje preciso que puede llegar a entender una máquina de cómputo.
  6. Utilizar el transporte ( autobús, carro , bicicleta, etc)

2. Fases para la creación de un programa.

2.1 Definición del Problema
Esta fase está dada por el enunciado del problema, el cual requiere una definición clara y precisa. Es importante que se conozca lo que se desea que realice la computadora; mientras esto no se conozca del todo no tiene mucho caso continuar con la siguiente etapa.
2.2 Análisis del Problema
Una vez que se ha comprendido lo que se desea de la computadora, es necesario definir:
Los datos de entrada.
Cual es la información que se desea producir (salida)
Los métodos y fórmulas que se necesitan para procesar los datos.
Una recomendación muy practica es el que nos pongamos en el lugar de la computadora y analicemos que es lo que necesitamos que nos ordenen y en que secuencia para producir los resultados esperados.
2.3 Diseño del Algoritmo
Las características de un buen algoritmo son:
Debe tener un punto particular de inicio.
Debe ser definido, no debe permitir dobles interpretaciones.
Debe ser general, es decir, soportar la mayoría de las variantes que se puedan presentar en la definición del problema.
Debe ser finito en tamaño y tiempo de ejecución.
2.4 Codificación
La codificación es la operación de escribir la solución del problema (de acuerdo a la lógica del diagrama de flujo o pseudocódigo), en una serie de instrucciones detalladas, en un código reconocible por la computadora, la serie de instrucciones detalladas se le conoce como código fuente, el cual se escribe en un lenguaje de programación o lenguaje de alto nivel.
2.5 Prueba y Depuración
Los errores humanos dentro de la programación de computadoras son muchos y aumentan considerablemente con la complejidad del problema. El proceso de identificar y eliminar errores, para dar paso a una solución sin errores se le llama depuración.
La prueba consiste en la captura de datos hasta que el programa no presente errores (los más comunes son los sintácticos y lógicos).
2.6 Documentación
Es la guía o comunicación escrita es sus variadas formas, ya sea en enunciados, procedimientos, dibujos o diagramas.
A menudo un programa escrito por una persona, es usado por otra. Por ello la documentación sirve para ayudar a comprender o usar un programa o para facilitar futuras modificaciones (mantenimiento).
La documentación se divide en tres partes:
Documentación Interna
Documentación Externa
Manual del Usuario
  • Documentación Interna: Son los comentarios o mensaje que se añaden al código fuente para hacer mas claro el entendimiento de un proceso.
  • Documentación Externa: Se define en un documento escrito los siguientes puntos:
Descripción del Problema
Nombre del Autor
Algoritmo (diagrama de flujo o pseudocódigo)
Diccionario de Datos
Código Fuente (programa)
  • Manual del Usuario: Describe paso a paso la manera como funciona el programa, con el fin de que el usuario obtenga el resultado deseado.
2.7 Mantenimiento
Se lleva acabo después de terminado el programa, cuando se detecta que es necesario hacer algún cambio, ajuste o complementación al programa para que siga trabajando de manera correcta. Para poder realizar este trabajo se requiere que el programa este correctamente documentado.